Metode Siku
Termasuk bagian Pembelajaran Tanpa Pengawasan dalam perjalanan Machine Learning di Coddy. Pelajaran 7 dari 51.
Gambarkan inertia terhadap k. Saat setiap pusat baru memisahkan kelompok nyata, inertia turun tajam, lalu kurvanya mendatar. Tekukannya, siku, adalah nilai k yang baik:
Pedoman praktis: berhenti saat satu pusat tambahan mengurangi inertia kurang dari seperempat. Pengurangan pada data apel: 56%, lalu 69%, lalu hanya 15%. Jadi k = 3:
ax.plot(ks, inertias, marker="o")
ax.axvline(3, linestyle="--")Kurva yang landai tanpa tekukan berarti tidak ada kelompok yang jelas. Pelajaran berikutnya menghadirkan penilai kedua.
Tantangan
MudahSebuah aplikasi tanaman mengelompokkan tanaman hias berdasarkan kebutuhan cahaya dan air ke dalam rencana perawatan. Kode awal berisi nilai inertia untuk k from 1 to 8, sebuah grafik, dan cutoff.
- Mulai dari k = 1 dan terus naik, berhentilah saat k berikutnya mengurangi inertia kurang dari
cutoff. Cetak nilai k tersebut. - Gambarkan inertia berdasarkan k dengan titik-titik, garis vertikal putus-putus pada nilai k pilihanmu, lalu tampilkan grafiknya.
Untuk aplikasi lain, cutoff 0.25:
Care plans: 3Selanjutnya, 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(17)
# Empat jenis tanaman: kebutuhan cahaya dan air yang umum, serta jumlah masing-masing
kinds = [(8.5, 2, 35), (2.5, 7.5, 30), (5, 5, 30), (8, 8, 25)]
parts = []
for l, w, n in kinds:
parts.append(np.column_stack([rng.normal(l, 0.8, n), rng.normal(w, 0.8, n)]))
# 120 tanaman hias dalam ruangan, masing-masing satu baris: kebutuhan cahaya dan air, dengan skor 1 hingga 10
plants = np.clip(np.round(np.concatenate(parts), 1), 1, 10)
# Inersia untuk k = 1 hingga 8, dari Inertia
ks = list(range(1, 9))
inertias = []
for k in ks:
km = KMeans(n_clusters=k, n_init=10, random_state=0)
km.fit(plants)
inertias.append(km.inertia_)
cutoff = float(input())
fig, ax = plt.subplots()
ax.set_title("Elbow: Care Plans")
ax.set_xlabel("k")
ax.set_ylabel("Inertia")
# 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