เรียนเขียนโปรเเกรมง่ายๆกับ Expert Programming Tutor ในบท Macchine Learnning - Polynomial Regression
เนื้อหาในบทนี้เราจะเรียนรู้เรื่องการถดถอยพหุนาม หากจุดข้อมูลของนักเรียนชัดเจน จะไม่พอดีกับการถดถอยเชิงเส้น (เส้นตรงผ่านจุดข้อมูลทั้งหมด) ก็อาจเหมาะสำหรับการถดถอยพหุนาม การถดถอยพหุนามเช่นการถดถอยเชิงเส้นใช้ความสัมพันธ์ระหว่างตัวแปร x และ y เพื่อหาวิธีที่ดีที่สุดในการวาดเส้นผ่านจุดข้อมูล
มันทำงานยังไง?
Python มีวิธีการหาความสัมพันธ์ระหว่าง data-points และวาด line ของการถดถอยพหุ เราจะแสดงวิธีใช้วิธีการเหล่านี้แทนการใช้สูตรทางคณิตศาสตร์ ในตัวอย่างด้านล่างเราได้จดทะเบียนรถยนต์ 18 คันเนื่องจากพวกเขาผ่านด่านเก็บค่าผ่านทางจำนวนหนึ่ง เราได้ลงความเร็วของรถและเวลาของวัน (ชั่วโมง) ที่เกิดขึ้น
แกน x แสดงชั่วโมงของวันและแกน y แทนความเร็ว
ตัวอย่าง
เริ่มต้นด้วยการวาดโครงเรื่องกระจาย
import matplotlib.pyplot as plt |
ผลลัพธ์
ตัวอย่าง
import numpy และ matplotlib จากนั้นลากเส้นของ Polynomial Regression
import numpy |
ผลลัพธ์
ตัวอย่างอธิบาย
import โมดูลที่นักเรียนต้องการ
import numpy |
สร้างอาร์เรย์ที่แสดงค่าของแกน x และ y
x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22] |
NumPy มีวิธีการที่ให้เราสร้างแบบจำลองพหุนาม
mymodel = numpy.poly1d(numpy.polyfit(x, y, 3)) |
จากนั้นระบุว่าบรรทัดจะแสดงอย่างไรเราเริ่มที่ตำแหน่ง 1 และสิ้นสุดที่ตำแหน่ง 22
myline = numpy.linspace(1, 22, 100) |
วาดโครงเรื่องกระจายดั้งเดิม
plt.scatter(x, y) |
วาดเส้นของการถดถอยพหุนาม
plt.plot(myline, mymodel(myline)) |
แสดงไดอะแกรม
plt.show() |
R-Squared
สิ่งสำคัญคือต้องทราบว่าความสัมพันธ์ระหว่างค่าของแกน x และแกน y นั้นดีเพียงใดหากไม่มีความสัมพันธ์การถดถอยแบบพหุนามจึงไม่สามารถใช้ในการทำนายอะไรได้ ความสัมพันธ์ถูกวัดด้วยค่าที่เรียกว่า r-squared ค่า r-squared อยู่ในช่วงตั้งแต่ 0 ถึง 1 โดยที่ 0 หมายถึงไม่มีความสัมพันธ์และ 1 หมายถึงเกี่ยวข้อง 100% Python และโมดูล Sklearn จะคำนวณค่านี้ให้นักเรียนสิ่งที่นักเรียนต้องทำคือป้อนมันด้วยอาร์เรย์ x และ y
ตัวอย่าง
ข้อมูลขอเราเองมีความเหมาะสมในการถดถอยพหุนามอย่างไร
import numpy |
ผลลัพธ์
0.9432150416451027 |
ทำนายค่าในอนาคต
ตอนนี้เราสามารถใช้ข้อมูลที่เรารวบรวมได้เพื่อทำนายค่าในอนาคต
ตัวอย่าง: ให้เราพยายามทำนายความเร็วของรถยนต์ที่ผ่านด่านเก็บภาษีที่ประมาณ 17 พีเอ็ม ในการทำเช่นนั้นเราต้องการอาร์เรย์ mymodel เดียวกันจากตัวอย่างด้านบน
mymodel = numpy.poly1d(numpy.polyfit(x, y, 3)) |
ตัวอย่าง
ทำนายความเร็วของรถที่วิ่งผ่าน 17 PM
import numpy |
ผลลัพธ์
C:\Users\My Name>python demo_ml_polynomial_predict.py |
ตัวอย่างทำนายความเร็วเป็น 88.87 ซึ่งเราสามารถอ่านได้จากแผนภาพ
ให้เราสร้างตัวอย่างที่การถดถอยพหุนามจะเป็นเพียงวิธิธีหนึ่งแต่ไม่ใช่วิธีที่ดีที่สุดในการทำนายค่าในอนาคต
ตัวอย่าง
ค่าเหล่านี้สำหรับแกน x และแกน y ควรส่งผลที่ไม่ดีสำหรับการถดถอยพหุนาม
import numpy |
ผลลัพธ์
แปลจากhttps://www.w3schools.com/python/python_ml_polynomial_regression.asp
Tag ที่น่าสนใจ: machine_learning polynomial_regression python numpy matplotlib regression_analysis data_visualization programming_tutorial data_fitting scatter_plot model_evaluation r-squared prediction data_analysis sklearn
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM