Doğrulama Kümeleri
Coddy'nin Machine Learning Journey'sinin Denetimli Öğrenme bölümünün bir parçası. Ders 35 / 58.
k ve Ağaç Derinliğini Seçme bölümünde, en iyi test puanına sahip k değerini veya derinliği korudun. Bu puan yanıltıcı olabilir: yüksek çıktığı için onu seçtin.
Bu yüzden seçim yapmak için üçüncü bir küme ayırın: doğrulama kümesi:
İki bölme bunu sağlar. Kalan %80'in 0.25'i %20'dir:
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))500 satır için şunu yazdırır:
300 100 100Doğrulamaya göre seçim yapın. Test kümesine yalnızca en sonunda bir kez dokunun.
Görev
OrtaBir bağ, Ridge ile sıra başına üzüm verimini tahmin ediyor. Başlangıç kodu, test skoruna göre alpha'yı seçiyor ve aynı skoru bildiriyor. Bunu düzelt.
X_restvey_rest'i eğitim ve doğrulama satırlarına böl (test_size=0.25,random_state=0).- Alfa'yı doğrulama R kare değerine göre seç ve bu skorla birlikte yazdır.
- Seçilen alfayı eğitim satırlarıyla eğit ve test R kare değerini yazdır.
Başka bir bağ için:
Chosen alpha: 1 (validation R squared 0.787)
Test R squared: 0.726Dürüst skor çoğu zaman başlangıç kodunun skorundan daha düşüktür. Doğru olan skor budur.
Kendin dene
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import Ridge
# İlk satır kümesine ölçeklendirilmiş bir Ridge(alpha) modeli uyarlar, ikinci kümedeki R kare değerini döndürür
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 bağ satırı: her birinde 10 ölçüm ve kg cinsinden üzüm verimi bulunur
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)
# Bu, alpha değerini test puanına göre seçip ardından aynı puanı raporlar: bunu düzelt
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}")
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Denetimli Öğrenme bölümündeki tüm dersler
1İlk Modeliniz
Örneklerden ÖğrenmeEğitim ve Test KümeleriUydurma ve Tahmin EtmeBir Modeli PuanlamaÖzet: Tohum Sınıflandırıcı4Lojistik Regresyon
Evet-Hayır TahminleriKarar EşiğiKanıt Olarak AğırlıklarBirden Fazla SınıfÖzet: Spam Filtresi7Aşırı Öğrenme
Eksik ve Aşırı ÖğrenmeÖğrenme EğrileriDüzenlileştirmeDoğrulama KümeleriÖzet: Bir Ağacı Ayarlama2En Yakın Komşular
k-NN Nasıl Karar Verirk'yi SeçmekKarar SınırlarıKomşular İçin ÖlçeklemeÖzet: Şarap Komşuları5Sınıflandırıcıları Değerlendirme
Karmaşıklık MatrisiKesinlik ve DuyarlılıkF1 SkoruDengesiz SınıflarROC EğrileriÖzet: Tarama Testi8Çapraz Doğrulama
K-Katlı DoğrulamaModelleri Adil Bir Şekilde KarşılaştırmaIzgara AramasıÖzet: Kaykay Tamiri11Proje: Penguen Türleri
Penguenlerle TanışınVerileri HazırlayınBir Model SeçinEn İyisini AyarlayınModeli Yayına AlınKendi başına pratik yap: Online Python derleyicisi