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:
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.
Sfida
MedioDai un nome ai tuoi 10 cluster. Il codice iniziale include km, addestrato senza etichette; ora puoi usare le cifre in y.
- Crea una tabella incrociata dei cluster rispetto a
ye assegna a ogni cluster il nome della cifra più frequente. - 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.
- 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
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Apprendimento non supervisionato
1Trovare gruppi
Apprendimento senza etichetteMisurare la similaritàK-Means a manoK-Means in scikit-learnRiepilogo: iscritti alla palestra4Clustering gerarchico
Unire passo dopo passoModelli agglomerativiDendrogrammiRiepilogo: razze canine7PCA nella pratica
Vedere 64 dimensioniComponenti come schemiComprimere e ricostruirePCA prima di un modelloRiepilogo: scanner facciale10Progetto: Esplorare le cifre
Osserva le cifreRiduci con PCARaggruppa le cifreDai un nome ai gruppiTrova gli elementi insoliti2Scelta di k
InerziaIl metodo del gomitoPunteggi silhouetteScala prima del clusteringRiepilogo: zone di consegnaEsercitati da solo: Compilatore Python online