మెకానికల్ లెర్నింగ్ - లీనర్ రీగ్రెషన్
- ముందు పేజీ స్క్యాటర్ చిత్రం
- తరువాత పేజీ బహుళ సమీకరణాత్మక పునర్వికాసం
రీగ్రెషన్
మీరు వేరు వేరు విభాగాల మధ్య సంబంధాలను కనుగొనడానికి ప్రయత్నిస్తే, 'రీగ్రెషన్' (regression) అనే పదాన్ని ఉపయోగిస్తారు.
మెషీన్ లెర్నింగ్ మరియు స్టాటిస్టికల్ మోడలింగ్లో, ఈ సంబంధం భవిష్యత్తు ఘటనల ఫలితాలను అంచనా వేయడానికి ఉపయోగిస్తారు.
线性回归
线性回归使用数据点之间的关系在所有数据点之间画一条直线。
这条线可以用来预测未来的值。

在机器学习中,预测未来非常重要。
工作原理
Python 提供了一些方法来查找数据点之间的关系并绘制线性回归线。我们将向您展示如何使用这些方法而不是通过数学公式。
在下面的示例中,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()
ఫలితం:

ఉదాహరణ
导入 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 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)
ఒక ఉపయోగించడానికి సృష్టించండి slope
మరియు intercept
అంచనాల ఫంక్షన్ కొత్త అంచనాల విలువను తిరిగి ఇస్తుంది. ఈ కొత్త అంచనాల విలువ అనేది 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^2 (r-squared) విలువ ద్వారా అందిస్తారు.
r^2 విలువల పరిధి 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.76 ఒక రంగంలో సంబంధం ఉందని చెప్పేది, కానీ పరిపూర్ణమైన సంబంధం కాదు, కానీ మనం భవిష్యత్తు అంచనాలలో లైనర్ రీగ్రెషన్ ఉపయోగించవచ్చు అని చెప్పేది.
భవిష్యత్తు విలువలను అంచనా కట్టండి
ఇప్పుడు, మేము సేకరించిన సమాచారంతో భవిష్యత్తు విలువలను అంచనా కట్టగలము.
ఉదాహరణకు: ఒక 10 సంవత్సరాల చరిత్రతో ఉన్న కారు వేగాన్ని అంచనా కట్టడానికి ప్రయత్నించండి.
ఈ కారణంగా, మాకు పూర్వ ఉదాహరణలో ఉన్న అదే విధమైన విధానాన్ని అవసరం ఉంది: myfunc()
ఫంక్షన్:
def myfunc(x): return slope * x + intercept
ఉదాహరణ
ఒక 10 సంవత్సరాల చాలుకు ఉన్న కారు వేగాన్ని అంచనా కట్టండి:
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)
ఈ ఉదాహరణలో అంచనా వేగం 85.6 ఉంది, మరియు మేము చిత్రం నుండి కూడా చదవగలము:

చెడు అనుగుణత ఉందా?
మాకు ఒక ఉదాహరణ సృష్టించండి, లోని లైనర్ రీగ్రెషన్ భవిష్యత్తు విలువలను అధికారంగా అంచనా కట్టడానికి ఉత్తమ పద్ధతి కాదు.
ఉదాహరణ
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.013 అనేది సంబంధం చాలా చిన్నది అని చెప్పడం మరియు ఈ డేటాసెట్ సాధారణ పునర్వికాసానికి సరిపోదని చెప్పబడుతుంది.
- ముందు పేజీ స్క్యాటర్ చిత్రం
- తరువాత పేజీ బహుళ సమీకరణాత్మక పునర్వికాసం