Model Değerlendirme ve Çapraz Doğrulama
Modelleri doğruluk, F1, ROC-AUC ve k katlı CV ile değerlendirin.
Model Değerlendirme ve Çapraz Doğrulama, CoddyKit'te ücretsiz bir Python Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Python Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Python Academy kursu toplamda 4 dersten oluşur.
Eğitim/Doğrulama/Sınama Bölmesi
Üçlü bir bölme kullanın: uydurmak için eğitim, hiperparametreleri ayarlamak için doğrulama, nihai performansı raporlamak için sınama. Geliştirme sırasında sınama kümesini asla kullanmayın.
from sklearn.model_selection import train_test_split
import numpy as np
X = np.random.rand(1000, 10)
y = (X[:,0] > 0.5).astype(int)
X_tr, X_rest, y_tr, y_rest = train_test_split(X, y, test_size=0.3)
X_val, X_te, y_val, y_te = train_test_split(X_rest, y_rest, test_size=0.5)Doğruluk Skoru
accuracy_score, doğru tahminlerin oranıdır. Dengeli sınıflarda kullanın; dengesiz verilerde F1 veya AUC'yi tercih edin.
from sklearn.metrics import accuracy_score
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
X, y = make_classification(random_state=0)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, random_state=0)
model = LogisticRegression().fit(X_tr, y_tr)
print("Accuracy:", accuracy_score(y_te, model.predict(X_te)))Kesinlik, Duyarlılık, F1
Dengesiz sınıflar için: kesinlik = TP/(TP+FP), duyarlılık = TP/(TP+FN), F1 = kesinlik ve duyarlılığın harmonik ortalamasıdır.
from sklearn.metrics import precision_score, recall_score, f1_score, classification_report
# Use classification_report for a full summary:
print(classification_report(y_te, model.predict(X_te)))
# shows precision, recall, f1 for each classKarışıklık Matrisi
Bir karışıklık matrisi doğru pozitifleri, yanlış pozitifleri, doğru negatifleri ve yanlış negatifleri gösterir.
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay
import matplotlib.pyplot as plt
cm = confusion_matrix(y_te, model.predict(X_te))
print(cm)
# [[TN FP]
# [FN TP]]ROC Eğrisi ve AUC
roc_auc_score, ROC eğrisinin altındaki alanı ölçer. AUC = 1.0 kusursuzdur; 0.5 rastgele tahmin anlamına gelir.
from sklearn.metrics import roc_auc_score, roc_curve
y_prob = model.predict_proba(X_te)[:,1]
print("AUC:", roc_auc_score(y_te, y_prob))
fpr, tpr, thresholds = roc_curve(y_te, y_prob)
# plot fpr vs tpr for the full ROC curveRegresyon Ölçütleri
Regresyon görevleri için mean_squared_error (MSE), root_mean_squared_error (RMSE) ve r2_score kullanın.
from sklearn.metrics import mean_squared_error, r2_score
y_pred = regression_model.predict(X_te)
mse = mean_squared_error(y_te, y_pred)
print("RMSE:", mse**0.5)
print("R²:", r2_score(y_te, y_pred))k Katlı Çapraz Doğrulama
cross_val_score, verileri k kata böler, k-1 katında eğitir, 1 katında değerlendirir ve bunu k kez tekrarlar. Tek bir bölmeden daha güvenilirdir.
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
X, y = make_classification(random_state=0)
scores = cross_val_score(LogisticRegression(), X, y, cv=10, scoring="accuracy")
print(f"{scores.mean():.3f} ± {scores.std():.3f}")StratifiedKFold
Her katın aynı sınıf dağılımına sahip olmasını sağlamak için StratifiedKFold kullanın — dengesiz veri kümeleri için kritik bir uygulamadır.
from sklearn.model_selection import StratifiedKFold, cross_val_score
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
X, y = make_classification(weights=[0.9,0.1], random_state=0)
cv = StratifiedKFold(n_splits=5)
scores = cross_val_score(LogisticRegression(), X, y, cv=cv, scoring="f1")
print("Stratified F1:", scores.mean())Yanlılık-Varyans Dengesi
Yüksek yanlılık = yetersiz uyum (model çok basit). Yüksek varyans = aşırı uyum (model çok karmaşık). Çapraz doğrulama, hangi sorunun bulunduğunu ortaya çıkarır.
# Underfitting: low train score AND low val score
# → increase model complexity, add features
# Overfitting: high train score, low val score
# → regularise, reduce complexity, get more data
from sklearn.model_selection import validation_curve
import numpy as np
train_sc, val_sc = validation_curve(DecisionTreeClassifier(), X, y, param_name="max_depth", param_range=range(1,10))İç İçe Çapraz Doğrulama
Tarafsız hiperparametre ayarlama AND değerlendirmesi için iç içe CV kullanın: iç döngü ayarlar, dış döngü değerlendirir.
from sklearn.model_selection import cross_val_score, GridSearchCV
from sklearn.svm import SVC
from sklearn.datasets import make_classification
X, y = make_classification(random_state=0)
gs = GridSearchCV(SVC(), {"C":[0.1,1,10]}, cv=5)
outer_scores = cross_val_score(gs, X, y, cv=5)
print("Nested CV accuracy:", outer_scores.mean())Kalibrasyon
Bir sınıflandırıcının olasılık tahminleri kötü kalibre edilmiş olabilir. Daha iyi olasılık tahminleri için CalibratedClassifierCV kullanın.
from sklearn.calibration import CalibratedClassifierCV
from sklearn.svm import SVC
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
X, y = make_classification(random_state=0)
X_tr, X_te, y_tr, y_te = train_test_split(X, y)
cal = CalibratedClassifierCV(SVC(), cv=5).fit(X_tr, y_tr)
print(cal.predict_proba(X_te[:3]))Kısa Kontrol
Modelleri değerlendirmek için çapraz doğrulama neden tek bir eğitim/sınama bölmesine tercih edilir?
Özet
Dengeli problemler için doğruluğu, dengesiz problemler için F1/AUC'yi kullanın. k katlı cross_val_score ile değerlendirme yapın, dengesiz veriler için StratifiedKFold kullanın ve tarafsız bir nihai tahmin elde etmek üzere hiperparametreleri ayarlarken iç içe CV uygulayın. Geliştirme sırasında sınama kümesine asla bakmayın.
Sıkça Sorulan Sorular
“Model Değerlendirme ve Çapraz Doğrulama” dersi ücretsiz mi?
Evet — “Model Değerlendirme ve Çapraz Doğrulama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Python Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Python Academy kursu toplamda 4 dersten oluşur.
“Model Değerlendirme ve Çapraz Doğrulama” dersinde ne öğreneceğim?
Modelleri doğruluk, F1, ROC-AUC ve k katlı CV ile değerlendirin. Python Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Python Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Python Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Model Değerlendirme ve Çapraz Doğrulama” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Python Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Python Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- scikit-learn API'si: fit, transform, predict
- Doğrusal Modeller: Regresyon ve Sınıflandırma
- Ağaç Tabanlı Modeller: Karar Ağaçları ve Rastgele Ormanlar
- Model Değerlendirme ve Çapraz Doğrulama