میکین لرن - تربیت/تست

ਮਾਡਲ ਦੀ ਮੁੱਲਾਂਕਣ

ਮਸ਼ੀਨ ਸਿੱਖਿਆ ਵਿੱਚ, ਅਸੀਂ ਕੁਝ ਘਟਨਾਵਾਂ ਦੇ ਨਤੀਜੇ ਨੂੰ ਭਵਿੱਖ ਵਿੱਚ ਅਨੁਮਾਨ ਕਰਨ ਲਈ ਮਾਡਲਾਂ ਬਣਾਉਂਦੇ ਹਾਂ, ਜਿਵੇਂ ਪਿਛਲੇ ਅਧਿਆਏ ਵਿੱਚ ਜਦੋਂ ਅਸੀਂ ਵਜਨ ਅਤੇ ਇੰਜਣ ਦੀ ਕਿਸਮ ਸਮਝੀ ਸੀ, ਤਾਂ ਕਾਰ ਦੇ ਕਾਰਬਨ ਨਿਕਾਸ ਨੂੰ ਅਨੁਮਾਨ ਕੀਤਾ ਸੀ。

ਮਾਡਲ ਕਿਉਂਕਿ ਕਾਫੀ ਚੰਗਾ ਹੋਵੇ ਇਹ ਮਾਪਣ ਲਈ, ਅਸੀਂ ਇੱਕ ਤਰੀਕਾ ਵਰਤਦੇ ਹਾਂ ਜਿਸ ਨੂੰ ਟ੍ਰੇਨ/ਟੈਸਟ ਕਿਹਾ ਜਾਂਦਾ ਹੈ。

ਟ੍ਰੇਨ/ਟੈਸਟ ਕੀ ਹੈ

ਟ੍ਰੇਨ/ਟੈਸਟ ਮਾਡਲ ਦੀ ਨਿਸ਼ਚਿਤਤਾ ਨੂੰ ਮਾਪਣ ਦਾ ਇੱਕ ਤਰੀਕਾ ਹੈ。

ਇਹ 'ਟ੍ਰੇਨ/ਟੈਸਟ' ਕਿਉਂਕਿ ਅਸੀਂ ਡੈਟਾ ਸੈੱਟ ਦੋ ਗਰੁੱਪਾਂ ਵਿੱਚ ਵੰਡਿਆ ਹੈ: ਟ੍ਰੇਨ ਸੈੱਟ ਅਤੇ ਟੈਸਟ ਸੈੱਟ。

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 score ਮੇਰੇ ਡਾਟਾ ਸੈੱਟ ਦੇ ਮਾਡਲ ਨਾਲ ਫਿੱਟਣ ਦੇ ਪੱਧਰ ਦਾ ਉੱਤਮ ਸੰਕੇਤ ਹੈ。

R2

R2, ਜਾਂ ਫਿਰ R ਸਕਵੇਅਰ (R-squared) ਯਾਦ ਕਰਦੇ ਹੋ?

ਇਹ ਆਕਸ ਅਤੇ ਵਾਕ ਦਰਮਿਆਨ ਦਾ ਸਬੰਧ ਮਾਪਦਾ ਹੈ, ਇਸ ਦਾ ਮੁੱਲ 0 ਤੋਂ 1 ਤੱਕ ਹੁੰਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ 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 ਡਾਲਰ ਖਰਚ ਕਰਨਗੇ, ਜੋ ਕਿ ਚਿੱਤਰ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ: