Tujuan Pembelajaran
Setelah mengikuti pertemuan ini, mahasiswa diharapkan mampu menerapkan konsep dan keterampilan berikut secara mandiri.
- Memahami konsep klasifikasi dan algoritma KNN.
- Melatih KNeighborsClassifier dan memprediksi label.
- Memilih nilai K yang tepat untuk data.
- Menyelesaikan Kuis 1 atas materi pertemuan 1 sampai 7.
Klasifikasi adalah tugas supervised learning untuk menempatkan data ke salah satu kategori tersedia, misalnya menentukan email spam, mendiagnosis jenis penyakit, atau mengenali digit tulisan tangan. Berbeda dari regresi yang mengeluarkan angka, klasifikasi mengeluarkan label.Menjelaskan bahwa KNN berbeda dari model lain karena tidak belajar parameter selama pelatihan; KNN menyimpan data dan menghitung jarak saat prediksi. Inilah sebabnya model ini disebut instance-based.
Bagaimana KNN Bekerja
K-Nearest Neighbors dikelompokkan sebagai model berbasis instance: ia tidak melatih parameter, melainkan menyimpan data latih dan menghitung jarak setiap kali menerima data baru. Kelas diputuskan dari mayoritas label K tetangga terdekat. Nilai K kecil membuat model peka pada gangguan, nilai K besar dapat menghaluskan pola berlebihan.Menjelaskan pentingnya menormalisasi fitur sebelum KNN, karena penghitungan jarak sangat sensitif terhadap satuan. Fitur dengan angka besar dapat mendominasi jarak dan menyesatkan hasil jika tidak dinormalisasi.
from sklearn.datasets import load_digits
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
data = load_digits()
X_train, X_test, y_train, y_test = train_test_split(
data.data, data.target, test_size=0.3, random_state=42
)
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
acc = knn.score(X_test, y_test)
print("Akurasi KNN (K=3):", round(acc, 4))
Dataset load_digits berisi gambar digit tulisan tangan. KNN membandingkan vektor ciri tiap gambar dengan digit terdekat pada data latih untuk memutuskan labelnya.
Memilih Nilai K
Cara sederhana memilih K adalah mencoba beberapa nilai dan mengambil yang memberi akurasi data uji tertinggi. Perulangan di bawah memberi gambaran hubungan besar K terhadap akurasi.
akurasi = []
for k in range(1, 21):
model = KNeighborsClassifier(n_neighbors=k)
model.fit(X_train, y_train)
akurasi.append(model.score(X_test, y_test))
best = akurasi.index(max(akurasi)) + 1
print("K terbaik:", best)
print("Akurasi tertinggi:", round(max(akurasi), 4))
Kuis 1
Bagian akhir pertemuan digunakan untuk Kuis 1 yang mencakup materi pertemuan 1 sampai 7: dasar Python, NumPy dan Pandas, pengolahan data, EDA, visualisasi, jenis machine learning, serta linear regression. Kuis dikerjakan mandiri dalam waktu yang disediakan dan menjadi penilaian tengah.
Langkah Praktik
Tahapan KNN sangat sederhana, sehingga praktik ini cocok untuk membiasakan Anda dengan pola umum melatih dan mengevaluasi model Scikit-learn.
- Muat dataset iris atau digits lalu bagi data 70:30.
- Latih KNeighborsClassifier dengan K=5 dan hitung akurasi.
- Uji beberapa nilai K dari 1 sampai 20 lalu pilih K terbaik.
- Prediksi label satu sampel baru dan bandingkan dengan aslinya.
- Kerjakan Kuis 1 secara mandiri sesuai waktu yang ditentukan.
Setelah menemukan K terbaik, coba juga menjelaskan mengapa nilai tersebut bekerja lebih baik pada dataset yang digunakan.
Latihan
Kuis 1 menutup pertemuan ini; pastikan seluruh latihan tuntas sebelum kuis karena materinya saling berkaitan.
- Jelaskan bagaimana KNN memutuskan kelas untuk sebuah data baru.
- Ubah nilai K dari 3 menjadi 15 dan bandingkan akurasi yang dihasilkan.
- Beri contoh masalah klasifikasi lain di kehidupan nyata selain pengenalan digit.
