Menu
CoddyTech

Dai un nome ai gruppi

Fa parte della sezione Apprendimento non supervisionato del percorso Machine Learning di Coddy. Lezione 46 di 51.

I cluster hanno numeri, non nomi. Ora puoi usare le etichette: una tabella a doppia entrata conta quali cifre sono finite in ciascun cluster, come questi 1, 7 e 9 in 3 cluster:

Una tabella 3 per 3 di conteggi, con i cluster in verticale e le cifre 1, 7 e 9 in orizzontale. Il conteggio più alto di ogni riga è riquadrato: il cluster 0 contiene 166 nove, il cluster 1 176 sette, il cluster 2 154 uno

Dai a ciascun gruppo il nome della cifra più frequente. Le occorrenze di quella cifra vengono considerate correttamente classificate:

ct = pd.crosstab(km.labels_, y)
names = ct.idxmax(axis=1)      # la colonna con il valore più alto di ogni riga
right = ct.max(axis=1).sum()
print(names.tolist(), right)

Questo stampa [9, 7, 1] 496: 496 delle 541 scansioni denominate correttamente, per gruppi individuati senza una singola etichetta.

challenge icon

Sfida

Medio

Dai un nome ai tuoi 10 cluster. Il codice iniziale include km, addestrato senza etichette; ora puoi usare le cifre in y.

  1. Crea una tabella incrociata dei cluster rispetto a y e assegna a ogni cluster il nome della cifra più frequente.
  2. In ordine alfabetico dei nomi, stampa per ogni cluster il numero di scansioni a cui è stato assegnato il nome corretto, la sua dimensione e la percentuale di assegnazioni corrette, come percentuale intera.
  3. Stampa il numero totale di scansioni a cui è stato assegnato il nome corretto, con la percentuale arrotondata a 1 cifra decimale.

Per 5 cluster:

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

Quale dei tuoi cluster è il più debole e cosa nasconde?

Provalo tu

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

# Da Osserva le cifre: 1,797 scansioni di 64 pixel, intensità dell'inchiostro da 0 a 16
digits = load_digits()
X = digits.data
y = digits.target

# Da Riduci con PCA: 80% della varianza in 13 numeri per scansione
pca = PCA(n_components=0.8)
X_small = pca.fit_transform(X)

# Da Raggruppa le cifre: 10 gruppi individuati senza etichette
km = KMeans(n_clusters=10, n_init=10, random_state=0).fit(X_small)

# Scrivi il tuo codice qui sotto
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Apprendimento non supervisionato

Esercitati da solo: Compilatore Python online