koneoppiminen - koulutus/testaus
- Edellinen Sivu Skaalaus
- Seuraava Sivu Päätöspuuttuva
Evaluate the model
In machine learning, we create models to predict the results of certain events, just like in the previous chapter when we understood weight and engine displacement, we predicted the carbon dioxide emissions of cars.
To measure whether the model is good enough, we can use a method called training/test.
What is training/test
Training/test is a method to measure the accuracy of the model.
It is called training/test because we divide the dataset into two groups: training set and test set.
80% for training, 20% for testing.
You can use the training set to train the model.
You can use the test set to test the model.
Training the model means creating the model.
Testing the model means testing the accuracy of the model.
Start with the dataset.
Start with the dataset to be tested.
Our dataset shows 100 customers in a store and their shopping habits.
Esimerkki
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()
Tulos:
X-akseli edustaa ostamisen alkamista minuuteina.
Y-akseli edustaa ostoksiin käytettyä summaa.

Koulutus- ja testijoukon erottaminen
Koulutusjoukko tulisi olla alkuperäisen tiedon 80 prosenttia satunnaisesta valinnasta.
Testitietojoukko tulisi olla 20 prosenttia jäljelle jääneistä.
train_x = x[:80] train_y = y[:80] test_x = x[80:] test_y = y[80:]
Näytetään koulutusjoukko
Näytetään samanlaiset kuviot kuin koulutusjoukossa:
Esimerkki
plt.scatter(train_x, train_y) plt.show()
Tulos:
Se näyttää alkuperäiseltä tietojoukolta, joten se näyttää olevan järkevä valinta:

Näytetään testitietojoukko
Varmistaaksemme, että testitietojoukko ei ole täysin erilainen, tarkastelemme myös testitietojoukkoa.
Esimerkki
plt.scatter(test_x, test_y) plt.show()
Tulos:
Testitietojoukko näyttää myös alkuperäiseltä tietojoukolta:

Sovitetaan tietojoukko
Tietojoukon rakenne? Uskon, että paras sopiva malli on polynomial regression, joten piirretään polynomial regressionin viiva.
Jotta voimme piirtää viivan tietojen pisteiden läpi, käytämme matplotlib-moduulin plott()
Menetelmä:
Esimerkki
Piirretään läpi tietojen pisteiden polynomial regressionin viiva:
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()
Tulos:

Tämä tulos voi tukea suosituksiamme tietojoukon sopivuudesta polynomial regressioniin, vaikka ennustamalla tietojoukon ulkopuolisia arvoja voisi tuottaa joitakin omituisia tuloksia. Esimerkiksi: tämä rivi osoittaa, että joku asiakas shoppaa kaupassa 6 minuuttia ja tekee ostoksen, joka maksaa 200 euroa. Tämä voi olla merkki ylivalistumisesta.
Mutta mitä tulee R-squared scoreen? R-squared score antaa hyvän kuvan tietojoukon sopivuudesta malliin.
R2
Muistatko R2:n, myös tunnettu R-neliönä (R-squared)?
Se mittaa x- ja y-akselin välistä suhdetta, arvot vaihtelevat 0:sta 1:een, joista 0 tarkoittaa, että suhdetta ei ole olemassa, ja 1 tarkoittaa täydellistä vastaavuutta.
sklearn-moduuli sisältää nimeltään rs_score()
Tämä menetelmä, joka auttaa meitä löytämään tämän suhteen.
Tässä meidän täytyy mitata asiakkaiden viettämä aika kaupassa ja heidän kuluttamansa summa välillä.
Esimerkki
Kuinka hyvin koulutusdatamme sopii polynomial regressioniin?
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)
Huomautus:Tulos 0.799 osoittaa hyvän suhteen.
Testitietojen käyttöönotto
Nyt, ainakin koulutusdatan osalta, olemme rakentaneet melko hyvän mallin.
Sitten meidän täytyy käyttää testidataa mallin testaamiseen, jotta voimme varmistaa, että se antaa samanlaisia tuloksia.
Esimerkki
Ratkaise R2 -kerroin käyttäen testidataa: }}
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)
Huomautus:Tuloksen 0,809 mukaan malli sopii myös testipakettiin, ja olemme varmoja, että voimme käyttää tätä mallia ennustamaan tulevia arvoja.
Ennustettu Arvo
Nyt kun olemme varmistaneet, että mallimme on hyvä, voimme aloittaa uusien arvojen ennustamisen.
Esimerkki
Jos ostava asiakas viettää 5 minuuttia kaupassa, kuinka paljon hän/heidän tulee kuluttaa?
print(mymodel(5))
Tämä esimerkki ennustaa, että asiakas käytti 22,88 dollaria, mikä näyttää vastaavan kaaviota:

- Edellinen Sivu Skaalaus
- Seuraava Sivu Päätöspuuttuva