Menu
CoddyTech

Centri in unità reali

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

Il centro di un cluster è il suo membro tipico. K-means ha trovato i centri del parco nei dati scalati, quindi sono espressi come punteggi z. Gli stessi centri, prima e dopo:

Due grafici dei visitatori del parco a tema con i 3 centri dei cluster contrassegnati da croci. A sinistra, assi scalati: i centri si trovano su valori come 0.8, 1.3. A destra, unità reali: gli stessi centri a 6.8 ore e 13.9 giostre, 6.0 e 6.2, 2.4 e 3.0

Conserva lo scaler: ricorda la media e la dispersione di ogni feature e inverse_transform annulla la normalizzazione:

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

Questo stampa le ore, le corse e l’età, una riga per cluster:

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

Il centro del cluster 2 era 0.8 e 1.3. Ora indica 6.8 ore e 13.9 corse: lo stesso punto, in unità utilizzabili da una persona.

challenge icon

Sfida

Medio

Un produttore di guanti suddivide le mani in 4 taglie di guanti. Il codice iniziale ridimensiona 150 mani, le raggruppa e legge la mano di un cliente in new_hand.

  1. Trova il cluster a cui si unisce la nuova mano: prima ridimensionala.
  2. Riporta i centri in cm.
  3. Stampa il centro di quel cluster con 1 decimale, come sotto.

Per un altro produttore di guanti:

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

Provalo tu

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

# 150 mani misurate da un produttore di guanti, in cm: lunghezza della mano, larghezza del palmo, lunghezza del dito medio
hands = pd.read_csv("hands.csv")
scaler = StandardScaler()
scaled = scaler.fit_transform(hands)
# Un gruppo per ogni taglia di guanti
km = KMeans(n_clusters=4, n_init=10, random_state=0)
km.fit(scaled)

# La mano di un nuovo cliente, in una tabella con una sola riga e le stesse colonne
new_hand = pd.DataFrame({
    "hand_cm": [float(input())],
    "palm_cm": [float(input())],
    "finger_cm": [float(input())],
})

# 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