Belajar Mesin - Pelatihan/tes

Mengukur model

Dalam pembelajaran mesin, kami menciptakan model untuk memprediksi hasil beberapa peristiwa, seperti di bab sebelumnya saat kita mengetahui berat dan volume silinder mesin, memprediksi emisi karbon dioksida kendaraan mobil.

Untuk mengukur apakah model cukup baik, kami dapat menggunakan metode yang disebut pelatihan/tes.

Apa itu pelatihan/tes

Pelatihan/tes adalah metode untuk mengukur akurasi model.

Karena kami membagi data set menjadi dua kelompok: set pelatihan dan set tes.

80% digunakan untuk pelatihan, 20% digunakan untuk tes.

Anda dapat menggunakan set pelatihan untuk melatih model.

Anda dapat menggunakan set tes untuk menguji model.

Melatih model berarti menciptakan model.

Menguji model berarti menguji akurasi model.

Mulai dari data set.

Mulai dari data set yang akan diuji.

Data set kami menunjukkan 100 pelanggan toko dan kebiasaan belanja mereka.

Contoh

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

Hasil:

Sumbu x menunjukkan jumlah menit sebelum pembelian.

Sumbu y menunjukkan jumlah uang yang dihabiskan dalam pembelian.


Jalankan Instan

Pemecahan pelatihan/uji

Set pelatihan seharusnya pemilihan acak dari data asli yang sebanyak 80%.

Set uji seharusnya 20% sisanya.

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

Tampilkan train set

Tampilkan scatter plot yang sama seperti yang ada di train set:

Contoh

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

Hasil:

Itu terlihat seperti data set asli, sehingga mungkin adalah pilihan yang masuk akal:


Jalankan Instan

Tampilkan set uji

Untuk memastikan bahwa set uji bukan yang berbeda, kita juga harus melihat set uji.

Contoh

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

Hasil:

Set uji juga terlihat seperti data set asli:


Jalankan Instan

Fitting data set

Data set seperti apa? Saya pikir yang paling cocok untuk disesuaikan adalah regresi polinomial, jadi biar kita gambar garis regresi polinomial.

Untuk menggambar garis melintasi titik data, kita menggunakan modul matplotlib plott() Metode:

Contoh

Menggambar garis regresi polinomial yang melintasi titik data:

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

Hasil:


Jalankan Instan

Hasil ini dapat mendukung saran kami tentang fittess data set ke regresi polinomial, bahkan jika kami mencoba memprediksi nilai di luar data set akan memberikan hasil yang aneh. Contohnya: baris ini menunjukkan bahwa seorang konsumen menghabiskan 6 menit berbelanja di toko, akan menyelesaikan belanja yang bernilai 200. Ini mungkin tanda overfitting.

Tapi apa dengan skor R-squared? Skor R-squared score dengan baik menunjukkan kesiapan data set kita untuk model.

R2

Ingat R2, yang disebut juga R-squared (R-squared)?

Itu mengukur hubungan antara sumbu x dan sumbu y, berbagai nilai dari 0 sampai 1, di mana 0 menunjukkan tidak ada hubungan, sedangkan 1 menunjukkan hubungan yang sempurna.

Modul sklearn memiliki nama rs_score() Metodenya, metode ini akan membantu kita menemukan hubungan tersebut.

Di sini, kita harus mengukur hubungan antara waktu penstoppenganggan di toko dengan berapa banyak uang yang mereka belanjakan.

Contoh

Bagaimana kesiapan data pelatihan kita dalam regresi polinomial?

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)

Jalankan Instan

Keterangan:Hasil 0.799 menunjukkan hubungan yang bagus.

Memasukkan set uji

Sekarang, setidaknya dalam data pelatihan, kita telah membangun model yang bagus.

Lalu, kita harus menggunakan data uji untuk menguji model, untuk memeriksa apakah memberikan hasil yang sama.

Contoh

Biarkan kita menentukan skor R2 saat menggunakan data tes:

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)

Jalankan Instan

Keterangan:Hasil 0,809 menunjukkan bahwa model ini juga cocok untuk set tes, dan kami percaya bahwa kita dapat menggunakan model ini untuk memprediksi nilai masa mendatang.

Nilai Prediksi

Sekarang kita sudah menentukan bahwa model kita cukup baik, jadi kita dapat mulai memprediksi nilai baru.

Contoh

Jika pelanggan yang membeli tinggal di toko selama 5 menit, berapa uang yang dia habiskan?

print(mymodel(5))

Jalankan Instan

Contoh ini mencegah konsumen menghabiskan 22,88 dolar AS, yang sepertinya sesuai dengan grafik: