Skor Silhouette
Termasuk bagian Pembelajaran Tanpa Pengawasan dalam perjalanan Machine Learning di Coddy. Pelajaran 8 dari 51.
Inersia selalu membaik seiring bertambahnya k, jadi dibutuhkan titik siku. Silhouette mengajukan pertanyaan yang lebih adil kepada setiap titik: apakah titik ini lebih dekat dengan kelompoknya sendiri daripada dengan kelompok berikutnya?
Sebuah titik mendapat skor (b - a) / max(a, b): mendekati 1 jika cocok dalam kelompoknya, mendekati 0 jika berada di perbatasan, di bawah 0 jika berada di kelompok yang salah. Rata-rata skor untuk sebuah pengelompokan:
from sklearn.metrics import silhouette_score
for k in [2, 3, 4]:
km = KMeans(n_clusters=k, n_init=10, random_state=0)
km.fit(X)
print(k, f"{silhouette_score(X, km.labels_):.3f}")Untuk apel, ini mencetak:
2 0.534
3 0.657
4 0.545Nilainya mencapai puncak pada k terbaik, yaitu 3, saat titik-titik terasa paling cocok.
Tantangan
MudahDua peramal berbeda pendapat tentang jumlah jenis badai yang melanda pesisir mereka. Kode awal berisi 150 badai, angin puncak dan curah hujan, serta membaca k milik Ana, lalu milik Ben.
- Beri skor silhouette untuk setiap k, hingga 3 angka desimal.
- Cetak k siapa yang lebih cocok.
- Cetak k terbaik dari 2 hingga 8, beserta skornya.
Untuk pesisir lain:
Ana, k = 2: 0.512
Ben, k = 3: 0.574
Ben's k fits better
Best from 2 to 8: k = 3 (0.574)Coba sendiri
import numpy as np
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
# Jangan ubah baris-baris di bawah ini
rng = np.random.default_rng(6)
# Empat jenis badai: angin dan hujan yang umum, serta jumlah masing-masing
kinds = [(30, 8, 40), (12, 34, 35), (21, 21, 30), (11, 9, 45)]
parts = []
for w, r, n in kinds:
parts.append(np.column_stack([rng.normal(w, 2.5, n), rng.normal(r, 3, n)]))
# 150 badai di satu pesisir, masing-masing satu baris: kecepatan angin puncak (m/s) dan curah hujan (mm per jam)
storms = np.round(np.concatenate(parts), 1)
# Jumlah jenis badai menurut kedua peramal cuaca
k_ana = int(input())
k_ben = int(input())
# 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