Menu
CoddyTech

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:

Dua kurva inertia untuk k from 1 to 8. Kiri, apel: penurunan tajam hingga k = 3, lalu hampir mendatar, dengan garis putus-putus di 3. Kanan, titik-titik tanpa kelompok: kurva mulus tanpa tekukan

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.

challenge icon

Tantangan

Mudah

Sebuah 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.

  1. Mulai dari k = 1 dan terus naik, berhentilah saat k berikutnya mengurangi inertia kurang dari cutoff. Cetak nilai k tersebut.
  2. 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: 3

Kurva inertia berjudul Elbow: Care Plans untuk k from 1 to 8, dengan sebuah titik pada setiap k: penurunan tajam hingga k = 3, lalu hampir datar, dan garis vertikal putus-putus pada 3

Selanjutnya, 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
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pembelajaran Tanpa Pengawasan

Latihan sendiri: Compiler Python online