Menu
CoddyTech

Sıkıştır ve Yeniden Oluştur

Coddy'nin Machine Learning Journey'sinin Denetimsiz Öğrenme bölümünün bir parçası. Ders 31 / 51.

Bir taramanın bileşen puanları bir tariftir: ortalama taramayla başla, ardından her deseni puanıyla çarpıp ekle. inverse_transform, tarifi izleyerek yeniden 64 piksele döner:

pca = PCA(n_components=10).fit(X)
codes = pca.transform(X)                # tarama başına 10 sayı
rebuilt = pca.inverse_transform(codes)  # yeniden 64 piksel

İşte giderek daha fazla sayıdan yeniden oluşturulmuş üç tarama:

0, 3 ve 5; her biri 2, 5, 10 ve 20 sayıdan, ardından gerçek taramadan yeniden oluşturulmuş. 2 sayıdan oluşturulduklarında üçü de birbirine benzeyen bulanık görüntülerdir; 20 sayıdan oluşturulduklarında her biri net bir şekilde okunur

Az sayı, ortalama rakama yakın bulanık bir görüntü verir; eklenen her bileşen ayrıntıları geri kazandırır. 64 yerine yirmi sayı kullanıldığında bile görüntü zaten net okunur.

challenge icon

Görev

Orta

Akıllı bir kalem her rakamı programın okuduğu k PCA sayısı olarak kablosuz iletir. Neler kaybolur?

  1. X üzerinde k bileşenle PCA'yı eğit. Tüm taramaları sıkıştır, ardından rebuilt içine yeniden oluştur.
  2. Aşağıdaki satırları yazdır; hata, X ile arasındaki mutlak farkların ortalamasıdır.
  3. En yeni taramayı, X[-1], axs[0] üzerinde ve yeniden oluşturulmuş hâlini axs[1] üzerinde, ikisini de gray_r kullanarak çiz. Göster.

7 için:

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

ve bunu çizer. Coddy ardından panellerini açıklar:

Yan yana iki 8'e 8 resim: kalemin en yeni taraması, bir 8, ve 7 sayıdan yeniden oluşturulmuş hâli, daha bulanık bir 8

Kendin dene

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

# 64 piksellik 1,797 tarama; kalemin en yeni taraması son satırda
digits = load_digits()
X = digits.data
k = int(input())

# Aşağıdaki satırları değiştirmeyin
fig, axs = plt.subplots(1, 2)
axs[0].set_title("Scan")
axs[1].set_title(f"Rebuilt from {k} numbers")

# Kodunuzu aşağıya yazın
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Denetimsiz Öğrenme bölümündeki tüm dersler

Kendi başına pratik yap: Online Python derleyicisi