Materi
k-means adalah pembelajaran tak terawasi: tidak ada y. Algoritmanya, sesuai User Guide scikit-learn, memilih k titik pusat, memasukkan setiap sampel ke pusat terdekat, memindahkan setiap pusat ke rata-rata anggotanya, lalu mengulang sampai pusatnya tidak bergeser lagi. Yang diminimalkan adalah inertia: jumlah kuadrat jarak setiap sampel ke pusat klasternya.
KMeans(n_clusters=3, random_state=0) lalu fit(X) menghasilkan labels_ (nomor klaster tiap baris), cluster_centers_ (koordinat tiap pusat), dan inertia_. predict(X_baru) memasukkan data baru ke pusat terdekat. Karena titik pusat awal dipilih acak, random_state membuat hasilnya bisa diulang, dan n_init mengatur berapa kali algoritma diulang dari pusat awal berbeda; yang disimpan hasil dengan inertia terkecil.
from sklearn.cluster import KMeans
# nilai matematika, nilai bahasa
nilai = [[90, 40], [85, 45], [88, 42], [40, 90], [45, 85], [42, 88]]
km = KMeans(n_clusters=2, n_init=10, random_state=0).fit(nilai)
print(km.labels_) # dua kelompok, tiga siswa per kelompok
print(km.cluster_centers_)Banyak klaster k ditentukan manusia. Inertia selalu turun ketika k naik, sampai 0 ketika setiap sampel menjadi klasternya sendiri, jadi k tidak dipilih dari inertia terkecil. Cara yang dipakai adalah melihat di k berapa penurunannya mulai melandai.