Machine Learning with Python 101: เบื้องต้น

nattakit pinyorattanakit
3 min readJul 24, 2023

--

https://talkatalka.com/blog/what-is-machine-learning/

บทความนี้ผมจะอธิบายถึงการใช้งาน Machine Learning ในเบื้องต้น ถ้าใครที่เพิ่งเข้ามาอ่านแล้วอาจจะยังไม่รู้จัก Machine Learning ก็สามารถเข้าไปดูลิงค์บทความที่ผมเขียนไว้ได้ ที่ลิ้งค์นี้เลยครับ Machine Learning Vs Deep Learning คืออะไร

Machine Learning Algorithms นั้นมีอยู่สามประเภทหลักๆ ด้วยกัน
คือ supervised learning ,unsupervised learning and reinforcement learning แต่สำหรับวันนี้ เราจะมาลองสร้าง AI โดยใช้ Machine Learning ที่เป็นประเภท supervised learning โดยใช้ภาษา Python กัน

https://www.enjoyalgorithms.com

โดยเราจะใช้ไลบรารี Scikit-learn ที่เป็นโมดูลหนึ่งของภาษาโปรแกรม Python เป็นแพ็กเกจที่รวบรวม Library ในด้าน Machine Learning เอาไว้ ไลบรารี SKLearn นั้นก็จะประกอบไปด้วยโมเดลต่างๆ เช่น

  • Linear Regression (regression problems)
  • Logistic Regression (binary classification)
  • Decision Trees (classification and regression)
  • Random Forest (ensemble learning for classification and regression) และอื่น ๆ …

Linear Regression
ใน Machine Learning แบบ Supervised Learning มีหลายอัลกอริทึมที่ใช้ในการสร้างโมเดลที่สามารถทำนายผลลัพธ์จากข้อมูลที่มีคำตอบ (labeled data) ได้

https://www.analyticsvidhya.com

ครั้งนี้เราจะลองใช้อัลกอริทึม Linear Regression เพื่อที่จะให้มันทำนายผลลัพธ์ของข้อมูลออกมา โดย Linear Regression จะเป็นความสัมพันธ์ของตัวแปรหรือสิ่งที่เรากำลังสนใจ ซึ่งจะถูกใช้กับการคำนวณค่าที่เป็นตัวเลข เพื่อหาความสัมพันธ์หรือทำนายข้อมูลต่าง ๆ

are you ready?

step 1 : นำเข้าข้อมูล
เริ่มต้นโดยการนำเข้าข้อมูลจากแหล่งต่างๆ เช่น CSV, Excel, หรือ Database ซึ่งในที่นี้เราจะสร้างข้อมูลจำลองเพื่อความง่าย
( สามารถเขียน code ตามนี้ผ่านทาง Google Colab ได้เลย )

import pandas as pd
# สร้างข้อมูลจำลอง
data = {
'Age': [25, 30, 35, 40, 45, 50, 55, 60],
'Income': [30000, 40000, 55000, 65000, 70000, 80000, 90000, 95000]
}
# สร้าง DataFrame
df = pd.DataFrame(data)
print(df)

Age  Income
0 25 30000
1 30 40000
2 35 55000
3 40 65000
4 45 70000
5 50 80000
6 55 90000
7 60 95000

จากข้อมูลเราจะเห็นว่า
Age = 25 , Income = 30,000
Age = 30, Income = 40,000 ตามลำดับ
….

step 2: แยกข้อมูลเป็น Features (X) และ Target (y)

  • Features (X): เป็นคุณสมบัติที่เราจะนำมาใช้ในการทำนาย ในที่นี้คือ ‘Age’
  • Target (y): เป็นผลลัพธ์ที่เราต้องการทำนาย ในที่นี้คือ ‘Income’
X = df[['Age']]
y = df['Income']

step 3: แบ่งชุดข้อมูล
แบ่งชุดข้อมูลเป็นชุดฝึกฝนและชุดทดสอบ (Training set และ Test set) การแบ่งชุดข้อมูลเป็นชุดฝึกฝนและชุดทดสอบเป็นส่วนสำคัญใน Machine Learning เพื่อให้เราสามารถทดสอบความแม่นยำของโมเดลที่สร้างขึ้นกับข้อมูลที่ไม่เคยเห็นมาก่อน

from sklearn.model_selection import train_test_split
# แบ่งชุดข้อมูลเป็น 80% สำหรับฝึกฝน และ 20% สำหรับทดสอบ
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

step 4: สร้างและฝึกโมเดล Machine Learning
ในตัวอย่างนี้เราจะใช้ Linear Regression เป็นโมเดลที่ง่ายและเหมาะสำหรับงานนี้

from sklearn.linear_model import LinearRegression

# สร้างโมเดล Linear Regression
model = LinearRegression()
# ฝึกโมเดลกับชุดข้อมูลที่มี
model.fit(X_train, y_train)

step 5: ทำนายผลลัพธ์ด้วยโมเดลที่ฝึกแล้ว
เมื่อเรามีโมเดลที่ถูกฝึกแล้ว สามารถนำมาใช้ทำนายผลลัพธ์ได้ง่ายๆ

# ทำนายผลลัพธ์จากชุดทดสอบ
y_pred = model.predict(X_test)
# แสดงผลลัพธ์
result_df = pd.DataFrame({'Actual': y_test, 'Predicted': y_pred})
print(result_df)
Actual  Predicted
1 40000 43100.0
5 80000 79700.0

จะเห็นได้ว่าผลรับที่ได้จะมีความคลาดเคลื่อนอยู่บ้าง เมื่อเทียบจากค่า Actual และ Predicted

step 6: ประเมินความแม่นยำของโมเดล
ในขั้นตอนนี้ เราจะประเมินความแม่นยำของโมเดลที่ได้ตามค่า Mean Squared Error (MSE) และ R-squared (R²)

ค่า Mean Squared Error (MSE) และ R-squared (R²) เป็นสถิติที่ใช้ในการวัดความแม่นยำและความสามารถของโมเดลในการทำนายข้อมูลใน Machine Learning

MSE จะมีค่าใกล้เคียงกับ 0 แต่ไม่เป็น 0
คือค่าเฉลี่ยของความแตกต่างระหว่างค่าทำนายกับค่าจริง ยิ่งค่าน้อยยิ่งดี

R² ที่ใกล้เคียงกับ 1 ถือว่าดี และในกรณีที่ค่า R² เป็น เข้าใกล้ 0 แสดงถึงว่าโมเดลไม่มีประสิทธิภาพมากพอ

from sklearn.metrics import mean_squared_error, r2_score

# คำนวณค่า Mean Squared Error
mse = mean_squared_error(y_test, y_pred)
print(f"Mean Squared Error: {mse}")
# คำนวณค่า R-squared (R²)
r2 = r2_score(y_test, y_pred)
print(f"R-squared (R²): {r2}")
Mean Squared Error: 4850000.0
R-squared (R²): 0.987875

อย่างนี้เราได้ใช้ข้อมูลที่มีอายุ (Age) เพื่อทำนายรายได้ (Income) ด้วยโมเดล Linear Regression และประเมินความแม่นยำของโมเดลที่ได้เรียบร้อยแล้ว

step 7 : ทดลองใส่ข้อมูลจากผู้ใช้เพื่อให้ AI ทำนายค่าออกมา

# สร้างฟังก์ชันสำหรับทำนายรายได้ (Income)
def predict_income(age):
income_prediction = model.predict([[age]])
return income_prediction[0]

# รับอายุจากผู้ใช้
age_input = int(input("อายุ: ")) #สมมุติผู้ใช้กรอกอายุ 55

# ทำนายรายได้
predicted_income = predict_income(age_input)

# แสดงผลลัพธ์ทำนายรายได้
print("ทำนายรายได้ของคนที่อายุ", age_input, "คือ:", predicted_income)
อายุ: 55
ทำนายรายได้ของคนที่อายุ 55 คือ: 88850.0

เรียบร้อย !
นี่เป็นเพียงวิธีการทำ Machine Learning และการใช้ Python ในการสร้างโมเดล AI ในรูปแบบที่เข้าใจง่าย และนำเสนอขั้นตอนที่ใช้ในการทำนายค่า Income ตามข้อมูลที่มี (labeled) โดยความเหมาะสมในการใช้งานของโมเดลนั้นขึ้นอยู่กับการปรับแต่งของข้อมูลและตัวแปรตามตามความต้องการของเรา และปริมาณข้อมูลที่มีให้ใช้ในการฝึกและทดสอบโมเดล ซึ่งต้องพิจารณาอย่างละเอียดเพื่อให้ได้ผลลัพธ์ที่ดีที่สุด และนำไปประยุกต์ใช้ในงานจริง

นี้เป็นเพียงเพื่อนำเสนอเบื้องต้นเท่านั้น แต่ควรทำความเข้าใจว่า Machine Learning เป็นเครื่องมือที่หลากหลายและสามารถนำไปประยุกต์ใช้กับงานและอุตสาหกรรมต่างๆ ได้อีกมากมาย

see you again ^^

--

--

nattakit pinyorattanakit

AI Engineering and data science ———————————————————————— https://misternattakit.com