CodeBlanks Logo Icon CodeBlanks

Çizgi grafiği

Çizgi grafiği, zaman içindeki değişimi gösterir.

Çizgi grafiği

Çizgi grafiği sıralı bir değişkene (zaman, epoch, hiperparametre) göre değişimi gösterir. ML'deki en önemli kullanımı öğrenme ve doğrulama eğrileridir:

derinlik = [1, 2, 3, 5, 8]
ax.plot(derinlik, egitim, marker="o", label="eğitim")
ax.plot(derinlik, dogrulama, marker="o", label="doğrulama")
ax.legend()

İki eğrinin ayrıldığı nokta aşırı öğrenmenin başladığı yerdir; grafik bunu tablodan çok daha hızlı gösterir.

Öğrenme eğrisi

learning_curve, eğitim kümesi büyüdükçe skorların nasıl değiştiğini verir. Doğrulama skoru hâlâ artıyorsa daha fazla veri yarar; eğriler birleşmiş ve düşükse daha karmaşık model gerekir:

from sklearn.model_selection import learning_curve
n, tr, va = learning_curve(model, X, y, cv=5, train_sizes=[0.2, 0.5, 1.0])
ax.plot(n, tr.mean(axis=1), label="eğitim")
ax.plot(n, va.mean(axis=1), label="doğrulama")

"Daha çok veri mi, daha iyi model mi?" sorusunun cevabı bu grafiktedir.

Uygulama Öğrenme eğrisi

Iris'te KNeighborsClassifier() için learning_curve çalıştır (cv=5, train_sizes=[0.3, 0.6, 1.0], shuffle=True, random_state=0). Doğrulama ortalamalarını çizgi grafiğine çizip kaydet; eğitim boyutlarını ve doğrulama ortalamalarını (round(3)) alt alta yazdır.

Başlangıç kodu

model.py
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.model_selection import learning_curve
from sklearn.neighbors import KNeighborsClassifier

X, y = load_iris(return_X_y=True)

# buraya yaz

Örnek çözüm

model.py
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.model_selection import learning_curve
from sklearn.neighbors import KNeighborsClassifier

X, y = load_iris(return_X_y=True)

n, tr, va = learning_curve(KNeighborsClassifier(), X, y, cv=5, train_sizes=[0.3, 0.6, 1.0], shuffle=True, random_state=0)
fig, ax = plt.subplots()
ax.plot(n, va.mean(axis=1), marker="o")
fig.savefig("ogrenme.png")
print(n)
print(va.mean(axis=1).round(3))

Beklenen çıktı

[ 36  72 120]
[0.947 0.953 0.973]

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Eğitim eğrisi yükselirken doğrulama eğrisi düşmeye başlıyorsa ne olmaktadır?

  • Veri azaldı
  • Aşırı öğrenme başlıyor Doğru cevap
  • Eksik öğrenme
  • Model yakınsadı

Açıklama: Model eğitim verisine özgü ayrıntıları öğrenmeye başlamıştır.

2 Noktaları daire işaretiyle göster.

Soru
ax.plot(x, y, ____="o")
Cevap
ax.plot(x, y, marker="o")

Açıklama: marker her veri noktasına bir işaret koyar.

3 Eğri durumlarını eşleştir.

Kavram Anlamı
Ayrılan eğriler Aşırı öğrenme
Birleşik ve düşük Eksik öğrenme
Doğrulama hâlâ artıyor Daha çok veri yarar
learning_curve Veri boyutuna göre skor

Başlangıç bölümündeki tüm dersler