Materi
k-NN adalah klasifikasi paling sederhana: untuk menebak kelas data baru, cari k data latih yang jaraknya paling dekat, lalu ambil kelas yang paling banyak di antara mereka. User Guide scikit-learn menyebut cara ini instance-based: model tidak membangun rumus, ia menyimpan data latih dan menghitung jarak saat predict. Jarak bawaannya jarak Euclid, yaitu garis lurus antara dua titik.
KNeighborsClassifier memakai n_neighbors=5 bila tidak diisi. k kecil membuat tebakan mengikuti satu-dua tetangga, sehingga peka terhadap data yang aneh; k besar membuat batas antarkelas lebih halus tetapi bisa mengaburkan kelompok kecil. Nilai k dipilih dengan membandingkan skor di data yang tidak dipakai untuk fit.
from sklearn.neighbors import KNeighborsClassifier
# panjang, lebar daun (cm) -> jenis tanaman
X = [[4, 2], [5, 2], [4, 3], [9, 6], [10, 5], [9, 5]]
y = ["A", "A", "A", "B", "B", "B"]
knn = KNeighborsClassifier(n_neighbors=3).fit(X, y)
print(knn.predict([[8, 5]])) # ['B']
print(knn.score(X, y)) # 1.0Method score pada classifier mengembalikan akurasi: porsi tebakan yang benar, sama dengan accuracy_score(y_test, model.predict(X_test)).