Mettre à l’échelle avant le clustering
Fait partie de la section Apprentissage non supervisé du Journey Machine Learning de Coddy. Leçon 9 sur 51.
K-means regroupe en fonction de la distance, donc les unités les plus grandes dominent. Le poids des chats du refuge est en grammes et leur âge en années : un écart de 500 g l’emporte sur un écart de 10 ans.
Standardisez d’abord, comme pour k-NN, afin que chaque caractéristique compte de la même manière :
X_scaled = StandardScaler().fit_transform(X)
km = KMeans(n_clusters=3, n_init=10, random_state=0)
km.fit(X_scaled)make_pipeline(StandardScaler(), KMeans(...)) fait les deux dans un seul modèle. Examine ensuite chaque groupe en unités réelles : calcule la moyenne de ses lignes d’origine, X[km.labels_ == c].mean(axis=0).
Défi
FacileUne application de recherche d’appartements regroupe 100 annonces selon le loyer et la distance jusqu’à la gare. Le code de départ regroupe les colonnes brutes, et tous ses groupes se trouvent à environ 3 km : les dollars éclipsent les kilomètres.
- Normalise les deux colonnes avec un
StandardScaler. - Regroupe plutôt les lignes normalisées. Conserve le rapport : il indique chaque groupe en unités réelles.
Pour une autre ville :
38 flats: $1820 a month, 0.9 km out
33 flats: $1130 a month, 4.2 km out
29 flats: $2760 a month, 1.5 km outEssayez vous-même
import pandas as pd
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
# Une ligne par appartement : loyer mensuel en dollars, distance jusqu’à la gare en km
flats = pd.read_csv("flats.csv")
X = flats[["rent", "station_km"]]
# Ceci regroupe les colonnes brutes en clusters : corrigez cela
km = KMeans(n_clusters=3, n_init=10, random_state=0)
km.fit(X)
# Affichez chaque groupe en unités réelles, du plus grand au plus petit
sizes = pd.Series(km.labels_).value_counts()
for c in sizes.index:
group = flats[km.labels_ == c]
print(f"{sizes[c]} flats: ${round(group['rent'].mean())} a month, {group['station_km'].mean():.1f} km out")
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Apprentissage non supervisé
1Découvrir des groupes
Apprendre sans étiquettesMesurer la similaritéK-Means à la mainK-Means avec scikit-learnRécapitulatif : les membres de la salle de sport4Classification hiérarchique
Fusion étape par étapeModèles agglomératifsDendrogrammesRécapitulatif : races de chiens7L’ACP en pratique
Visualiser 64 dimensionsLes composantes comme motifsCompresser et reconstruireL’ACP avant un modèleRécapitulatif : scanner de visages10Projet : Explorateur de chiffres
Observer les chiffresRéduire avec la PCARegrouper les chiffresNommer les groupesRepérer les intrus2Choisir k
InertieLa méthode du coudeScores de silhouetteMettre à l’échelle avant le clusteringRécapitulatif : zones de livraisonEntraînez-vous par vous-même : Compilateur Python en ligne