机器学习 - 多项式回归

బహుపదాంశ రీగ్రీషన్ (Polynomial Regression)

మీ డేటా పాయింట్స్ లైనర్ రీగ్రీషన్ (డేటా పాయింట్స్ మధ్య గెరుస్తున్న లైన్) కి సరిపోదని ఉంటే, బహుపదాంశ రీగ్రీషన్ పరిణామం అనేది సరైన ఎంపిక.

像线性回归一样,多项式回归使用变量 x 和 y 之间的关系来找到绘制数据点线的最佳方法。


工作原理

Python 有一些方法可以找到数据点之间的关系并画出多项式回归线。我们将向您展示如何使用这些方法而不是通过数学公式。

在下面的例子中,我们注册了 18 辆经过特定收费站的汽车。

我们已经记录了汽车的速度和通过时间(小时)。

x 轴表示一天中的小时,y 轴表示速度:

实例

首先绘制散点图:

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()

结果:


运行实例

实例

నిర్వహించండి: numpy మరియు 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()

结果:


运行实例

ఉదాహరణ వివరణ

అవసరమైన మాడ్యూల్స్ నిర్వహించండి:

import numpy
import matplotlib.pyplot as plt

x మరియు y అంశాల విలువలను సూచించే పేరాలు సృష్టించండి:

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]

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^2 (r-squared) విలువ ద్వారా అంచనా కట్టబడుతుంది.

r^2 విలువలు 0 నుండి 1 వరకు ఉంటాయి, అందులో 0 అనేది అసంబంధితం అని సూచిస్తుంది, మరియు 1 అనేది 100% సంబంధాన్ని సూచిస్తుంది.

Python మరియు Sklearn మాడ్యూల్ మీరు ఈ విలువను కంటిలో పెట్టుతుంది, మీరు చేయవలసినది అనునది x మరియు y పేరాలు అర్ధం చేసుకోవడం మాత్రమే.

实例

నా డేటా పలనికల రీగ్రీషన్ లో అనుగుణత ఎలా ఉంది?

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)))

运行实例

ప్రకటన:0.94 అంచనా ఫలితం మాకు మరింత అంచనా కట్టడానికి పలనికల రీగ్రీషన్ మంచి సంబంధాన్ని సూచిస్తుంది.

భవిష్యత్తు విలువలను అంచనా కట్టండి

ఇప్పుడు, మేము సేకరించిన సమాచారాన్ని ఉపయోగించి భవిష్యత్తు విలువలను అంచనా కట్టగలము.

ఉదాహరణకు: మాకు రాత్రి 17 గంటల సుమారు చార్జింగ్ స్టేషన్ ద్వారా పసరిపోయే వాహనాల వేగాన్ని అంచనా కట్టండి:

ఈ కొరకు, మాకు పైన ఉన్న ఉదాహరణతో సమానంగా ఉండే విషయాన్ని అవసరం ఉంది: mymodel పేరాలు:

mymodel = numpy.poly1d(numpy.polyfit(x, y, 3))

实例

పరంగా 17 గంటల కాలంలో రహదారి వేగాన్ని అంచనా కట్టండి:

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)

运行实例

ఈ ఉదాహరణలో అంచనా వేసే వేగం 88.87 ఉంది, మరియు మాకు చిత్రంలో కూడా చూడగలము:


దుర్బలమైన అనుగుణత ఉందా?

మాకు ఒక ఉదాహరణ సృష్టించండి, దీనిలో పలనికల రీగ్రీషన్ భవిష్యత్తు విలువలను అంచనా కట్టడానికి ఉత్తమ పద్ధతి కాదు.

实例

x 和 y 轴的这些值会导致多项式回归的拟合度非常差:

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()

结果:


运行实例

r-squared 值呢?

实例

您应该得到一个非常低的 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)))

运行实例

结果:0.00995 表示关系很差,并告诉我们该数据集不适合多项式回归。