Menu
CoddyTech

Kurva Pembelajaran

Termasuk bagian Pembelajaran Terawasi dalam perjalanan Machine Learning di Coddy. Pelajaran 33 dari 58.

Apakah lebih banyak data akan membuat modelmu lebih baik? Kurva pembelajaran menunjukkannya: akurasi pengujian saat ukuran set pelatihan bertambah. Di sini, pohon mendalam pada data two-moons:

Akurasi terhadap jumlah baris pelatihan dari 25 hingga 800. Garis pelatihan tetap berada di 1.0; garis pengujian naik dari 0.80 menjadi 0.94

Pohon menghafal setiap set pelatihan, tetapi setiap baris tambahan mengajarkan sesuatu yang nyata. Model yang fleksibel paling banyak memperoleh manfaat dari data.

Latih dengan n baris pelatihan pertama, lalu ukur skor pada baris pengujian yang sama setiap kali:

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")

Masih terus naik di tepi kanan? Lebih banyak data akan membantu.

challenge icon

Tantangan

Sedang

Apakah lebih banyak rekaman akan membantu membedakan dua spesies burung hantu? Kode awal membagi 600 panggilan dan menyiapkan kedua model serta grafik.

  1. Untuk setiap n di sizes, latih kedua model menggunakan n baris data latih pertama, lalu simpan akurasi pengujiannya.
  2. Cetak peningkatan skor setiap model, yaitu skor terakhir dikurangi skor pertama, dengan 3 angka desimal.
  3. Plot keduanya terhadap sizes, gunakan marker="o", beri label logistic dan tree, lalu tambahkan legenda.

Burung hantu dari hutan lain mencetak:

Logistic gains 0.053 from more data
Tree gains 0.160 from more data

lalu menggambar grafik ini. Coddy kemudian menjelaskan grafikmu.

Panggilan burung hantu: kurva pembelajaran. Garis logistic naik dari 0.64 ke sekitar 0.69 lalu mendatar, sedangkan garis tree terus naik dari 0.67 ke 0.83

Coba sendiri

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

# Jangan ubah baris di bawah ini: 600 suara burung hantu, nada (Hz), dan durasi (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)
# Spesies 1, burung hantu cokelat, bersuara lebih lama untuk nadanya; beberapa catatan lapangan keliru
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")

# Tulis kodemu di bawah ini
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pembelajaran Terawasi

Latihan sendiri: Compiler Python online