PCA
Teil des Abschnitts Unüberwachtes Lernen der Machine Learning-Journey von Coddy. Lektion 26 von 51.
PCA findet die Richtung mit der größten Streuung, dann die beste Richtung im rechten Winkel dazu und so weiter: die Komponenten. Bei den Wein-Zwillingen:
Die Projektionen jeder Zeile auf die ersten paar Komponenten werden zu ihren neuen Merkmalen:
from sklearn.decomposition import PCA
scaled = StandardScaler().fit_transform(X)
points = PCA(n_components=2).fit_transform(scaled)
print(X.shape, points.shape)Für alle 13 Weinmessungen wird Folgendes ausgegeben: (178, 13) (178, 2).
Zuerst skalieren. PCA orientiert sich an der Streuung, daher setzt sich ein Merkmal mit großen Einheiten, wie Prolin im Hunderterbereich, allein aufgrund seiner Größe durch:
Aufgabe
MittelEin Wasserlabor testet Flaschen aus drei Quellen mit jeweils 8 Messungen. Kann eine 2D-Karte die Quellen voneinander unterscheiden? draw_springs(ax, points) färbt beliebige 2D-Punkte nach Quelle ein.
- Skaliere
Xund reduziere es dann mit PCA auf 2 Komponenten inpoints. - Gib die Anzahl der Merkmale vor und nach der Reduktion aus.
- Zeichne die Punkte mit
draw_springsund zeige die Grafik an.
Für ein anderes Labor mit 6 Messungen:
From 6 features to 2Coddy beschreibt deine Karte.
Probier es selbst
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
# Ein Wasserlabor: 8 Messwerte für jede der 120 Flaschen aus drei Quellen
waters = pd.read_csv("waters.csv")
X = waters.drop(columns="spring")
# Stellt 2D-Punkte als Streudiagramm dar, mit einer Gruppe pro Quelle und einer Legende
def draw_springs(ax, points):
for spring in ["alpine", "volcanic", "coastal"]:
rows = (waters["spring"] == spring).to_numpy()
ax.scatter(points[rows, 0], points[rows, 1], s=16, label=spring)
ax.legend()
fig, ax = plt.subplots()
ax.set_title("Spring Waters in 2D")
ax.set_xlabel("First component")
ax.set_ylabel("Second component")
# Schreibe deinen Code unten
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
1Gruppen finden
Lernen ohne LabelsÄhnlichkeit messenK-Means von HandK-Means mit scikit-learnRückblick: Fitnessstudiomitglieder4Hierarchisches Clustering
Schrittweises ZusammenführenAgglomerative ModelleDendrogrammeZusammenfassung: Hunderassen7PCA in der Praxis
64 Dimensionen sehenKomponenten als MusterKomprimieren und rekonstruierenPCA vor einem ModellRückblick: Gesichtsscanner10Projekt: Ziffern erkunden
Die Ziffern ansehenMit PCA verkleinernDie Ziffern gruppierenDie Gruppen benennenDie Ausreißer finden2k wählen
TrägheitDie Elbow-MethodeSilhouettenwerteVor dem Clustering skalierenRückblick: LieferzonenÜbe selbstständig: Online-Python-Compiler