Arten von Tagen, die niemand benannt hat
Der Verleih will drei Dienstpläne: einen für ruhige Tage, einen für normale und einen für Ansturmtage. Niemand hat je einen Tag als ruhig oder als Ansturm markiert.
Es gibt keine Antwortspalte zum Lernen. Die Tage müssen sich selbst in Gruppen ordnen, und Sie müssen beurteilen, ob die Gruppen Sinn ergeben.
Am Ende dieser Lektion
Notiz
Ich kann Daten ohne Etiketten mit k-means gruppieren.
Schlüsselwörter
| Begriff | Was er bedeutet |
|---|---|
| Daten ohne Etiketten | Zeilen ohne Antwortspalte |
| Cluster | eine Gruppe von Zeilen, die nah beieinander liegen |
| Zentroid | der mittlere Punkt eines Clusters |
| k-means | ein Verfahren, das k Zentroide verschiebt, bis die Gruppen gleich bleiben |
| Skalieren | allen Merkmalen vor dem Messen dieselbe Streuung geben |
| Inertia | die Summe der quadrierten Abstände jedes Punktes zu seinem Zentroid |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
k-means wiederholt zwei Schritte
Wählen Sie k, die Zahl der Gruppen. Setzen Sie k Zentren irgendwo zwischen die Punkte.
Dann wiederholen Sie zwei Schritte. Geben Sie jeden Punkt seinem nächsten Zentrum. Schieben Sie jedes Zentrum zum Mittelwert seiner Punkte, dadurch wird es zum Zentroid. Hören Sie auf, wenn kein Punkt mehr die Gruppe wechselt. Andere Startplätze können andere Gruppen ergeben, deshalb probiert scikit-learn mehrere und behält die beste.
Ein Schritt von Hand
# Ein Schritt von k-means an sechs Tagen, nur nach Ausleihen.
tage = [100, 130, 190, 280, 340, 430]
zentren = [100, 400]
gruppen = [[], []]
for wert in tage:
if abs(wert - zentren[0]) <= abs(wert - zentren[1]):
gruppen[0].append(wert)
else:
gruppen[1].append(wert)
print("Gruppen:", gruppen)
for n in range(2):
zentren[n] = sum(gruppen[n]) / len(gruppen[n])
print("neue Zentren:", zentren)
# Führen Sie den Schritt von den neuen Zentren aus erneut aus.
# Wechselt ein Tag die Gruppe?
Vor dem Messen skalieren
Die Ausleihen reichen von 41 bis 487 am Tag. Die Temperaturen reichen von etwa -1 bis 25 Grad. 10 Ausleihen Unterschied sind winzig, 10 Grad Unterschied sind riesig.
Ein Abstand behandelt aber beide Zehner gleich. Ohne Skalieren entscheiden also die Ausleihen alles. StandardScaler gibt jedem Merkmal den Mittelwert 0 und dieselbe Streuung, damit jedes fair zählt.
Im Notebook eingeben: ohne Skalieren
import pandas as pd
from sklearn.cluster import KMeans
ausleihen = pd.read_csv("hires.csv")
# Ohne Skalieren: Ausleihen streuen über Hunderte, Temperaturen über etwa 26.
ausleihen["roh"] = KMeans(n_clusters=3, n_init=10, random_state=0).fit_predict(ausleihen[["temp_c", "hires"]])
ausleihen.groupby("roh")[["temp_c", "hires"]].agg(["min", "max"])
Die Tage skaliert gruppieren
docker exec jupyter python3 steps/kmeans.pyHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein häufiger Fehler
Warnung
Viele denken, k-means finde heraus, wie viele Gruppen die Daten wirklich haben. Es liefert immer genau die k Gruppen, um die Sie bitten, auch aus Daten ganz ohne Gruppen. Die Wahl von k und der Name jeder Gruppe sind Ihr Urteil.
Der Knick hilft bei der Wahl von k
Die Inertia ist die Summe der quadrierten Abstände jedes Punktes zu seinem Zentroid. Mehr Gruppen senken sie immer. Mit einer Gruppe je Punkt erreicht sie 0.
Suchen Sie deshalb den Knick: das k, ab dem eine weitere Gruppe kaum noch etwas bringt. Fragen Sie dann, ob die Gruppen dem Verleih nützen.
Die Streuung für k von 1 bis 6
docker exec jupyter python3 steps/elbow.pyHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Im Notebook eingeben: die Gruppen sehen
from sklearn.preprocessing import StandardScaler
skaliert = StandardScaler().fit_transform(ausleihen[["temp_c", "hires"]])
ausleihen["gruppe"] = KMeans(n_clusters=3, n_init=10, random_state=0).fit_predict(skaliert)
# Eine Farbe je Gruppe.
ausleihen.plot.scatter(x="temp_c", y="hires", c="gruppe", colormap="viridis")
Weiterführend: drei Merkmale
Gruppieren Sie in Ihrem Notebook nach drei Merkmalen: Temperatur, Regen und Ausleihen, alle skaliert. Probieren Sie k = 3 und k = 4.
Geben Sie für jede Gruppe ihre Größe und den Mittelwert jedes Merkmals aus. Geben Sie jeder Gruppe einen Namen, den eine Dienstplanung versteht, und sagen Sie, welches k Sie wählen und warum.