K-Means dengan scikit-learn
Termasuk bagian Pembelajaran Tanpa Pengawasan dalam perjalanan Machine Learning di Coddy. Pelajaran 4 dari 51.
scikit-learn menjalankan seluruh perulangan k-means untukmu, pada 180 apel yang dinilai berdasarkan rasa manis dan kerenyahan:
Lakukan fitting hanya dengan X, tanpa y:
from sklearn.cluster import KMeans
km = KMeans(n_clusters=3, n_init=10, random_state=0)
km.fit(X)
print(km.labels_[:8])
print(km.cluster_centers_.round(1))Ini mencetak nomor cluster untuk 8 baris, lalu satu baris untuk setiap pusat:
[2 0 0 1 2 0 1 1]
[[7. 7.5]
[6. 3. ]
[2.9 8.1]]n_init=10 mencoba 10 titik awal dan memilih hasil dengan kelompok paling rapat. km.predict([[8.6, 9.2]]) memberikan pusat terdekat untuk apel baru tersebut, [0].
labels = km.fit_predict(X) melakukan keduanya sekaligus: menyesuaikan model, lalu mengembalikan labels_.
Angka-angka itu hanya nama: pada data lain, cluster 0 bisa menjadi grup mana pun.
Tantangan
MudahSeorang ahli biologi mencatat 150 kali penyelaman seekor paus bungkuk: durasi penyelaman dan waktu istirahat di permukaan setelahnya. Apakah ada jenis penyelaman yang berbeda? Kode awal menyiapkan grafik.
- Latih KMeans pada
X: 3 klaster,n_init=10,random_state=0. - Gambarkan setiap klaster sebagai kelompok tersendiri, dengan label
cluster 0hinggacluster 2. - Tandai pusat klaster dengan bintang hitam, dengan label
centers. Tambahkan legenda dan tampilkan grafik.
Seperti ini, dari paus lain:
Coddy menjelaskan grafikmu.
Coba sendiri
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# Jangan ubah baris-baris di bawah ini
rng = np.random.default_rng(14)
dive = np.concatenate([rng.normal(4, 1.0, 60), rng.normal(12, 2.0, 50), rng.normal(2.5, 0.7, 40)])
rest = np.concatenate([rng.normal(1.5, 0.5, 60), rng.normal(4, 1.0, 50), rng.normal(8, 1.5, 40)])
# 150 penyelaman seekor paus bungkuk: lama penyelaman dan waktu istirahat di permukaan setelahnya, dalam menit
X = np.round(np.clip(np.column_stack([dive, rest]), 0.5, None), 1)
fig, ax = plt.subplots()
ax.set_title("Whale Dives")
ax.set_xlabel("Dive (min)")
ax.set_ylabel("Surface rest (min)")
# Tulis kodemu di bawah ini
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pembelajaran Tanpa Pengawasan
1Menemukan Kelompok
Belajar Tanpa LabelMengukur KemiripanK-Means secara ManualK-Means dengan scikit-learnRangkuman: Anggota Gym4Pengelompokan Hierarkis
Penggabungan Langkah demi LangkahModel AglomeratifDendrogramRingkasan: Ras Anjing7PCA dalam Praktik
Melihat 64 DimensiKomponen sebagai PolaKompres dan RekonstruksiPCA Sebelum ModelRangkuman: Pemindai Wajah10Proyek: Penjelajah Digit
Amati DigitnyaPerkecil dengan PCAKelompokkan DigitBeri Nama pada KelompokTemukan yang Tidak BiasaLatihan sendiri: Compiler Python online