Menu
CoddyTech

Cluster dibanding Label yang Diketahui

Termasuk bagian Pembelajaran Tanpa Pengawasan dalam perjalanan Machine Learning di Coddy. Pelajaran 13 dari 51.

Jika label tersedia, tetapi k-means belum pernah melihatnya, periksa hasil yang ditemukan: pd.crosstab menghitung setiap pasangan cluster dan label.

labels = KMeans(n_clusters=3, n_init=10, random_state=0).fit_predict(X)
print(pd.crosstab(labels, kind))

Untuk 150 biji kopi dari 3 jenis, yang dikelompokkan berdasarkan panjang dan kandungan kafein: satu baris untuk setiap klaster, satu kolom untuk setiap jenis:

Tabel 3 kali 3 berisi jumlah, klaster ditampilkan pada baris dan jenis kopi pada kolom: arabika, liberika, robusta. Klaster 0 berisi 49 biji robusta; klaster 1 berisi 48 biji arabika, 3 biji liberika, dan 1 biji robusta; klaster 2 berisi 47 biji liberika dan 2 biji arabika

Setiap klaster sebagian besar berisi satu jenis, hanya 6 kacang yang tersesat. Dan k-means tidak pernah melihat label.

Namun, cluster bukan class. Kecocokan yang dekat berarti class berbeda dalam datanya. Kecocokan yang buruk adalah temuan, bukan bug.

challenge icon

Tantangan

Sedang

Apakah cluster k-means menemukan spesies iris? Kode awal menormalisasi skala bunga, menyimpan namanya di species, membaca k, lalu mengelompokkannya.

  1. Buat tabulasi silang antara cluster dan spesies.
  2. Untuk setiap spesies, tampilkan jumlah terbesarnya dalam satu cluster, dari total jumlahnya.
  3. Hitung cluster yang hanya berisi satu spesies.

Untuk kebun lain dan k = 3:

setosa: 48 of 50 share a cluster
versicolor: 41 of 50 share a cluster
virginica: 33 of 50 share a cluster
Clusters with one species: 0 of 3

Coba sendiri

import pandas as pd
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans

# 150 bunga iris yang telah diskalakan, beserta nama spesies masing-masing yang disembunyikan dari k-means
iris = load_iris()
X = StandardScaler().fit_transform(iris.data)
species = iris.target_names[iris.target]

k = int(input())
labels = KMeans(n_clusters=k, n_init=10, random_state=0).fit_predict(X)

# 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