మెకానికల్ లెర్నింగ్ - ట్రైనింగ్/టెస్టింగ్

మోడల్ అంచనా కచ్చితత్వాన్ని మాపడం

మెషీన్ లేర్నింగ్ లో, మేము కొన్ని సంఘటనల ఫలితాలను అంచనా వేయడానికి మోడల్స్ ను సృష్టిస్తాము, ఇది ముంది చాప్టర్లో బరువు మరియు ఇంజిన్ క్రమం ను తెలుసుకున్నప్పుడు కార్ యొక్క కార్బన్ డైఆక్సైడ్ ఉద్గారాలను అంచనా వేయడం వంటి.

మోడల్ ఎంతగా మంచిదను మాపడానికి, మేము ఒక పద్ధతిని ఉపయోగిస్తాము అది మార్గదర్శకం/పరీక్షణం.

మార్గదర్శకం/పరీక్షణం ఏమిటి

మార్గదర్శకం/పరీక్షణం మోడల్ యొక్క కచ్చితత్వాన్ని మాపడం ఒక పద్ధతి.

మార్గదర్శకం/పరీక్షణం అనేది డేటా సెట్ ను రెండు సమూహాలుగా విభజించామని కారణంగా అని పిలుస్తారు: శిక్షణ సెట్ మరియు పరీక్ష సెట్.

80% శిక్షణకు, 20% పరీక్షకు వస్తుంది.

మీరు మోడల్ ను శిక్షణ చేయడానికి శిక్షణ సెట్ ను ఉపయోగించవచ్చు.

మీరు మోడల్ ను పరీక్షించడానికి పరీక్షణ సెట్ ను ఉపయోగించవచ్చు.

మోడల్ ను శిక్షణ చేయడం అంటే మోడల్ ను సృష్టించడం.

మోడల్ యొక్క కచ్చితత్వాన్ని పరీక్షించడం అంటే మోడల్ యొక్క కచ్చితత్వాన్ని పరీక్షించడం.

డేటా సెట్ నుండి ప్రారంభించండి

పరీక్షించవలసిన డేటా సెట్ నుండి ప్రారంభించండి.

మా డేటా సెట్ లో షాప్లోని 100 మంది కస్టమర్లు మరియు వారి షాపింగ్ అభ్యాసాలను చూపిస్తుంది.

实例

import numpy
import matplotlib.pyplot as plt
numpy.random.seed(2)
x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x
plt.scatter(x, y)
plt.show()

ఫలితం:

x 轴表示购买前的分钟数。

y 轴表示在购买上花费的金额。


运行实例

拆分训练/测试

训练集应该是原始数据的 80% 的随机选择。

测试集应该是剩余的 20%。

train_x = x[:80]
train_y = y[:80]
test_x = x[80:]
test_y = y[80:]

显示训练集

显示与训练集相同的散点图:

实例

plt.scatter(train_x, train_y)
plt.show()

ఫలితం:

ఇది మూల డేటా సెట్తో అదే కనిపిస్తుంది, కాబట్టి ఇది సరిగ్గా ఎంచుకున్న ఎంపిక కాగలదు:


运行实例

పరీక్షా సెట్ చూపించండి

పరీక్షా సెట్ మొత్తం వివిధంగా ఉండకూడదు అని నిర్ధారించుకునేందుకు, మేము పరీక్షా సెట్ను కూడా చూడాలి.

实例

plt.scatter(test_x, test_y)
plt.show()

ఫలితం:

పరీక్షా సెట్ కూడా మూల డేటా సెట్లో ఉంటుంది:


运行实例

డేటా సెట్ ఫిట్

డేటా సెట్ ఏమిటి? నేను అత్యంత సరిగ్గా పలనాకర్మ లో అనుగుణంగా ఉండడానికి అనుకుంటున్నాను, కాబట్టి మాకు పలనాకర్మ లైన్ జత చేయండి.

డేటా పాయింట్ల దాటి లైన్ జత చేయడానికి, మేము matplotlib మాడ్యూల్ను ఉపయోగిస్తాము plott() పద్ధతి:

实例

డేటా పాయింట్ల దాటి పలనాకర్మ లైన్ జత

import numpy
import matplotlib.pyplot as plt
numpy.random.seed(2)
x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x
train_x = x[:80]
train_y = y[:80]
test_x = x[80:]
test_y = y[80:]
mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4))
myline = numpy.linspace(0, 6, 100)
plt.scatter(train_x, train_y)
plt.plot(myline, mymodel(myline))
plt.show()

ఫలితం:


运行实例

ఈ ఫలితం మాకు డేటా సెట్ను పలనాకర్మలో ఉండడానికి సలహా ఇవ్వగలదు, మరియు మాకు డేటా సెట్ను దాటి విధించడానికి ప్రయత్నించినప్పుడు అనేక వింతలను ఇవ్వగలదు. ఉదాహరణకు: ఈ పంక్తి ఒక వినియోగదారుడు షాపులో 6 నిమిషాలు ఉండి 200 విలువైన కొనుగోళ్ళు చేస్తాడని చెపుతుంది. ఇది అవగాహనాహీనంగా అనుగుణంగా ఉంటుంది.

కానీ R-squared స్కోర్ ఎంత మంచిది? R-squared స్కోర్ నా డేటా సెట్ను మోడల్కు అనుగుణంగా చూపుతుంది.

R2

మీరు R2 లేదా R-స్క్వేర్ (R-squared) గురించి గుర్తుంచుకున్నారా?

ఇది x అక్షం మరియు y అక్షం మధ్య సంబంధాన్ని మాపుతుంది, అందులో 0 సంబంధం లేకుండా ఉంటుంది మరియు 1 పూర్తి సంబంధం ఉంటుంది.

sklearn మాడ్యూల్లో ఒక పేరు ఉంది rs_score() ఈ పద్ధతి, ఇది ఈ సంబంధాన్ని కనుగొనడానికి మాకు సహాయపడుతుంది.

ఇక్కడ, మేము వినియోగదారులు షాపులో ఉండే సమయం మరియు వారు ఖరీదు చేసే రూపాయల మధ్య సంబంధాన్ని అంచనా వేయాలి.

实例

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

import numpy
from sklearn.metrics import r2_score
numpy.random.seed(2)
x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x
train_x = x[:80]
train_y = y[:80]
test_x = x[80:]
test_y = y[80:]
mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4))
r2 = r2_score(train_y, mymodel(train_x))
print(r2)

运行实例

注释:0.799 ఫలితం సంబంధాలు మంచిది అని చెపుతుంది.

పరీక్షా సెట్ను ప్రవేశపెడతాము

ఇప్పుడు, కనీసం శిక్షణ డేటా విషయంలో, మాకు ఒక మంచి మోడల్ నిర్మించాము.

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

实例

让我们在使用测试数据时确定 R2 分数:

import numpy
from sklearn.metrics import r2_score
numpy.random.seed(2)
x = numpy.random.normal(3, 1, 100)
y = numpy.random.normal(150, 40, 100) / x
train_x = x[:80]
train_y = y[:80]
test_x = x[80:]
test_y = y[80:]
mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4))
r2 = r2_score(test_y, mymodel(test_x))
print(r2)

运行实例

注释:结果 0.809 表明该模型也适合测试集,我们确信可以使用该模型预测未来值。

预测值

现在我们已经确定我们的模型是不错的,可以开始预测新值了。

实例

如果购买客户在商店中停留 5 分钟,他/她将花费多少钱?

print(mymodel(5))

运行实例

该例预测客户花费了 22.88 美元,似乎与图表相对应: