Menu
CoddyTech

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:

180 apel, rasa manis pada sumbu mendatar dan kerenyahan pada sumbu tegak, dalam tiga kelompok dengan bintang hitam di setiap pusatnya: manis dan renyah di kanan atas, lunak di bawah, asam dan renyah di kiri atas. Apel baru di kanan atas bergabung dengan cluster 0

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.

challenge icon

Tantangan

Mudah

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

  1. Latih KMeans pada X: 3 klaster, n_init=10, random_state=0.
  2. Gambarkan setiap klaster sebagai kelompok tersendiri, dengan label cluster 0 hingga cluster 2.
  3. Tandai pusat klaster dengan bintang hitam, dengan label centers. Tambahkan legenda dan tampilkan grafik.

Seperti ini, dari paus lain:

Grafik sebar berjudul Whale Dives, menit penyelaman pada sumbu horizontal dan waktu istirahat di permukaan pada sumbu vertikal: tiga klaster, penyelaman singkat dengan waktu istirahat panjang di kiri atas, penyelaman singkat dengan waktu istirahat singkat di bawah, penyelaman panjang di kanan, satu bintang hitam di setiap klaster, dan sebuah legenda

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