Menu
CoddyTech

Öğ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ç:

25'ten 800'e kadar eğitim satırlarına göre doğruluk. Eğitim çizgisi boyunca 1.0'da kalır; test çizgisi 0.80'den 0.94'e yükselir

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.

challenge icon

Görev

Orta

Daha 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.

  1. sizes içindeki her n için her iki modeli de ilk n eğitim satırında eğit; test doğruluklarını sakla.
  2. Her modelin kazancını, yani son puan eksi ilk puanı, 3 ondalık basamakla yazdır.
  3. Her ikisini de sizes değerlerine göre, marker="o" ile, logistic ve tree etiketleriyle 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 data

ve bu grafiği çiziyor. Coddy daha sonra seninkini açıklıyor.

Baykuş Çağrıları: Öğrenme Eğrileri. Lojistik çizgi 0.64'ten yaklaşık 0.69'a yükselip yatay kalıyor; ağaç çizgisi 0.67'den 0.83'e istikrarlı biçimde tırmanı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
quiz iconKendini test et

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

Kendi başına pratik yap: Online Python derleyicisi