Menu
CoddyTech

Kompres dan Rekonstruksi

Termasuk bagian Pembelajaran Tanpa Pengawasan dalam perjalanan Machine Learning di Coddy. Pelajaran 31 dari 51.

Skor komponen dari sebuah hasil pemindaian adalah resep: mulai dari rata-rata hasil pemindaian, lalu tambahkan setiap pola dikalikan dengan skornya. inverse_transform mengikuti resep itu untuk kembali ke 64 piksel:

pca = PCA(n_components=10).fit(X)
codes = pca.transform(X)                # 10 angka per pemindaian
rebuilt = pca.inverse_transform(codes)  # 64 piksel lagi

Berikut tiga hasil pemindaian yang direkonstruksi dari jumlah angka yang semakin banyak:

Angka 0, 3, dan 5, masing-masing direkonstruksi dari 2, 5, 10, dan 20 angka, lalu hasil pemindaian aslinya. Dengan 2 angka, ketiganya tampak seperti bentuk buram yang serupa; dengan 20 angka, masing-masing terlihat jelas

Dengan sedikit angka, hasilnya buram dan mendekati angka rata-rata; setiap komponen yang ditambahkan memulihkan detail. Dua puluh angka saja, bukan 64, sudah terlihat jelas.

challenge icon

Tantangan

Sedang

Pena pintar mengirimkan setiap digit sebagai k angka PCA, yang dibaca oleh program. Apa yang hilang?

  1. Latih PCA dengan k komponen pada X. Kompres semua pemindaian, lalu bangun ulang menjadi rebuilt.
  2. Cetak baris di bawah ini; error adalah selisih absolut rata-rata dari X.
  3. Gambar pemindaian terbaru, X[-1], pada axs[0] dan hasil bangun ulangnya pada axs[1], keduanya dengan gray_r. Tampilkan.

Untuk 7:

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

dan menggambar ini. Coddy kemudian menjelaskan panelmu:

Dua gambar 8 kali 8 berdampingan: pemindaian terbaru pena, angka 8, dan hasil bangun ulangnya dari 7 angka, angka 8 yang lebih buram

Coba sendiri

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

# 1,797 hasil pemindaian dengan 64 piksel; hasil pemindaian pena terbaru ada di baris terakhir
digits = load_digits()
X = digits.data
k = int(input())

# Jangan ubah baris-baris di bawah ini
fig, axs = plt.subplots(1, 2)
axs[0].set_title("Scan")
axs[1].set_title(f"Rebuilt from {k} numbers")

# Tulis kodemu di bawah ini
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pembelajaran Tanpa Pengawasan

Latihan sendiri: Compiler Python online