Machine Learning - Training/Testing
- Nakaraang Pahina Pinansin
- Susunod Na Pahina Bakas Ng Desisyon
Pagtassumikata ng modelo
Sa machine learning, gumawa kami ng modelo upang makita ang resulta ng ilang pangyayari, katulad ng nangyari sa nakaraang kabanata nang naintindihan namin ang timbang at disiplina ng motor ng kotse, inaasahan namin ang pagbubuga ng carbon ng kotse.
Upang masukat kung napakahusay ang modelo, maaari naming gamitin ang isang paraan na tinatawag na pagtuturo/pagsubok.
Ano ang pagtuturo/pagsubok?
Ang pagtuturo/pagsubok ay isang paraan ng pagsusukat ng katumpakan ng modelo.
Bilang 'pagtuturo/pagsubok', dahil inibahagi namin ang dataset sa dalawang grupo: set ng pagtuturo at set ng pagsubok.
80% ay gamit sa pagtuturo, 20% ay gamit sa pagsubok.
Maaari mong gamitin ang set ng pagtuturo upang tuturo ang modelo.
Maaari mong gamitin ang set ng pagsubok upang testin ang modelo.
Ang pagtuturo ng modelo ay nangangahulugan na gumawa ng modelo.
Ang pagtestin ng modelo ay nangangahulugan na pagtestin ng katumpakan ng modelo.
Simula sa dataset.
Simula sa dataset na itutestin.
Ang aming dataset ay nagpapakita ng 100 na mamimili sa mga tindahan at kanilang pagiging kumikita.
Halimbawa
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()
Ang resulta:
Ang x axis ay naglalarawan ng minuto bago ng pagbili.
Ang y axis ay naglalarawan ng halaga na nagastos sa pagbili.

Paghihiwalay ng training/test
Ang training set ay dapat na 80 porsyento ng orihinal na data na isang random na piliin.
Ang test set ay dapat na 20 porsyento ng natitirang data.
train_x = x[:80] train_y = y[:80] test_x = x[80:] test_y = y[80:]
Ipakita ang training set
Ipakita ang scatter plot na katulad ng training set:
Halimbawa
plt.scatter(train_x, train_y) plt.show()
Ang resulta:
Ito ay mukhang katulad ng orihinal na dataset, kaya ito ay isang magandang pinili:

Ipakita ang test set
Para matiyak na ang test set ay hindi nakaiba, dapat nating tingnan din ang test set.
Halimbawa
plt.scatter(test_x, test_y) plt.show()
Ang resulta:
Ang test set ay mukhang katulad ng orihinal na dataset:

Pagtutugma ng dataset
Ano ang kung ano ang dataset? Aking iniisip na ang pinakamagandang pagtutugma ay ang polinomial regression, kaya ipapakita namin ang isang linya ng polinomial regression.
Para makapagpinta ng linya sa data points, gumagamit kami ng module ng matplotlib: plott()
Paraan:
Halimbawa
Isumite ang polinomial regression line na tumatawid sa 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()
Ang resulta:

Ang resulta na ito ay maaring suportahan ang aming rekomendasyon na gumamit ng polinomial regression sa dataset, kahit na kung sinubukan namin na makita ang halaga sa labas ng dataset ay maaring magbigay ng di inaasahang resulta. Halimbawa: ang linya na ito ay nagpapakita na ang isang mamimili ay nagmamili sa tindahan ng 6 minuto, ay magtatapos ng isang pagbabayad na may halaga na 200. Ito ay maaring isang tanda ng overfitting.
Ngunit kung anong R-squared score? Ang R-squared score ay mahusay na nagtutukoy sa katugmanging ng aking dataset sa model.
R2
Nalalaman mo pa ba ang R2, na kilala din bilang R-squared (R-squared)?
Ito ay nagtutukoy sa relasyon ng x at y axis, na may halaga mula 0 hanggang 1, kung saan 0 ay nangangahulugan na walang relasyon, at 1 ay nangangahulugan na ganap na kaugnay.
Ang module ng sklearn ay may isang pangalan na rs_score()
Ang paraan na ito, ang paraan na ito ay tutulong sa amin upang hanapin ang relasyon.
Dito, gusto naming sukatin ang relasyon ng oras na itinuloy ng mamimili sa tindahan at kung anong halaga nila nagastos.
Halimbawa
Ano ang kung paano ang katugmanging ng aming train data sa polinomial regression?
import numpy mula sa 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)
Komentaryo:Ang resulta 0.799 ay nagpapakita na ang relasyon ay mabuti.
Ipakilala ang test set
Ngayon, kahit sa train data, naunang nakapagbuo na namin ng magandang model.
Pagkatapos, kailangan nating gamitin ang test data upang subukan ang model, upang pag-aralan kung mayroong magkakaparehong resulta.
Halimbawa
Sa paggamit ng test data, ipinapatunayan namin ang puntos ng R2:
import numpy mula sa 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)
Komentaryo:Ang resulta ng 0.809 ay nagpapakita na ang modelo ay mukhang gugustuhin din ng test set, at kami ay naniniwala na maaari naming gamitin ang modelo upang magbibilang ng hinaharap na halaga.
Halaga Ng Pagbibilang
Nakita namin na ang aming modelo ay mabuti, at maaari nating simulan ang pagbibilang ng bagong halaga.
Halimbawa
Kung ang mamimili ay manatili sa tindahan ng 5 minuto, gaano kaya siya ay magastos?
print(mymodel(5))
Ang ulat ng halimbawa ay inaasahan na ang gastos ng mamimili ay 22.88 dolyar, na may katugmang sa tsart:

- Nakaraang Pahina Pinansin
- Susunod Na Pahina Bakas Ng Desisyon