Machine Learning - Polynomial Regression
- Nakaraang Pahina Pangkaraniwan na Pagbabalikbali
- Susunod na Pahina Maramihang Pagbabalikbali
Polynomial Regression
Kung ang iyong data point ay malinaw na hindi angkop sa linear regression (nagbabalik sa pagitan ng data points), ang polinomyal regression ay maaaring maging pinakamahusay na opsyon.
像线性回归一样,多项式回归使用变量 x 和 y 之间的关系来找到绘制数据点线的最佳方法。

Tulad ng linear regression, gamit ang relasyon ng mga variable x at y, ang polinomial regression ay gumagamit ng pinakamahusay na paraan para makita ang linya na magpapakita ng data points.
Mga prinsipyo ng paggawa
Mayroong ilang mga paraan ang Python upang makita ang relasyon ng mga data point at magpakita ng linya ng polinomial regression. Magiging ipinapakita naming kung paano gamitin ang mga pamamaraan na ito sa halip na sa pamamagitan ng mga formula ng matematika.
Sa mga sumusunod na halimbawa, nagtala kami ng 18 sasakyan na nagpasa sa isang partikular na tarhanti.
Narekord na namin ang bilis ng sasakyan at ang oras ng pagpasa (oras sa araw).
Halimbawa
Ang axis ng x ay nangangahulugan ng oras sa isang araw, ang axis ng y ay nangangahulugan ng bilis:
import matplotlib.pyplot as plt x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22] y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100] plt.scatter(x, y) plt.show()
Resulta:

Halimbawa
Unang magpakita ng scatter plot: Iimpor
numpy At
Matapos iimpor ang matplotlib
import numpy import matplotlib.pyplot as plt x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22] y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100] mymodel = numpy.poly1d(numpy.polyfit(x, y, 3)) myline = numpy.linspace(1, 22, 100) plt.scatter(x, y) plt.plot(myline, mymodel(myline)) plt.show()
Resulta:

Pagsasali ng halimbawa
Iimpor ang mga kinakailangang module:
import numpy import matplotlib.pyplot as plt
Lumikha ng array na naglalarawan ng halaga ng x at y axis:
x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22] y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100]
May isang paraan ang NumPy na makakapaglunsad ng modelo ng polinomial:
mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))
Pagkatapos, tukuyin ang paraan ng pagpapakita ng linya, mula sa posisyon 1 hanggang posisyon 22:
myline = numpy.linspace(1, 22, 100)
Pakita ang orihinal na scatter plot:
plt.scatter(x, y)
Pakita ang linya ng polinomial regression:
plt.plot(myline, mymodel(myline))
Ipakita ang larawan:
plt.show()
R-Squared
Mahalaga na malaman kung gaano kagandang relasyon ang mayroon sa mga halaga ng x at y axis, kung walang relasyon, ang polinomial regression ay hindi maaring gamitin upang makita ang 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 Sklearn ay magkakaroon ng pagkalkula ng halaga na iyo lang kailangan na ipasok ang array ng x at y:
Halimbawa
Paano ang pagtutugma ng aking data sa polinomial regression?
import numpy from sklearn.metrics import r2_score x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22] y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100] mymodel = numpy.poly1d(numpy.polyfit(x, y, 3)) print(r2_score(y, mymodel(x)))
Komento:Ang resulta na 0.94 ay nagpapakita na may magandang relasyon, at makikita naming gamitin ang polinomial regression sa hinaharap na mga pagpredict.
Pagpredict ng hinaharap na halaga
Ngayon, masasagawa naming makita ang hinaharap na halaga gamit ang napakolekta na impormasyon.
Halimbawa: Subukin naming makita ang bilis ng sasakyan sa palibot ng alas-17 ng gabi sa tarhanti:
Para dito, kailangan naming magkaroon ng katulad ng halimbawa sa itaas: mymodel Array:
mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))
Halimbawa
Tinataya ang bilis ng sasakyan sa alas-17 ng hapon:
import numpy from sklearn.metrics import r2_score x = [1,2,3,5,6,7,8,9,10,12,13,14,15,16,18,19,21,22] y = [100,90,80,60,60,55,60,65,70,70,75,76,78,79,90,99,99,100] mymodel = numpy.poly1d(numpy.polyfit(x, y, 3)) speed = mymodel(17) print(speed)
Ang pagpredict ng bilis ng modelo ay 88.87, at makikita rin natin ito sa larawan:

Masama ang pagtutugma?
Hinihiling naming lumikha ng isang halimbawa kung saan ang polinomial regression ay hindi ang pinakamahusay na paraan para makita ang mga hinaharap na halaga.
Halimbawa
Ang mga halaga ng x at y axis na ito ay magiging napakababa ang kalinawan ng pagkakasabay ng pananaliksik na polinomial:
import numpy import matplotlib.pyplot as plt 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] mymodel = numpy.poly1d(numpy.polyfit(x, y, 3)) myline = numpy.linspace(2, 95, 100) plt.scatter(x, y) plt.plot(myline, mymodel(myline)) plt.show()
Resulta:

Ano ang r-squared value?
Halimbawa
Dapat mong makakuha ng napakababang halaga ng r-squared.
import numpy from sklearn.metrics import r2_score 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] mymodel = numpy.poly1d(numpy.polyfit(x, y, 3)) print(r2_score(y, mymodel(x)))
Resulta: 0.00995 ay nangangahulugang mababang relasyon, at nagsasabi na ang datoset ay hindi maganda para sa pananaliksik na polinomial.
- Nakaraang Pahina Pangkaraniwan na Pagbabalikbali
- Susunod na Pahina Maramihang Pagbabalikbali