Menu
CoddyTech

Składowe jako wzorce

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

Na co patrzyła metoda PCA? Każda składowa składa się z 64 wag, po jednej na piksel, a components_ przechowuje jeden wiersz dla każdej składowej:

pca = PCA(n_components=4).fit(X)
print(pca.components_.shape)

To wyświetla (4, 64). Zmień kształt wiersza na 8 na 8, a stanie się obrazem. cmap="gray_r" oznacza odwróconą skalę szarości: duże wagi są ciemne, ujemne — jasne:

ax.imshow(pca.components_[0].reshape(8, 8), cmap="gray_r")

Pierwsze cztery składowe cyfr przedstawione jako obrazy 8 na 8: szare, gdy waga jest bliska zeru, ciemne, gdy jest duża, jasne, gdy jest ujemna

Składowa 1 jest ciemna tam, gdzie czwórki i szóstki mają tusz, dlatego trafiają na prawą stronę mapy. Skan otrzymuje wysoką ocenę, gdy jego tusz pada na ciemne piksele.

challenge icon

Wyzwanie

Średni

Nauczyciel kaligrafii chce zobaczyć, jak ludzie zapisują jedną cyfrę. Program odczytuje cyfrę, a kod startowy przechowuje skany w X.

  1. Dopasuj PCA z 3 komponentami do X.
  2. Narysuj komponent i na axs[i] jako obraz o wymiarach 8 na 8, używając cmap="gray_r", z tytułem od Component 1 do Component 3.
  3. Wyświetl wykres.

Dla dwójek rysuje taki obraz. Następnie Coddy opisuje Twoje panele:

Trzy obrazy komponentów o wymiarach 8 na 8 przedstawiające odręcznie zapisane dwójki, zatytułowane Component 1, Component 2 i Component 3, każdy z własnymi ciemnymi i jasnymi kreskami

Spróbuj swoich sił

import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA

# Każdy skan jednej cyfry wczytanej z wejścia: 64 piksele w wierszu
d = int(input())
digits = load_digits()
X = digits.data[digits.target == d]

# Nie zmieniaj poniższej linii
fig, axs = plt.subplots(1, 3)

# 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