Belajar Mesin - Latihan/Pengujian

Mengukur model

Dalam pemBELAJARAN mesin, kami menciptakan model untuk memprediksi hasil suatu peristiwa, seperti di bab sebelumnya ketika kita mengerti berat dan disiplin mesin, memprediksi emisi karbon dioksida kendaraan mobil.

Untuk mengukur apakah model cukup baik, kami boleh menggunakan metode yang disebut pelatihan/pengujian.

Apakah pelatihan/pengujian

Pelatihan/pengujian adalah metode untuk mengukur akurasi model.

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

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

Anda boleh menggunakan set pelatihan untuk melatih model.

Anda boleh menggunakan set pengujian untuk menguji model.

Melatih model berarti menciptakan model.

Menguji model berarti menguji akurasi model.

Mulai dengan data set.

Mulai dengan data set yang akan diuji.

Data set kami menunjukkan 100 pengguna 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 menit sebelum pembelian.

sumbu y menunjukkan jumlah uang yang dihabiskan dalam pembelian.


Jalankan Instan

memisahkan pelatihan/test

dataset pelatihan seharusnya adalah pemilihan acak 80% data asli.

set uji seharusnya adalah 20% yang tersisa.

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

menampilkan dataset pelatihan

menampilkan grafik titik yang sama dengan dataset pelatihan:

Contoh

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

hasil:

terlihat seperti dataset asli, sehingga ini mungkin adalah pilihan yang masuk akal:


Jalankan Instan

menampilkan set uji

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

Contoh

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

hasil:

set uji terlihat seperti dataset asli:


Jalankan Instan

menggabungkan dataset

dataset seperti apa? Saya percaya yang paling sesuai untuk diukur adalah regresi polinomial, jadi mari kita gambar garis regresi polinomial.

untuk menggambar garis melalui titik data, kita menggunakan modul matplotlib plott() metode:

Contoh

menggambar garis regresi polinomial melalui 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 penggunaan regresi polinomial untuk dataset, bahkan jika kami mencoba memprediksi nilai di luar dataset akan memberikan hasil yang mengejutkan. Contohnya: baris ini menunjukkan bahwa pelanggan yang berbelanja 6 menit di toko akan menyelesaikan一笔交易 dengan nilai 200. Ini mungkin tanda overfitting.

tetapi skore R-squared? Skore R-squared sangat baik menunjukkan tingkat penggabungan dataset dengan model.

R2

ingat R2, disebut juga R-kuadrat (R-squared)?

yang mengukur hubungan antara sumbu x dan y, berada dalam rentang 0 sampai 1, di mana 0 menunjukkan tidak ada hubungan, sementara 1 menunjukkan hubungan yang sepenuhnya.

modul sklearn memiliki nama rs_score() pada metode, metode ini akan membantu kita menemukan hubungan ini.

di sini, kita akan mengukur hubungan antara masa berada pelanggan di toko dengan berapa banyak uang yang dihabiskan.

Contoh

bagaimana ketinggian yang sesuai data pelatihan kami 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.

membawa masuk set uji

sekarang, paling sedikit di data pelatihan, kami telah membangun model yang bagus.

kemudian, kita perlu menggunakan data uji untuk menguji model, untuk memeriksa apakah memberikan hasil yang sama.

Contoh

Berikan R2 score saat menggunakan data uji:

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 kita percaya bahwa kita dapat menggunakan model ini untuk memprediksi nilai masa depan.

Nilai Prediksi

Sekarang kita sudah menetapkan bahwa model kita yang bagus, kita dapat mulai memprediksi nilai baru.

Contoh

Berapa banyak uang yang akan digunakan pelanggan jika mereka berada di toko selama 5 menit?

print(mymodel(5))

Jalankan Instan

Contoh ini memprediksi pengeluaran pelanggan sebesar 22.88 dolar, sepertinya sejalan dengan grafik: