Makine Öğrenimi - Eğitim/ Test
- Önceki Sayfa Yaklaşık
- Sonraki Sayfa Karar Ağacı
Modeli değerlendirme
Makine öğreniminde, belirli olayların sonuçlarını tahmin etmek için modeller oluştururuz, bu da bir önceki bölümde ağırlık ve motor kapasitesini öğrendiğimizde arabanın karbon dioksit emisyonunu tahmin ettiğimiz gibi.
Modelin yeterince iyi olup olmadığını ölçmek için, eğitim/test adı verilen bir yöntem kullanabiliriz.
Eğitim/test nedir
Eğitim/test, modelin doğruluğunu ölçmek için bir yöntemdir.
Eğitim/test olarak adlandırılmasının nedeni, veri kümemizi iki gruba ayırmamızdır: eğitim kümesi ve test kümesi.
80% eğitim, 20% test için kullanılır.
Modeli eğitmek için eğitim kümesini kullanabilirsiniz.
Modeli test etmek için test kümesini kullanabilirsiniz.
Modeli eğitmek, modelin oluşturulması anlamına gelir.
Modeli test etmek, modelin doğruluğunu test etmek anlamına gelir.
Veri kümesini kullanmaya başlayın
Test etmek için veri kümesini kullanmaya başlayın.
Veritabanımız, mağazadaki 100 müşteri ve alışveriş alışkanlıklarını göstermektedir.
Örnek
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()
Sonuç:
X ekseninde satın almadan önceki dakikalar gösterilir.
Y ekseninde satın almalara harcanan miktar gösterilir.

Eğitim/tesis bölme
Eğitim kümesi, orijinal verilerin %80'inin rastgele seçimi olmalıdır.
Test kümesi, kalan %20 olmalıdır.
train_x = x[:80] train_y = y[:80] test_x = x[80:] test_y = y[80:]
Eğitim kümesini gösterme
Eğitim kümesi ile aynı dağılımı gösteren dağılımı gösterme:
Örnek
plt.scatter(train_x, train_y) plt.show()
Sonuç:
Bu, orijinal veri kümesine benziyor, bu yüzden bir seçim olarak mantıklı görünüyor:

Test kümesini gösterme
Test kümesinin tamamen farklı olmadığından emin olmak için test kümesini de kontrol edelim.
Örnek
plt.scatter(test_x, test_y) plt.show()
Sonuç:
Test kümesi de orijinal veri kümesine benziyor:

Veri kümesini fit etme
Veri kümesi nasıl? Benim için en uygun fit, polinomik regresyon olacaktır, bu yüzden bir polinomik regresyon çizgisi çizelim.
Veri noktalarından bir çizgi çizmek için matplotlib modülünü kullanıyoruz: plott()
Yöntem:
Örnek
Veri noktalarından geçen polinomik regresyon çizgisini çizin:
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()
Sonuç:

Bu sonuç, veri kümemize polinomik regresyonu önermemizi destekleyebilir, hatta veri kümemiz dışındaki değerleri tahmin etmeye çalışsak da bize bazı garip sonuçlar verebilir. Örneğin: bu satır, bir müşterinin mağazada 6 dakika geçirdiğini ve 200 değerinde bir alışveriş yapacağını gösterir. Bu, aşırı öğrenme belirtisi olabilir.
Ama R-squared puanı nedir? R-squared score, veri kümemin modelle uyumluluğunu iyi gösterir.
R2
R2, yani R karesi (R-squared) hatırlıyorsunuz mu?
Bu, x eksenini ve y eksenini arasındaki ilişkiyi ölçer, 0 ile 1 arasında değer alır, 0 ilişki olmadığını, 1 ise tam ilişkiyi ifade eder.
sklearn modülünde rs_score()
Bu yöntem, bize bu ilişkiyi bulmamıza yardımcı olacak.
Burada, müşterilerin mağazada kalış süreleri ile harcadıkları miktar arasındaki ilişkiyi ölçmek istiyoruz.
Örnek
Polinomik regresyonun fit ediciliği nasıl? Eğitim verilerimizde?
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)
Açıklama:Sonuç 0.799, ilişkinin iyi olduğunu gösteriyor.
Test kümesini tanımlayalım
Şimdi, en azından eğitim verileri açısından, iyi bir model kurduk.
Sonra, biz modeli test etmek için test verilerini kullanmalıyız, aynı sonucu verdiğini kontrol etmek için.
Örnek
Test verilerini kullanarak R2 puanını belirleyelim:
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)
Açıklama:Sonuç 0.809, bu modelin de test kümesine uygun olduğunu gösterir ve gelecekteki değerleri öngörmek için bu modeli kullanabileceğimize inanıyoruz.
Öngörülen Değerler
Şimdi modelimizin iyi olduğunu belirledik, yeni değerleri öngörmeye başlayabiliriz.
Örnek
Müşteri mağazada 5 dakika kalırsa, ne kadar harcayacak?
print(mymodel(5))
Bu örnek, müşterinin 22.88 dolar harcadığını tahmin ediyor, bu da grafikle uyumlu görünüyor:

- Önceki Sayfa Yaklaşık
- Sonraki Sayfa Karar Ağacı