Mwanzo wa Training/Testing

Kuwaumilia modeli

Kwenye ujuzi wa kompyuta, tunengeneza modeli ili kuwaumilia matokeo ya matukio yasiyotaka, kama kwenye kichapisho kilichotokana na vitabu vitengeneza kidhibiti cha matokeo ya matokeo ya kipato kwa sababu tukisikia ukweli wa kidumu na kuanzia kwa matumizi ya motori.

Kuwaumilia modeli inayotumika kwa kiasi kikubwa, tunaweza kutumia mbinu inayoitwa mtaarifu/tukio.

Je, mtaarifu/tukio ni nini?

Mtaarifu/tukio ni mbinu ya kumtazama kidhibiti cha modeli.

Kwa sababu inatathirika kwa mbinu ya mtaarifu/tukio kwa sababu tumezotua data set kwa pili: kundi la kufanyia na kundi la kumtazama.

80% inayotumika kufanyia kumengeneza, 20% inayotumika kumtazama.

Wewe unaweza kutumia kundi la kufanyia kumengeneza modeli.

Wewe unaweza kutumia kundi la tukio la kumtazama modeli.

Kumweza modeli ni kumengeneza modeli.

Kuwaumilia modeli ni kumtaka kumtazama kidhibiti cha modeli.

Kuanza na data set.

Kuanza na data set ya kueleza.

Data set yanaonyesha wengi 100 wa mbali ya duka na kazi yao ya kumua.

Mfano

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

Matokeo:

Ukubwa wa x na upekee wa dakika kabla ya kutoa mali.

Ukubwa wa y na upekee wa uwanja wa kutoa mali.


Inaendelea Kufanya Mfano

Kuwasilisha kikao cha maelezo/kikao cha tukio cha maelezo

Kikao cha maelezo kinahitaji kufikiria 80% ya data ya kwanza kwa uchaguzi wa muda wa muda.

Kikao cha tukio cha maelezo kinahitaji kufikiria 20% ya data zote.

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

Kumonisha kikao cha maelezo

Kumonisha kikao cha tukio cha maelezo kama kikao cha maelezo cha maelezo:

Mfano

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

Matokeo:

Kikao cha tukio cha maelezo kinacholokeshwa kama data ya kwanza, kinaonesha kwamba inaonesha uhusiano:


Inaendelea Kufanya Mfano

Kumonisha kikao cha tukio cha maelezo

Kumtaka kwamba kikao cha tukio cha maelezo haitakuwa kina wengi, tunapitia kikao cha tukio cha maelezo.

Mfano

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

Matokeo:

Kikao cha tukio cha maelezo kinacholokeshwa kama data ya kwanza:


Inaendelea Kufanya Mfano

Kumaliza data set

Data set ni nini? Tunasema kwamba ni huzi kumaliza kirekili cha jumla, tumezaa kumaliza lini ya kirekili cha jumla.

Kumaliza lini kwenye data points tunatumia module ya matplotlib plott() Method:

Mfano

Kuzinga ukabamizi wa kirekili cha jumla kwenye data points:

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

Matokeo:


Inaendelea Kufanya Mfano

Hii inasaidia kusaidia maelezo ya kufikiria kufikiria ukabamizi wa kirekili cha jumla kwa data yote, na kwamba inaingia kumtumia matokeo ya hili inaonesha kwamba inaingia kumaliza matokeo ya muda wa kufikiria kwa data yote. Kwa mfano: hii inaonyesha kwamba mwanachama anayoshinda 6 dakika katika duka inaingia kufikiria 200. Hii inaonesha kwamba hii ni hatari ya kumaliza kwa upekee.

Tunguza R-squared score, hii inaonyesha kinaonesha inaingia modeli kwa data yangu.

R2

Naonesha R2, au R-square (R-squared) kinaonesha?

Hii inamengeneza uhusiano wa x na y, kwa uangalifu kati ya 0 na 1, ambapo 0 inaonyesha ukoweza na ukikosea, na 1 inaonyesha uhusiano wa pekee.

Sklearn module ina moduli inayoitwa rs_score() Tunaona hii na hii method, hii inaona kusaidia kumaliza hii uhusiano.

Tunatukia kumaliza matokeo ya wakati wa muda wa kuzungumza katika duka na kina ya kutosha yao.

Mfano

Hapa, tunatukia kumaliza matokeo ya data za maelezo katika ukabamizi wa kirekili cha jumla.

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)

Inaendelea Kufanya Mfano

Mafano:Matokeo 0.799 inaonyesha kwamba uhusiano ni bora.

Kuingiza kikao cha tukio

Sasa, ukikwaja data ya maelezo, tunatuma modeli bora.

Kisha, tunatumia data ya maelezo kwa kumtuta modeli, kumtathirisha inaingia picha sawa.

Mfano

Tunapendelea kubadilisha R2 kwa matumizi ya data ya matokeo kwa sababu ya kusaidia:

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)

Inaendelea Kufanya Mfano

Mafano:Matokeo 0.809 inaonesha kwamba modeli hii inafikia kwa kipendekezo cha matokeo, tunahakika tunaweza kutumia modeli hii kuandika matokeo ya mpya.

Matokeo ya Kipendekezo

Sasa tumekubaliana kwamba modeli yetu inaonesha kwa uangalifu, inafanya kuanza kuandika matokeo ya mpya.

Mfano

Kama mwanasheria anapokaa kwenye duka kwa 5 dakika, anaweza kutumia nguvu gani?

print(mymodel(5))

Inaendelea Kufanya Mfano

Mfano huu inapredicisha kwamba mwanasheria amekutumia 22.88 dollari, kunaonesha kwamba inakusikitika na chati: