K-Means secara Manual
Termasuk bagian Pembelajaran Tanpa Pengawasan dalam perjalanan Machine Learning di Coddy. Pelajaran 3 dari 51.
K-means mengulangi putaran yang terdiri dari dua langkah untuk menemukan k cluster. Tetapkan: setiap titik bergabung dengan pusat terdekatnya. Pindahkan: setiap pusat berpindah ke nilai rata-rata titik-titiknya. Tiga gerobak es krim:
Satu putaran di NumPy, dengan dists sebagai tabel jarak yang memiliki satu kolom untuk setiap pusat:
labels = dists.argmin(axis=1) # tetapkan
for c in range(k):
centers[c] = X[labels == c].mean(axis=0) # pindahkanargmin(axis=1) memberikan kolom terkecil di setiap baris, yaitu pusat terdekatnya. Dari satu putaran ke putaran berikutnya, pusat-pusat akan stabil. Saat tidak ada yang bergerak, k-means selesai.
Tantangan
MudahProdusen kaus menyesuaikan ulang ukuran S, M, dan L untuk pelanggan masa kini. Bagan ukuran lamanya menjadi titik pusat awal, distances(people, centers) menghasilkan tabel jarak, dan program membaca jumlah perulangan yang harus dijalankan.
- Setiap perulangan: tetapkan setiap orang, lalu pindahkan setiap titik pusat.
- Cetak titik pusat setiap ukuran dan jumlah orang yang mendapatkannya pada perulangan terakhir, seperti di bawah ini.
Untuk produsen lain:
Rounds run: 2
S: chest 87.3 cm, length 65.1 cm, 14 people
M: chest 95.0 cm, length 68.9 cm, 31 people
L: chest 104.8 cm, length 72.6 cm, 45 peopleCoba sendiri
import numpy as np
# Jangan ubah baris-baris di bawah ini
rng = np.random.default_rng(12)
chest = np.concatenate([rng.normal(88, 3, 30), rng.normal(98, 3.5, 35), rng.normal(110, 4, 25)])
length = np.concatenate([rng.normal(66, 1.8, 30), rng.normal(70, 2, 35), rng.normal(75, 2.2, 25)])
# 90 pelanggan, masing-masing satu baris: lingkar dada dan panjang dalam cm
people = np.round(np.column_stack([chest, length]), 1)
# Bagan ukuran lama menentukan titik pusat awal: S, M, L
sizes = ["S", "M", "L"]
centers = np.array([[85.0, 64.0], [90.0, 67.0], [96.0, 69.0]])
rounds = int(input())
# Tabel jarak: satu baris per orang, satu kolom per titik pusat
def distances(X, centers):
table = np.zeros((len(X), len(centers)))
for c in range(len(centers)):
table[:, c] = np.sqrt(((X - centers[c]) ** 2).sum(axis=1))
return table
# 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