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:
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.
Tantangan
SedangApakah lebih banyak rekaman akan membantu membedakan dua spesies burung hantu? Kode awal membagi 600 panggilan dan menyiapkan kedua model serta grafik.
- Untuk setiap
ndisizes, latih kedua model menggunakannbaris data latih pertama, lalu simpan akurasi pengujiannya. - Cetak peningkatan skor setiap model, yaitu skor terakhir dikurangi skor pertama, dengan 3 angka desimal.
- Plot keduanya terhadap
sizes, gunakanmarker="o", beri labellogisticdantree, lalu tambahkan legenda.
Burung hantu dari hutan lain mencetak:
Logistic gains 0.053 from more data
Tree gains 0.160 from more datalalu menggambar grafik ini. Coddy kemudian menjelaskan grafikmu.
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
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pembelajaran Terawasi
1Model Pertamamu
Belajar dari ContohData Latih dan Data UjiMelatih dan MemprediksiMenilai ModelRangkuman: Penyortir Benih4Regresi Logistik
Prediksi Ya atau TidakAmbang KeputusanBobot sebagai BuktiBeberapa KelasRangkuman: Filter Spam7Overfitting
Underfitting dan OverfittingKurva PembelajaranRegularisasiSet ValidasiRingkasan: Menyetel Pohon2Tetangga Terdekat
Cara k-NN MenentukanMemilih kBatas KeputusanPenskalaan untuk TetanggaRingkasan: Tetangga Wine5Mengukur Model Klasifikasi
Matriks KonfusiPresisi dan RecallSkor F1Kelas Tidak SeimbangKurva ROCRangkuman: Tes SkriningLatihan sendiri: Compiler Python online