Menu
CoddyTech

Zmniejsz wymiar za pomocą PCA

Część sekcji Uczenie nienadzorowane ścieżki Machine Learning w Coddy. Lekcja 44 z 51.

64 piksele to więcej, niż potrzeba do przedstawienia cyfr. PCA może dążyć do zachowania określonej części wariancji zamiast określonej liczby składowych:

Rosnąca krzywa przedstawiająca część wariancji cyfr zachowaną przez pierwsze n składowych; początkowo stroma, a następnie płaska; przerywana linia na poziomie 90% przecina ją przy 21 składowych

n_components=0.9 zachowuje najmniejszą liczbę komponentów, które zawierają 90%:

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

Wyświetla 21 (1797, 21): jedną trzecią liczb, większość obrazu.

Bez skalera: każdy piksel ma tę samą jednostkę — ilość tuszu od 0 do 16. Skalowanie wyolbrzymiłoby prawie puste piksele na krawędziach, zamieniając je w pełnoprawne cechy.

challenge icon

Wyzwanie

Średni

Czas zmniejszyć skany. Program odczytuje udział wariancji, który należy zachować, na przykład 0.8.

  1. Wypisz, ilu komponentów potrzebuje PCA dla tego udziału w przypadku surowych pikseli, a następnie pikseli po skalowaniu.
  2. Zachowaj wersję, która wymaga ich mniej: wypisz jej nazwę i kształt zredukowanych danych.

Dla 0.6:

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

Od tej pory projekt zachowuje 80% wariancji.

Spróbuj swoich sił

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

# Z Look at the Digits: 1,797 skanów po 64 piksele, intensywność atramentu od 0 do 16
digits = load_digits()
X = digits.data
y = digits.target

# Udział wariancji do zachowania, na przykład 0.8
share = float(input())

# Napisz swój kod poniżej
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Uczenie nienadzorowane

Poćwicz samodzielnie: Kompilator Python online