Menu
CoddyTech

Centres dans les unités réelles

Fait partie de la section Apprentissage non supervisé du Journey Machine Learning de Coddy. Leçon 12 sur 51.

Le centre d’un cluster est son membre typique. K-means a trouvé les centres du parc dans les données mises à l’échelle ; ils sont donc exprimés en scores z. Les mêmes centres, avant et après :

Deux graphiques des visiteurs du parc à thème avec les 3 centres des clusters marqués par des croix. À gauche, axes mis à l’échelle : les centres se situent à des nombres comme 0.8, 1.3. À droite, unités réelles : les mêmes centres à 6.8 heures et 13.9 attractions, 6.0 et 6.2, 2.4 et 3.0

Conservez le scaler : il mémorise la moyenne et la dispersion de chaque caractéristique, et inverse_transform annule la mise à l’échelle :

scaler = StandardScaler()
km.fit(scaler.fit_transform(park))
centers = scaler.inverse_transform(km.cluster_centers_)
print(centers.round(1))

Cela affiche les heures, les trajets et l’âge, une ligne par cluster :

[[ 6.   6.2 38.4]
 [ 2.4  3.  45.8]
 [ 6.8 13.9 20.7]]

Le centre du cluster 2 était à 0.8 et 1.3. Maintenant, il indique 6.8 heures et 13.9 trajets : le même point, dans des unités qu’une personne peut utiliser.

challenge icon

Défi

Moyen

Un fabricant de gants transforme les groupes de mains en 4 tailles de gants. Le code de départ met à l’échelle 150 mains, les regroupe et lit la main d’un client dans new_hand.

  1. Trouve le groupe que rejoint la nouvelle main : mets-la d’abord à l’échelle.
  2. Reconvertis les centres en cm.
  3. Affiche le centre de ce groupe avec 1 décimale, comme ci-dessous.

Pour un autre fabricant de gants :

Your glove size: hand 20.3 cm, palm 8.9 cm, finger 8.6 cm

Essayez vous-même

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans

# 150 mains mesurées par un fabricant de gants, en cm : longueur de la main, largeur de la paume, longueur du majeur
hands = pd.read_csv("hands.csv")
scaler = StandardScaler()
scaled = scaler.fit_transform(hands)
# Un groupe par taille de gant
km = KMeans(n_clusters=4, n_init=10, random_state=0)
km.fit(scaled)

# La main d’un nouveau client, sous forme de tableau à une ligne avec les mêmes colonnes
new_hand = pd.DataFrame({
    "hand_cm": [float(input())],
    "palm_cm": [float(input())],
    "finger_cm": [float(input())],
})

# Écrivez votre code ci-dessous
quiz iconTestez-vous

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é

Entraînez-vous par vous-même : Compilateur Python en ligne