[Python] Python for machine learning
สำหรับใน blog นี้เราจะมาเริ่มเรียนรู้อะไรใหม่ๆ กัน จริงๆ ก็ไม่ใหม่หรอกแต่เป็นสิ่งที่น่าเรียนรู้เอาไว้สำหรับอนาคตอันใกล้ของเทคโนโลยีที่จะมุ่งไปสู่ Machine learning และอื่นๆ อีกมากมาย พื้นฐานของมันก็คือ Python สำหรับ Machine learning นั้นเอง (เอาจริงๆ ไม่ได้มีแค่ภาษาเดียวนะที่ใช้เขียน machine learning ได้แค่อันนี้เป็นที่นิยม)
เอาเริ่ม !
ในการใช้ Python ทำ machine learning เนี่ย เราต้องทำการเข้าไปรู้จักกับ libraries ที่เขาใช้กันอย่างแพร่หลายซะก่อนเพราะมันช่วยทำให้เราเขียนง่ายขึ้น เพราะเราอยู่ใน ยุคสมัยที่สามารถ Copy paste คนอื่นมาใช้งานได้ แต่เราต้องเข้าใจการทำงานและ concept มันก่อนนะ
Libraries
numpy — ใช้สำหรับการทำ array object หลายมิติ
pandas — เป็น library สำหรับการวิเคราะห์ข้อมูลที่มี dataframes
matplotlib — เป็น library เพื่อการ plot กราฟ 2 มิติ
scikit-learn — เป็นอัลกอริทึ่มสำหรับเอาไว้ทำวิเคราะห์ข้อมูล และ การทำเหมืองข้อมูล
seaborn — เป็น library สำหรับ data visualization (พูดเป็นภาษาคนคือ เอาไว้ plot กราฟข้อมูล)
แล้วจะเขียน Python ที่ไหนละ
(Up to you ครับ ฮ่าๆๆ) เลือกเอาครับว่าจะใช้วิธีไป Download และ install Python ตรงๆ จาก ที่นี้ หรือ จะลง Anaconda เพื่อใช้ Jupyter Notebook หรือจะทำบน CodeLab ของ google ก็ได้ เยอะแยะไปหมดเลย
Check version
เมื่อเลือกได้แล้วว่าจะใช้อะไร (ผมใช้ Anaconda เพื่อใช้ Jupyter Notebook) ก็สร้างไฟล์ Python ขึ้นมาซะ แล้วเขียน import library ต่างๆ ที่เราจะเรียนรู้มา Check version ซะ
แค่นี้เอง เห็นไหม Much wow
Example
สำหรับตัวอย่างการใช้งานเราก็จะพูดเรียงกันไป เริ่มจาก numpy
import numpy as np
input_data = np.array([[3, -1.5, 3, -6.4], [0, 3, -1.3, 4.1], [1, 2.3, -2.9, -4.3]])
print (input_data)
จากที่เห็นเราทำการสร้างตัวแปร input_data เป็น array ด้วย numpy มีประโชยน์มากเมื่อเราต้องการ การดำเนินการทางคณิตศาสตร์ เช่น ใช้ array ของ numpy ดังกล่าวมองเป็น matrix ได้ เอาไว้ใช้สำหรับการสร้าง Input data เพื่อนำไปประมวลทำ Model ต่ไป เมื่อปริ้นออกมาก็จะเห็นเป็น แบบนี้
ตัวอย่างถัดมาคือการใช้ matplotlib เพื่อทำการ plot กราฟ อย่างง่ายจาก numpy array data ที่เราทำไป
import matplotlib.pyplot as plt
plt.plot(input_data)
ภาพด้านบนคือผลลัพท์ ของการ plot กราฟ ด้วย input_data
ตัวอย่างถัดมาคือการทำ Dataframe เพื่อเก็บข้อมูลให้ดูเป็นตาราง ง่ายต่อการวิเคราะห์ และ การเอา data ไปทำการประมวลผลอื่นต่อไป
index_array = np.array([["a"],["b"],["c"]])
df = pd.DataFrame(data=input_data[0:,0:], index=index_array[0:,0], columns=input_data[0,0:])
print (df)
จากรูปที่ 4 จะเห็น Data ที่ถูกจัดอยู่ในรูปแบบของ dataframe และจากที่ได้กล่าวไปว่าสามารถนำ dataframe ไปทำอย่างอื่นต่อได้อีก เช่นการนำมา plot กราฟ ด้วยการใช้ seaborn ดังนี้
df = pd.DataFrame([[ 1.82716998, -1.75449225], [ 0.09258069, 0.16245259], [ 1.09240926, 0.08617436]], columns=["x", "y"])
df["val"] = pd.Series([1, -1, 1]).apply(lambda x: "red" if x==1 else "blue")
sns.scatterplot(df["x"], df["y"], c=df["val"]).plot()
ด้านบนคือโค้ดตัวอย่างการทำ dataframe และ นำมา plot ด้วย ฟังก์ชั้น plot()
หรือทำการ plot กราฟ dataset ตัวอย่าง เช่น ด้านล่าง
# Load an example dataset with long-form data
sns.set(style="darkgrid")
fmri = sns.load_dataset("fmri")
sns.lineplot(x="timepoint", y="signal", hue="region", style="event", data=fmri)
ใน blog นี้ การเอา library ที่ใช้ใน python สำหรับการทำ machine learning อาจจะไม่ค่อยเห็นภาพสักเท่าไหร่ ต้องลองทำตัวอย่างจริงดู แต่ก่อนจะพาไปตัวอย่างจริงใน blog หน้าจะพามาพูดถึง เรื่องของ ประเภทของการ Learning กัน
วันนี้ก็จะงงๆ หน่อย สวัสดี