Set Validasi
Termasuk bagian Pembelajaran Terawasi dalam perjalanan Machine Learning di Coddy. Pelajaran 35 dari 58.
Dalam Memilih k dan Kedalaman Pohon, kamu mempertahankan k atau kedalaman dengan skor pengujian terbaik. Skor itu memberi kesan yang menyesatkan: kamu mempertahankannya karena nilainya tinggi.
Jadi, sisakan satu set ketiga untuk memilih, yaitu set validasi:
Dua kali pemisahan menghasilkan pembagian ini. 0.25 dari sisa 80% adalah 20%:
X_rest, X_test, y_rest, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
X_train, X_val, y_train, y_val = train_test_split(X_rest, y_rest, test_size=0.25, random_state=0)
print(len(X_train), len(X_val), len(X_test))Untuk 500 baris, hasil yang dicetak adalah:
300 100 100Pilih berdasarkan validasi. Gunakan test set hanya sekali, tepat di akhir.
Tantangan
SedangKebun anggur memprediksi hasil anggur per baris dengan Ridge. Kode awal memilih alpha berdasarkan skor pengujian dan melaporkan skor yang sama. Perbaiki.
- Pisahkan
X_restdany_restmenjadi baris pelatihan dan validasi (test_size=0.25,random_state=0). - Pilih alpha berdasarkan R kuadrat validasi, lalu cetak alpha beserta skornya.
- Latih dengan alpha yang dipilih menggunakan baris pelatihan, lalu cetak R kuadrat pengujiannya.
Untuk kebun anggur lain:
Chosen alpha: 1 (validation R squared 0.787)
Test R squared: 0.726Skor yang jujur sering kali lebih rendah daripada skor kode awal. Itulah skor yang sebenarnya.
Coba sendiri
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import Ridge
# Melatih Ridge(alpha) dengan data yang diskalakan pada kumpulan baris pertama, lalu mengembalikan nilai R kuadratnya pada kumpulan kedua
def ridge_r2(alpha, X_fit, y_fit, X_check, y_check):
scaler = StandardScaler()
model = Ridge(alpha=alpha)
model.fit(scaler.fit_transform(X_fit), y_fit)
return model.score(scaler.transform(X_check), y_check)
# 90 baris data kebun anggur: masing-masing berisi 10 pengukuran dan hasil panen anggur dalam kg
rows = pd.read_csv("vineyard.csv")
features = ["sun_hours", "rain_mm", "soil_ph", "slope_deg", "vine_age",
"row_length_m", "buds_per_vine", "frost_days", "wind_kmh", "clay_pct"]
X = rows[features]
y = rows["yield_kg"]
alphas = [0.1, 1, 10, 100]
X_rest, X_test, y_rest, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# Ini memilih alpha berdasarkan skor pengujian, lalu melaporkan skor yang sama: perbaiki
best_alpha = 0
best_r2 = -1
for alpha in alphas:
r2 = ridge_r2(alpha, X_rest, y_rest, X_test, y_test)
if r2 > best_r2:
best_alpha = alpha
best_r2 = r2
print(f"Chosen alpha: {best_alpha}")
print(f"Test R squared: {best_r2:.3f}")
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pembelajaran Terawasi
1Model Pertamamu
Belajar dari ContohData Latih dan Data UjiMelatih dan MemprediksiMenilai ModelRangkuman: Penyortir Benih4Regresi Logistik
Prediksi Ya atau TidakAmbang KeputusanBobot sebagai BuktiBeberapa KelasRangkuman: Filter Spam7Overfitting
Underfitting dan OverfittingKurva PembelajaranRegularisasiSet ValidasiRingkasan: Menyetel Pohon2Tetangga Terdekat
Cara k-NN MenentukanMemilih kBatas KeputusanPenskalaan untuk TetanggaRingkasan: Tetangga Wine5Mengukur Model Klasifikasi
Matriks KonfusiPresisi dan RecallSkor F1Kelas Tidak SeimbangKurva ROCRangkuman: Tes SkriningLatihan sendiri: Compiler Python online