K-Means w scikit-learn
Część sekcji Uczenie nienadzorowane ścieżki Machine Learning w Coddy. Lekcja 4 z 51.
scikit-learn wykonuje za Ciebie całą pętlę k-means — tutaj dla 180 jabłek ocenionych pod względem słodyczy i chrupkości:
Dopasuj tylko do X, bez 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))Wypisuje numery klastrów dla 8 wierszy, a następnie po jednym wierszu na każdy środek:
[2 0 0 1 2 0 1 1]
[[7. 7.5]
[6. 3. ]
[2.9 8.1]]n_init=10 próbuje 10 początkowych ustawień i zachowuje to z najbardziej zwartymi skupieniami. km.predict([[8.6, 9.2]]) przypisuje nowe jabłko do najbliższego środka, [0].
labels = km.fit_predict(X) wykonuje obie czynności naraz: dopasowuje model, a następnie zwraca labels_.
Liczby są tylko nazwami: w przypadku innych danych klaster 0 może oznaczać dowolną grupę.
Wyzwanie
ŁatwyBiolog zarejestrował 150 nurkowań jednego humbaka: czas nurkowania i odpoczynek na powierzchni po nim. Czy istnieją różne rodzaje nurkowania? Kod początkowy przygotowuje wykres.
- Dopasuj KMeans do
X: 3 klastry,n_init=10,random_state=0. - Przedstaw każdy klaster jako osobną grupę, oznaczoną od
cluster 0docluster 2. - Oznacz środki czarnymi gwiazdkami, podpisanymi
centers. Dodaj legendę i wyświetl wykres.
Tak wygląda to u innego wieloryba:
Coddy opisze twój wykres.
Spróbuj swoich sił
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# Nie zmieniaj poniższych wierszy
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 nurkowań jednego humbaka: czas nurkowania i odpoczynku na powierzchni po nim, w minutach
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)")
# Napisz swój kod poniżej
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Uczenie nienadzorowane
1Znajdowanie grup
Uczenie się bez etykietMierzenie podobieństwaK-Means krok po krokuK-Means w scikit-learnPodsumowanie: członkowie siłowni4Klasteryzacja hierarchiczna
Łączenie krok po krokuModele aglomeracyjneDendrogramyPodsumowanie: rasy psów7PCA w praktyce
Poznajemy 64 wymiarySkładowe jako wzorceKompresuj i odtwórzPCA przed modelemPodsumowanie: skaner twarzy10Projekt: Odkrywca cyfr
Przyjrzyj się cyfromZmniejsz wymiar za pomocą PCAGrupuj cyfryNazwij grupyZnajdź te nietypowe2Wybór k
InercjaMetoda łokciaWyniki silhouetteSkalowanie przed klasteryzacjąPodsumowanie: strefy dostawPoćwicz samodzielnie: Kompilator Python online