Linear Regression ng Machine Learning
- Nakaraang Pahina Scatter Plot
- Susunod na Pahina Polinomikal na Pagbabalikbasa
Regression
Kapag tinatangka mo na matagpuan ang relasyon ng mga variable, ginamit ang termino na 'regression' (pagbalik).
Sa paggamit ng machine learning at statistical modeling, ang relasyon na ito ay ginamit upang hulaan ang resulta ng mga hinaharap na pangyayari.
Paghahati sa paghahati
Ang paghahati sa paghahati ay gumagamit ng relasyon ng puntos ng datos upang magpinta ng isang linya sa lahat ng puntos ng datos.
Ang linya na ito ay maaaring gamitin upang hulaan ang hinaharap na halaga.

Sa machine learning, ang paghuhula sa hinaharap ay napakahalaga.
Prinsipyo ng paggawa
Ang Python ay nagbibigay ng ilang mga paraan upang hanapin ang relasyon ng puntos ng datos at ipakita ang linya ng paghahati sa paghahati. Ibibigay namin sa iyo kung paano gamitin ang mga paraan na ito sa halip na sa pamamagitan ng mga formula ng matematika.
Sa mga sumusunod na halimbawa, ang x-axis ay nangangahulugan ng taong karanasan ng sasakyan, ang y-axis ay nangangahulugan ng bilis. Naiulat namin ang taong karanasan at bilis ng 13 sasakyan na nagpasa sa toll booth. Tulungan namin ninyo kung ang aking datos ay maaaring gamitin para sa paghahati sa paghahati:
Halimbawa
Una, ipakita ang larawan ng puntos:
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()
Ang resulta:

Halimbawa
Buwan ng pagkakabit ng scipy
at ipakita ang linya ng paghahati sa paghahati:
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()
Ang resulta:

Halimbawa ng paliwanag
Buwan ng pagkakabit ng kinakailangan na module:
import matplotlib.pyplot as plt from scipy import stats
Buwan ng pagkakakilanlan ng array ng halaga ng x at y sa axis:
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]
Ipagawa ng isang paraan, na ibibigay ng isang paraan na ibibigay ng ilang mahalagang key-value ng paghahati sa paghahati:
slope, intercept, r, p, std_err = stats.linregress(x, y)
Buwan ng paggamit ng slope
at intercept
Ang function ng halaga ay nagbibigay ng bagong halaga. Ang bagong halaga na ito ay nangangahulugan na ang katugmang halaga ay ilalagay sa y-axis sa katumbas ng katugmang halaga ng x:
def myfunc(x): return slope * x + intercept
Ihulog ang bawat halaga ng array ng x sa function. Ito ay magbibigay ng isang bagong array, kung saan ang y-axis ay may bagong halaga:
mymodel = list(map(myfunc, x))
Ipipinta ang orihinal na larawan ng puntos:
plt.scatter(x, y)
Ipipinta ang linya ng paghahati sa paghahati:
plt.plot(x, mymodel)
Ipakita ang larawan:
plt.show()
R-Squared
Mahalaga na malaman kung gaano kagandahang may relasyon ang halaga ng x at y sa axis, kung walang relasyon, ang paghahati sa paghahati ay hindi maaaring gamitin upang hulaan anumang bagay.
Ang relasyon ay nangangalaga ng isang halaga na tinatawag na r-squared (r-squared).
Ang saklaw ng r-squared ay 0 hanggang 1, kung saan 0 ay nangangahulugan na walang relasyon, at 1 ay nangangahulugan na 100% na relasyon.
Ang Python at ang module ng Scipy ay magkakaroon ng pagkalkula ng halaga para sa iyo, ang iyong kailangan lamang ay ibigay ang halaga ng x at y sa kanila:
Halimbawa
Paano ang katugmang ng aking datos sa paghahati sa paghahati sa paghahati?
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)
Komentaryo:Ang resulta na -0.76 ay nagpapakita na may relasyon, ngunit hindi ganap na relasyon, ngunit nagpapakita din na maaari naming gamitin ang paghahati sa paghahati sa paghuhula sa hinaharap.
Paghuhula ng hinaharap na halaga
Ngayon, maaari naming gamitin ang napansin na impormasyon upang hulaan ang hinaharap na halaga.
Halimbawa: Subukan naming hulaan ang bilis ng isang sasakyan na may 10 taong kasaysayan.
Para dito, kailangan namin ang katulad na myfunc()
Function:
def myfunc(x): return slope * x + intercept
Halimbawa
Paghuhula ng bilis ng isang sasakyan na may 10 taong karanasan:
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)
Ang paghuhula ng bilis ay 85.6, at maaari din naming basahin ito mula sa larawan:

Masama ang paghahati sa paghahati?
Haginggapos na gumawa ng isang halimbawa, kung saan ang paghahati sa paghahati ay hindi ang pinakamahusay na paraan para sa paghuhula sa hinaharap na halaga.
Halimbawa
Ang mga halaga ng x at y axis na ito ay magiging dahilan ng napakalalang katugma ng pagbabalikbasa ng haba ng linya:
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()
Ang resulta:

at ang r-squared na halaga?
Halimbawa
Dapat mo nang makakuha ng napakamababang r-squared na halaga.
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)
Ang resulta: 0.013 ay nangangahulugan na ang relasyon ay napakalala, at sinasabi na ang datoset ay hindi nararapat sa pagbabalikbasa ng haba ng linya.
- Nakaraang Pahina Scatter Plot
- Susunod na Pahina Polinomikal na Pagbabalikbasa