[Python] Python for machine learning

Visarut Junsone
Lazy-Dev
Published in
3 min readMar 9, 2019

สำหรับใน 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 ซะ

รูปที่ 1 แสดงการ 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 ต่ไป เมื่อปริ้นออกมาก็จะเห็นเป็น แบบนี้

รูปที่ 2 แสดงผลลัพท์ของ array input_data

ตัวอย่างถัดมาคือการใช้ matplotlib เพื่อทำการ plot กราฟ อย่างง่ายจาก numpy array data ที่เราทำไป

import matplotlib.pyplot as plt
plt.plot(input_data)
รูปที่ 3 แสดงกราฟจาก 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 แสดง Dataframe

จากรูปที่ 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()

รูปที่ 5 แสดงกราฟจาก Dataframe

หรือทำการ 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)
รูปที่ 6 แสดงกราฟตัวอย่าง

ใน blog นี้ การเอา library ที่ใช้ใน python สำหรับการทำ machine learning อาจจะไม่ค่อยเห็นภาพสักเท่าไหร่ ต้องลองทำตัวอย่างจริงดู แต่ก่อนจะพาไปตัวอย่างจริงใน blog หน้าจะพามาพูดถึง เรื่องของ ประเภทของการ Learning กัน

วันนี้ก็จะงงๆ หน่อย สวัสดี

--

--

Visarut Junsone
Lazy-Dev

I’m Full-Stack Developer. ReactJS Golang C# Javascript C++ PHP and learning a lot more. Not lazy as it name. “Lazy-Dev”