PCA vor einem Modell
Teil des Abschnitts Unüberwachtes Lernen der Machine Learning-Journey von Coddy. Lektion 32 von 51.
Weniger Merkmale machen ein Modell schneller und geben ihm weniger Rauschen, dem es nachjagen kann. PCA kann in einer Pipeline direkt vor dem Modell stehen:
for n in [2, 5, 10, 20, 40, 64]:
model = make_pipeline(PCA(n_components=n), KNeighborsClassifier())
print(n, f"{cross_val_score(model, X, y, cv=5).mean():.3f}")Zu den Ziffern:
Die Genauigkeit pendelt sich bei etwa 20 ein: Die übrigen 44 Richtungen tragen fast nichts bei. Jeder Fold passt PCA auf seinen eigenen Trainingszeilen an, sodass nichts durchsickert.
Gemischte Einheiten? Setze wie immer zuerst StandardScaler() ein.
Aufgabe
MittelEin Olivenöllabor bewertet Öle anhand des Lichts, das sie bei 36 Wellenlängen absorbieren, sowie anhand von 4 Labortests. Wie wenige Merkmale würden ausreichen? Das Programm liest eine Toleranz ein.
- Führe für jedes
ninsizeseine Kreuzvalidierung (5 Folds) einer Pipeline durch: Scaler, PCA mitnKomponenten,LogisticRegression(max_iter=1000). Gib jeden Score aus. - Gib die kleinste Anzahl von Komponenten aus, deren Score höchstens um die Toleranz unter dem besten Score liegt.
Für ein anderes Labor und 0.05:
2 components: 0.817
3 components: 0.833
4 components: 0.889
5 components: 0.928
10 components: 0.928
20 components: 0.917
40 components: 0.922
Fewest within 0.05 of the best: 4 componentsProbier es selbst
import pandas as pd
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score
# 180 Olivenöle: absorbiertes Licht bei 36 Wellenlängen, 4 Labortests und die Qualitätsstufe
oils = pd.read_csv("oils.csv")
X = oils.drop(columns=["oil", "grade"])
y = oils["grade"]
sizes = [2, 3, 4, 5, 10, 20, 40]
slack = float(input())
# 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