Öğrenme Eğrileri
Coddy'nin Machine Learning Journey'sinin Denetimli Öğrenme bölümünün bir parçası. Ders 33 / 58.
Daha fazla veri modelinizi iyileştirir mi? Bir öğrenme eğrisi bunu gösterir: eğitim kümesi büyüdükçe test doğruluğu. Burada, iki ay veri kümesi üzerinde derin bir ağaç:
Ağaç her eğitim kümesini ezberler, ancak her ek satır ona gerçek bir şey öğretir. Esnek modeller veriden en çok yararlanır.
İlk n eğitim satırına uydurun, ardından her seferinde aynı test satırlarında puanlayın:
sizes = [25, 50, 100, 200, 400, 800]
test_scores = []
for n in sizes:
tree = DecisionTreeClassifier(random_state=0)
tree.fit(X_train[:n], y_train[:n])
test_scores.append(tree.score(X_test, y_test))
ax.plot(sizes, test_scores, marker="o")Sağ kenarda hâlâ yükseliyor mu? Daha fazla veri yardımcı olur.
Görev
OrtaDaha fazla kayıt iki baykuş türünü ayırt etmeye yardımcı olur mu? Başlangıç kodu 600 çağrıyı böler ve her iki modeli ve grafiği hazırlar.
sizesiçindeki herniçin her iki modeli de ilkneğitim satırında eğit; test doğruluklarını sakla.- Her modelin kazancını, yani son puan eksi ilk puanı, 3 ondalık basamakla yazdır.
- Her ikisini de
sizesdeğerlerine göre,marker="o"ile,logisticvetreeetiketleriyle ve bir göstergeyle çiz.
Başka bir ormandaki baykuşlar şunu yazdırıyor:
Logistic gains 0.053 from more data
Tree gains 0.160 from more datave bu grafiği çiziyor. Coddy daha sonra seninkini açıklıyor.
Kendin dene
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
# Aşağıdaki satırları değiştirmeyin: 600 baykuş ötüşü, ses perdesi (Hz) ve süre (s)
rng = np.random.default_rng(23)
pitch = np.round(rng.uniform(300, 900, 600))
length = np.round(rng.uniform(0.2, 2.0, 600), 2)
# Tür 1, alaca baykuş, ses perdesine göre daha uzun öter; birkaç saha notu hatalıdır
longer = length > 0.5 + 6.4 * ((pitch - 600) / 600) ** 2
wrong_note = rng.random(600) < 0.05
species = np.where(longer != wrong_note, 1, 0)
X = np.column_stack([pitch, length])
X_train, X_test, y_train, y_test = train_test_split(X, species, test_size=0.25, random_state=0)
sizes = [25, 50, 100, 200, 400]
logistic = LogisticRegression(max_iter=1000)
tree = DecisionTreeClassifier(random_state=0)
fig, ax = plt.subplots()
ax.set_title("Owl Calls: Learning Curves")
ax.set_xlabel("Training rows")
ax.set_ylabel("Test accuracy")
# Kodunuzu aşağıya yazın
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