Menu
CoddyTech

Erklärte Varianz

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

Wie viel haben 2 Komponenten beibehalten? Jede Komponente hält einen Anteil der Gesamtstreuung fest, ihre erklärte Varianzquote. Für alle 13 Weinkomponenten:

Balken für 13 Weinkomponenten, die von 0.36 auf fast 0 abnehmen, und eine orangefarbene Linie, die sie aufsummiert und von 0.36 auf 1 steigt. Sie kreuzt die gestrichelte 90%-Linie bei Komponente 8

PCA() ohne n_components behält alle bei. np.cumsum liefert die laufende Summe:

pca = PCA().fit(scaled)
ratio = pca.explained_variance_ratio_
print(ratio[:3].round(3))
total = np.cumsum(ratio)
print((total < 0.9).sum() + 1)

Dies gibt [0.362 0.192 0.111] und 8 aus: Die Summen liegen weiterhin unter 0.9, plus der Wert, der die Grenze überschreitet. Die 2D-Weinkarte behielt also 55 %.

challenge icon

Aufgabe

Mittel

Ein Schokoladenlabor misst 9 Dinge pro Tafel. Wie viele Komponenten behalten 90% der Streuung bei? scaled ist bereit.

  1. Führe PCA() aus und nimm den Anteil jeder Komponente.
  2. Gib aus, wie viele Komponenten 90% erreichen.
  3. Zeichne die Anteile als Balken bei 1, 2, 3..., beschriftet mit each component; die laufende Summe als Linie mit marker="o", beschriftet mit running total; eine gestrichelte graue Linie bei 0.9; eine Legende. Zeige die Grafik an.

Für ein anderes Labor:

Components for 90%: 4

Ein Diagramm mit dem Titel „Von jeder Komponente beibehaltene Streuung“ für 7 Komponenten: Balken, die von 0.42 aus kleiner werden, eine laufende Summe, die auf 1 ansteigt und die gestrichelte 0.9-Linie bei Komponente 4 kreuzt, sowie eine Legende

Probier es selbst

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA

# Das Labor eines Schokoladenherstellers: 9 Messwerte für jede von 150 Tafeln
bars = pd.read_csv("chocolate.csv")
scaled = StandardScaler().fit_transform(bars)

fig, ax = plt.subplots()
ax.set_title("Spread Kept by Each Component")
ax.set_xlabel("Component")
ax.set_ylabel("Share of spread")

# 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