เรียนเขียนโปรเเกรมง่ายๆกับ Expert Programming Tutor ในบท Macchine Learnning - Linear Regression
เนื้อหาในวันนี้เราจะเรียนรู้เกี่ยกับการถดถอยเชิงเส้นจะใช้เมื่อนักเรียนพยายามหาความสัมพันธ์ระหว่างตัวแปร ในการเรียนรู้ของเครื่องและในการสร้างแบบจำลองทางสถิติความสัมพันธ์นั้นจะใช้ในการทำนายผลลัพธ์ของเหตุการณ์ในอนาคต
การถดถอยเชิงเส้น
การถดถอยเชิงเส้นใช้ความสัมพันธ์ระหว่างจุดข้อมูลเพื่อวาดเส้นตรงผ่านจุดทั้งหมด
บรรทัดนี้สามารถใช้ในการทำนายค่าในอนาคต
ในการเรียนรู้ของเครื่องการทำนายอนาคตเป็นสิ่งสำคัญมาก
มันทำงานยังไง?
Python มีวิธีการหาความสัมพันธ์ระหว่าง data-points และวาด line ของการถดถอยเชิงเส้น เราจะแสดงวิธีใช้วิธีการเหล่านี้แทนการใช้สูตรทางคณิตศาสตร์ ในตัวอย่างด้านล่างแกน x แทนอายุและแกน y แทนความเร็ว เราลงอายุและความเร็ว 13 คันแล้วเมื่อมันผ่านด่านเก็บค่าผ่านทาง ให้เราดูว่าข้อมูลที่เรารวบรวมสามารถนำมาใช้ในการถดถอยเชิงเส้น
ตัวอย่าง
เริ่มต้นด้วยการวาดโครงเรื่องกระจาย
import matplotlib.pyplot as plt |
ผลลัพธ์
ตัวอย่าง
import scipy และวาดเส้นของการถดถอยเชิงเส้น
import matplotlib.pyplot as plt |
ผลลัพธ์
ตัวอย่างการอธิบาย
import โมดูลที่นักเรียนต้องการ
import matplotlib.pyplot as plt |
สร้างอาร์เรย์ที่แสดงค่าของแกน x และ y
x = [5,7,8,7,2,17,2,9,4,11,12,9,6] |
ดำเนินการเมธอดที่ส่งคืนค่าคีย์ที่สำคัญของการถดถอยเชิงเส้น
slope, intercept, r, p, std_err = stats.linregress(x, y) |
สร้างฟังก์ชั่นที่ใช้ค่าความชันและค่าดักจับเพื่อคืนค่าใหม่ ค่าใหม่นี้แสดงถึงตำแหน่งที่อยู่บนแกน y ค่า x ที่สอดคล้องกันจะถูกวางไว้
def myfunc(x): |
เรียกใช้แต่ละค่าของอาร์เรย์ x ผ่านฟังก์ชัน ซึ่งจะส่งผลให้อาร์เรย์ใหม่มีค่าใหม่สำหรับแกน y
mymodel = list(map(myfunc, x)) |
วาดโครงเรื่องกระจายดั้งเดิม
plt.scatter(x, y) |
วาดเส้นของการถดถอยเชิงเส้น
plt.plot(x, mymodel) |
แสดงไดอะแกรม
plt.show() |
R-Squared
สิ่งสำคัญคือต้องทราบว่าความสัมพันธ์ระหว่างค่าของแกน x และค่าของแกน y เป็นอย่างไรถ้าไม่มีความสัมพันธ์การถดถอยเชิงเส้นจะไม่สามารถใช้ในการทำนายอะไรได้
- ความสัมพันธ์ถูกวัดด้วยค่าที่เรียกว่า r-squared
- ค่า r-squared อยู่ในช่วงตั้งแต่ 0 ถึง 1 โดยที่ 0 หมายถึงไม่มีความสัมพันธ์และ 1 หมายถึงเกี่ยวข้อง 100%
- Python และโมดูล Scipy จะคำนวณค่านี้ให้นักเรียนสิ่งที่นักเรียนต้องทำคือป้อนมันด้วยค่า x และ y
ตัวอย่าง
ข้อมูลของเราเองมีความเหมาะสมในการถดถอยเชิงเส้นอย่างไร
from scipy import stats |
ผลลัพธ์
-0.758591524376155 |
ทำนายค่าในอนาคต
ตอนนี้เราสามารถใช้ข้อมูลที่เรารวบรวมได้เพื่อทำนายค่าในอนาคต
ตัวอย่าง: ให้เราพยายามทำนายความเร็วของรถยนต์อายุ 10 ปี
ในการทำเช่นนั้นเราต้องการฟังก์ชัน myfunc() เดียวกันจากตัวอย่างด้านบน
def myfunc(x): |
ยกตัวอย่างความเร็วที่ 85.6 ซึ่งเราสามารถอ่านได้จากแผนภาพ
ตัวอย่าง
from scipy import stats |
ผลลัพธ์
C:\Users\My Name>python demo_ml_r_squared2.py |
ให้เราสร้างตัวอย่างที่การถดถอยเชิงเส้นเป็นเพียงวิธีหนึ่งแต่ไม่ใช่วิธีที่ดีที่สุดในการทำนายค่าในอนาคต
ตัวอย่าง
ค่าเหล่านี้สำหรับแกน x และแกน y ควรส่งผลที่ไม่ดีมากสำหรับการถดถอยเชิงเส้น
import matplotlib.pyplot as plt |
ผลลัพธ์
และค่า r-squared?
ตัวอย่าง
นักเรียนควรได้ค่า r-squared ต่ำมาก
import numpy |
ผลลัพธ์
0.01331814154297491 |
ผลลัพธ์: 0.013 แสดงถึงความสัมพันธ์ที่ไม่ดีมากและบอกเราว่าชุดข้อมูลนี้ไม่เหมาะสำหรับการถดถอยเชิงเส้น
แปลจากhttps://www.w3schools.com/python/python_ml_linear_regression.asp
Tag ที่น่าสนใจ: machine_learning linear_regression python scipy matplotlib data_visualization data_analysis statistical_modeling prediction r-squared programming_tutorial machine_learning_algorithms python_libraries data_science
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM