PCA przed modelem
Część sekcji Uczenie nienadzorowane ścieżki Machine Learning w Coddy. Lekcja 32 z 51.
Mniejsza liczba cech sprawia, że model działa szybciej i ma mniej szumu do wychwycenia. PCA może znaleźć się w potoku, tuż przed modelem:
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}")Dla cyfr:
Dokładność stabilizuje się w okolicach 20: pozostałe 44 kierunki prawie nic nie wnoszą. Każdy fold dopasowuje PCA do własnych wierszy treningowych, więc nic nie wycieka.
Mieszane jednostki? Najpierw umieść StandardScaler(), jak zawsze.
Wyzwanie
ŚredniLaboratorium oliwy z oliwek ocenia oliwy na podstawie światła pochłanianego przy 36 długościach fali oraz 4 testów laboratoryjnych. Ile cech wystarczy? Program odczytuje wartość slack.
- Dla każdego
nwsizesprzeprowadź walidację krzyżową (5 części) potoku: skalowanie, PCA znskładowymi,LogisticRegression(max_iter=1000). Wypisz każdy wynik. - Wypisz najmniejszą liczbę składowych, dla której wynik mieści się w granicach slack od najlepszego wyniku.
Dla innego laboratorium i wartości 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 componentsSpróbuj swoich sił
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 próbek oliwy z oliwek: światło pochłonięte przy 36 długościach fali, 4 badania laboratoryjne i klasa jakości
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())
# Wpisz swój kod poniżej
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Uczenie nienadzorowane
1Znajdowanie grup
Uczenie się bez etykietMierzenie podobieństwaK-Means krok po krokuK-Means w scikit-learnPodsumowanie: członkowie siłowni4Klasteryzacja hierarchiczna
Łączenie krok po krokuModele aglomeracyjneDendrogramyPodsumowanie: rasy psów7PCA w praktyce
Poznajemy 64 wymiarySkładowe jako wzorceKompresuj i odtwórzPCA przed modelemPodsumowanie: skaner twarzy10Projekt: Odkrywca cyfr
Przyjrzyj się cyfromZmniejsz wymiar za pomocą PCAGrupuj cyfryNazwij grupyZnajdź te nietypowe2Wybór k
InercjaMetoda łokciaWyniki silhouetteSkalowanie przed klasteryzacjąPodsumowanie: strefy dostawPoćwicz samodzielnie: Kompilator Python online