สมัครเรียนโทร. 085-350-7540 , 084-88-00-255 , ntprintf@gmail.com

Tutorial Python Machine Learning

LM17PYTHON MACHINE LEARNING LM18PYTHON MACHINE LEARNING MEAN MEDIAN MODE LM19PYTHON MACHINE LEARNING STANDARD DEVIATION LM20PYTHON MACHINE LEARNING PERCENTILES LM21PYTHON MACHINE LEARNING DATA DISTRIBUTION LM22PYTHON MACHINE LEARNING NORMAL DATA DISTRIBUTION LM23PYTHON MACHINE LEARNING SCATTER PLOT LM24PYTHON MACHINE LEARNING LINEAR REGRESSION LM25PYTHON MACHINE LEARNING MULTIPLE REGRESSION LM25PYTHON MACHINE LEARNING POLYNOMIAL REGRESSION LM26PYTHON MACHINE LEARNING SCALE LM27PYTHON MACHINE LEARNING TRAIN TEST LM28PYTHON MACHINE LEARNING DECISION TREE

Machine Learning - Linear Regression

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

ในการเรียนรู้ของเครื่องการทำนายอนาคตเป็นสิ่งสำคัญมาก
มันทำงานยังไง?
Python มีวิธีการหาความสัมพันธ์ระหว่าง data-points และวาด line ของการถดถอยเชิงเส้น เราจะแสดงวิธีใช้วิธีการเหล่านี้แทนการใช้สูตรทางคณิตศาสตร์  ในตัวอย่างด้านล่างแกน x แทนอายุและแกน y แทนความเร็ว เราลงอายุและความเร็ว 13 คันแล้วเมื่อมันผ่านด่านเก็บค่าผ่านทาง ให้เราดูว่าข้อมูลที่เรารวบรวมสามารถนำมาใช้ในการถดถอยเชิงเส้น
ตัวอย่าง
เริ่มต้นด้วยการวาดโครงเรื่องกระจาย

import matplotlib.pyplot as plt
x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]
plt.scatter(x, y)
plt.show()

ผลลัพธ์

ตัวอย่าง
import  scipy และวาดเส้นของการถดถอยเชิงเส้น

import matplotlib.pyplot as plt
from scipy import stats
x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]
slope, intercept, r, p, std_err = stats.linregress(x, y)
def myfunc(x):
  return slope * x + intercept
mymodel = list(map(myfunc, x))
plt.scatter(x, y)
plt.plot(x, mymodel)
plt.show()

ผลลัพธ์

ตัวอย่างการอธิบาย
import โมดูลที่นักเรียนต้องการ

import matplotlib.pyplot as plt
from scipy import stats

สร้างอาร์เรย์ที่แสดงค่าของแกน x และ y

x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]

ดำเนินการเมธอดที่ส่งคืนค่าคีย์ที่สำคัญของการถดถอยเชิงเส้น

slope, intercept, r, p, std_err = stats.linregress(x, y)

สร้างฟังก์ชั่นที่ใช้ค่าความชันและค่าดักจับเพื่อคืนค่าใหม่ ค่าใหม่นี้แสดงถึงตำแหน่งที่อยู่บนแกน y ค่า x ที่สอดคล้องกันจะถูกวางไว้

def myfunc(x):
  return slope * x + intercept

เรียกใช้แต่ละค่าของอาร์เรย์ 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
x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]
slope, intercept, r, p, std_err = stats.linregress(x, y)
print(r)

ผลลัพธ์

-0.758591524376155

ทำนายค่าในอนาคต
ตอนนี้เราสามารถใช้ข้อมูลที่เรารวบรวมได้เพื่อทำนายค่าในอนาคต
ตัวอย่าง: ให้เราพยายามทำนายความเร็วของรถยนต์อายุ 10 ปี
ในการทำเช่นนั้นเราต้องการฟังก์ชัน myfunc() เดียวกันจากตัวอย่างด้านบน

def myfunc(x):
  return slope * x + intercept

ยกตัวอย่างความเร็วที่ 85.6 ซึ่งเราสามารถอ่านได้จากแผนภาพ
ตัวอย่าง

from scipy import stats
x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]
slope, intercept, r, p, std_err = stats.linregress(x, y)
def myfunc(x):
  return slope * x + intercept
speed = myfunc(10)
print(speed)

ผลลัพธ์

C:\Users\My Name>python demo_ml_r_squared2.py
85.59308314937454

ให้เราสร้างตัวอย่างที่การถดถอยเชิงเส้นเป็นเพียงวิธีหนึ่งแต่ไม่ใช่วิธีที่ดีที่สุดในการทำนายค่าในอนาคต
ตัวอย่าง
ค่าเหล่านี้สำหรับแกน x และแกน y ควรส่งผลที่ไม่ดีมากสำหรับการถดถอยเชิงเส้น

import matplotlib.pyplot as plt
from scipy import stats
x = [89,43,36,36,95,10,66,34,38,20,26,29,48,64,6,5,36,66,72,40]
y = [21,46,3,35,67,95,53,72,58,10,26,34,90,33,38,20,56,2,47,15]
slope, intercept, r, p, std_err = stats.linregress(x, y)
def myfunc(x):
  return slope * x + intercept
mymodel = list(map(myfunc, x))
plt.scatter(x, y)
plt.plot(x, mymodel)
plt.show()

ผลลัพธ์

และค่า r-squared?
ตัวอย่าง
นักเรียนควรได้ค่า r-squared ต่ำมาก

import numpy
from scipy import stats
x = [89,43,36,36,95,10,66,34,38,20,26,29,48,64,6,5,36,66,72,40]
y = [21,46,3,35,67,95,53,72,58,10,26,34,90,33,38,20,56,2,47,15]
slope, intercept, r, p, std_err = stats.linregress(x, y)
print(r)

ผลลัพธ์

0.01331814154297491

ผลลัพธ์: 0.013 แสดงถึงความสัมพันธ์ที่ไม่ดีมากและบอกเราว่าชุดข้อมูลนี้ไม่เหมาะสำหรับการถดถอยเชิงเส้น
แปลจากhttps://www.w3schools.com/python/python_ml_linear_regression.asp



บทความนี้อาจจะมีที่ผิด กรุณาตรวจสอบก่อนใช้

หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor

ไม่อยากอ่าน Tutorial อยากมาเรียนเลยทำอย่างไร?

สมัครเรียน ONLINE ได้ทันทีที่ https://elearn.expert-programming-tutor.com

หรือติดต่อ

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM

แผนที่ ที่ตั้งของอาคารของเรา

C Article


C++ Article


Java Article


C#.NET Article


VB.NET Article


Python Article


Golang Article


JavaScript Article


Perl Article


Lua Article


Rust Article


Article


Python


Python Numpy


Python Machine Learning



แผนผังการเรียนเขียนโปรแกรม

Link อื่นๆ

Allow sites to save and read cookie data.
Cookies are small pieces of data created by sites you visit. They make your online experience easier by saving browsing information. We use cookies to improve your experience on our website. By browsing this website, you agree to our use of cookies.

Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com

ติดต่อเราได้ที่

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
แผนที่ ที่ตั้งของอาคารของเรา