Menu
CoddyTech

Zentren in realen Einheiten

Teil des Abschnitts Unüberwachtes Lernen der Machine Learning-Journey von Coddy. Lektion 12 von 51.

Das Zentrum eines Clusters ist sein typisches Mitglied. K-means hat die Zentren des Freizeitparks in skalierten Daten ermittelt, daher lassen sie sich als z-Werte ablesen. Dieselben Zentren, davor und danach:

Zwei Diagramme der Besucher des Freizeitparks mit den drei Clusterzentren, die durch Kreuze markiert sind. Links, skalierte Achsen: Die Zentren liegen bei Zahlen wie 0.8, 1.3. Rechts, reale Einheiten: dieselben Zentren bei 6.8 Stunden und 13.9 Fahrten, 6.0 und 6.2, 2.4 und 3.0

Behalte den Scaler bei: Er merkt sich den Mittelwert und die Streuung jedes Merkmals, und inverse_transform macht die Skalierung rückgängig:

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

Dies gibt Stunden, Fahrten und Alter aus, eine Zeile pro Cluster:

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

Der Mittelpunkt von Cluster 2 lag bei 0.8 und 1.3. Jetzt entspricht er 6.8 Stunden und 13.9 Fahrten: demselben Punkt, ausgedrückt in Einheiten, die ein Mensch verwenden kann.

challenge icon

Aufgabe

Mittel

Ein Handschuhmacher teilt Hände in 4 Handschuhgrößen ein. Der Ausgangscode skaliert 150 Hände, gruppiert sie und liest die Hand eines Kunden in new_hand ein.

  1. Finde den Cluster, dem die neue Hand zugeordnet wird: Skaliere sie zuerst.
  2. Wandle die Mittelpunkte zurück in cm.
  3. Gib den Mittelpunkt dieses Clusters mit 1 Dezimalstelle wie unten aus.

Für einen anderen Handschuhmacher:

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

Probier es selbst

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

# 150 Hände, die ein Handschuhmacher vermessen hat, in cm: Handlänge, Handflächenbreite, Mittelfingerlänge
hands = pd.read_csv("hands.csv")
scaler = StandardScaler()
scaled = scaler.fit_transform(hands)
# Ein Cluster pro Handschuhgröße
km = KMeans(n_clusters=4, n_init=10, random_state=0)
km.fit(scaled)

# Die Hand eines neuen Kunden als einzeilige Tabelle mit denselben Spalten
new_hand = pd.DataFrame({
    "hand_cm": [float(input())],
    "palm_cm": [float(input())],
    "finger_cm": [float(input())],
})

# Schreibe deinen Code unten
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Unüberwachtes Lernen

Übe selbstständig: Online-Python-Compiler