Menu
CoddyTech

Mit PCA verkleinern

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

64 Pixel sind mehr, als die Ziffern benötigen. PCA kann statt einer Anzahl von Komponenten einen Anteil der Varianz anpeilen:

Eine ansteigende Kurve des von den ersten n Komponenten beibehaltenen Varianzanteils der Ziffern', zunächst steil, dann flach; eine gestrichelte Linie bei 90% trifft sie bei 21 Komponenten

n_components=0.9 behält die wenigsten Komponenten, die 90 % ausmachen:

pca = PCA(n_components=0.9)
X_small = pca.fit_transform(X)
print(pca.n_components_, X_small.shape)

Dies gibt 21 (1797, 21) aus: ein Drittel der Zahlen, den größten Teil des Bildes.

Hier gibt es keinen Skalierer: Jedes Pixel verwendet dieselbe Einheit, Tinte von 0 bis 16. Durch die Skalierung würden fast leere Randpixel zu vollständigen Merkmalen aufgebläht.

challenge icon

Aufgabe

Mittel

Es ist Zeit, die Scans zu verkleinern. Das Programm liest den Anteil der beizubehaltenden Varianz ein, zum Beispiel 0.8.

  1. Gib aus, wie viele Komponenten PCA für diesen Anteil bei den unveränderten Pixeln und dann bei den skalierten Pixeln benötigt.
  2. Behalte die Version, die weniger benötigt: Gib ihren Namen und die Form ihrer reduzierten Daten aus.

Für 0.6:

Raw pixels: 7 components
Scaled pixels: 11 components
Keep: raw pixels, shape (1797, 7)

Von nun an behält das Projekt 80 % der Varianz bei.

Probier es selbst

from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler

# Aus Look at the Digits: 1,797 Scans mit 64 Pixeln, Tintenwerte von 0 bis 16
digits = load_digits()
X = digits.data
y = digits.target

# Der beizubehaltende Anteil der Varianz, zum Beispiel 0.8
share = 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