Menu
CoddyTech

Memilih k

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

Nilai k mana yang cocok untuk cabai? Coba beberapa nilai dan nilai setiap model dua kali: pada baris yang dipelajarinya, akurasi latih, dan pada baris tersembunyi, akurasi uji.

Akurasi berdasarkan k untuk cabai, dua garis. Akurasi latih dimulai pada 1.0 untuk k = 1 lalu menurun. Akurasi uji dimulai pada 0.8, mencapai puncak 0.92 untuk k = 13, dan kedua garis turun hingga sekitar 0.7 setelah k = 80

Pada k = 1, setiap cabai menjadi tetangga terdekatnya sendiri, sehingga model menghafal: hasilnya sempurna pada baris-barisnya, tetapi lebih buruk pada baris baru. Nilai k yang sangat besar mengaburkan kelompok-kelompok tersebut.

ks = range(1, 120, 6)
train_acc = []
test_acc = []
for k in ks:
    model = KNeighborsClassifier(n_neighbors=k)
    model.fit(X_train, y_train)
    train_acc.append(model.score(X_train, y_train))
    test_acc.append(model.score(X_test, y_test))

Pilih nilai k saat akurasi pengujian mencapai puncaknya. Untuk saat ini, bab 7 menunjukkan penilai yang lebih adil.

challenge icon

Tantangan

Mudah

Sebuah klub sepak bola mencatat tembakan di shots.csv: jarak, sudut, dan goal atau miss. Nilai k mana yang memprediksi paling baik? Kode awal membagi data, mencantumkan ks, dan memberi label pada grafik.

  1. Untuk setiap k, latih model dan simpan akurasi pelatihan dan pengujiannya.
  2. Cetak k terbaik berdasarkan akurasi pengujian, seperti di bawah ini.
  3. Gambarkan kedua daftar terhadap ks, dengan label train dan test, serta legenda.

Untuk klub lain:

Best k: 9 (test accuracy 0.783)

Tembakan klub lain: akurasi berdasarkan k dari 1 hingga 41. Akurasi pelatihan turun dari 0.99 pada k = 1 menjadi sekitar 0.71. Akurasi pengujian naik dari 0.68 ke puncak 0.78 pada k = 9, lalu turun menjadi 0.7

Coddy kemudian menjelaskan grafikmu.

Coba sendiri

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier

# Satu baris untuk setiap tembakan: jarak ke gawang (m), sudut terhadap mulut gawang (derajat), gol atau meleset
shots = pd.read_csv("shots.csv")
X = shots[["distance_m", "angle_deg"]]
y = shots["result"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
ks = range(1, 42, 4)  # k = 1, 5, 9, ..., 41

fig, ax = plt.subplots()
ax.set_title("Shots: Accuracy by k")
ax.set_xlabel("k (neighbors)")
ax.set_ylabel("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