Menu
CoddyTech

Kompresuj i odtwórz

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

Wyniki składowych skanu to przepis: zacznij od średniego skanu, a następnie dodaj każdy wzorzec pomnożony przez jego wynik. inverse_transform odtwarza przepis, przywracając 64 piksele:

pca = PCA(n_components=10).fit(X)
codes = pca.transform(X)                # 10 liczb na skan
rebuilt = pca.inverse_transform(codes)  # ponownie 64 piksele

Oto trzy skany odtworzone z coraz większej liczby liczb:

0, 3 i 5, każdy odtworzony z 2, 5, 10 i 20 liczb, a następnie prawdziwy skan. Przy 2 liczbach wszystkie trzy są podobnymi rozmytymi obrazami; przy 20 każdy jest wyraźnie czytelny

Niewiele liczb daje rozmyty obraz zbliżony do przeciętnej cyfry; każdy dodany komponent przywraca szczegóły. Już dwadzieścia liczb zamiast 64 pozwala wyraźnie odczytać cyfrę.

challenge icon

Wyzwanie

Średni

Inteligentny długopis przesyła każdą cyfrę jako k liczb PCA, odczytywanych przez program. Co zostaje utracone?

  1. Dopasuj PCA z k składowymi do X. Skompresuj wszystkie skany, a następnie odtwórz je w rebuilt.
  2. Wypisz poniższe wiersze; błąd to średnia bezwzględna różnica względem X.
  3. Narysuj najnowszy skan, X[-1], na axs[0], a jego odtworzenie na axs[1], oba w gray_r. Wyświetl.

Dla 7:

Sent: 7 numbers per scan instead of 64
Average pixel error: 1.739

i rysuje to. Następnie Coddy opisuje Twoje panele:

Dwa obrazy 8 na 8 obok siebie: najnowszy skan długopisu, ósemka, oraz jego odtworzenie z 7 liczb — bardziej rozmyta ósemka

Spróbuj swoich sił

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

# 1,797 skanów po 64 piksele; najnowszy skan pióra znajduje się w ostatnim wierszu
digits = load_digits()
X = digits.data
k = int(input())

# Nie zmieniaj poniższych linii
fig, axs = plt.subplots(1, 2)
axs[0].set_title("Scan")
axs[1].set_title(f"Rebuilt from {k} numbers")

# 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