Menu
CoddyTech

Nazwij grupy

Część sekcji Uczenie nienadzorowane ścieżki Machine Learning w Coddy. Lekcja 46 z 51.

Klastry są oznaczone numerami, a nie nazwami. Teraz możesz użyć etykiet: tabela krzyżowa zlicza, które cyfry trafiły do poszczególnych klastrów, na przykład te jedynki, siódemki i dziewiątki w 3 klastrach:

Tabela 3 na 3 z liczebnościami: klastry w wierszach, a cyfry 1, 7 i 9 w kolumnach. Największa liczebność w każdym wierszu jest obramowana: klaster 0 zawiera 166 dziewiątek, klaster 1 — 176 siódemek, a klaster 2 — 154 jedynki

Nazwij każdy klaster najczęściej występującą w nim cyfrą. Obrazy przedstawiające tę cyfrę w klastrze uznaj za poprawnie nazwane:

ct = pd.crosstab(km.labels_, y)
names = ct.idxmax(axis=1)      # kolumna o największej wartości w każdym wierszu
right = ct.max(axis=1).sum()
print(names.tolist(), right)

To wypisuje [9, 7, 1] 496: 496 z 541 skanów nazwano poprawnie, według grup znalezionych bez ani jednej etykiety.

challenge icon

Wyzwanie

Średni

Nazwij swoje 10 klastrów. Kod początkowy zawiera km, dopasowane bez etykiet; teraz możesz użyć cyfr z y.

  1. Utwórz tabelę krzyżową klastrów względem y i nazwij każdy klaster od najczęściej występującej w nim cyfry.
  2. W kolejności nazw wypisz dla każdego klastra liczbę skanów poprawnie nazwanych, jego rozmiar i odsetek poprawnie nazwanych skanów, jako liczbę całkowitą procentów.
  3. Wypisz łączną liczbę poprawnie nazwanych skanów, a odsetek podaj z dokładnością do 1 miejsca po przecinku.

Dla 5 klastrów:

Cluster named 0: 175 of 177 scans (99%)
Cluster named 2: 160 of 367 scans (44%)
Cluster named 3: 168 of 531 scans (32%)
Cluster named 6: 179 of 359 scans (50%)
Cluster named 7: 176 of 363 scans (48%)
Named right without labels: 858 of 1797 scans (47.7%)

Który z twoich klastrów wypada najsłabiej i co się w nim kryje?

Spróbuj swoich sił

import pandas as pd
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans

# Z „Look at the Digits”: 1,797 obrazów po 64 piksele, intensywność od 0 do 16
digits = load_digits()
X = digits.data
y = digits.target

# Z „Shrink with PCA”: 80% wariancji w 13 liczbach na obraz
pca = PCA(n_components=0.8)
X_small = pca.fit_transform(X)

# Z „Cluster the Digits”: 10 klastrów znalezionych bez etykiet
km = KMeans(n_clusters=10, n_init=10, random_state=0).fit(X_small)

# Napisz swój kod poniżej
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Uczenie nienadzorowane

Poćwicz samodzielnie: Kompilator Python online