압축하고 재구성하기
Coddy Machine Learning 여정의 비지도 학습 섹션에 포함된 레슨. 51개 중 31번째.
스캔의 구성 요소 점수는 레시피와 같습니다. 평균 스캔에서 시작한 다음, 각 패턴에 해당 점수를 곱해 더합니다. inverse_transform은 이 레시피를 따라 64픽셀로 되돌립니다:
pca = PCA(n_components=10).fit(X)
codes = pca.transform(X) # 스캔당 숫자 10개
rebuilt = pca.inverse_transform(codes) # 다시 픽셀 64개더 많은 숫자를 사용해 재구성한 세 가지 스캔이 있습니다:
평균 숫자에 가까운 흐릿한 이미지를 나타내는 숫자는 몇 개뿐입니다. 구성 요소를 하나씩 추가할 때마다 세부 정보가 복원됩니다. 64개 대신 20개의 숫자만으로도 이미 선명하게 읽을 수 있습니다.
챌린지
중급스마트 펜은 각 숫자를 k개의 PCA 숫자로 전송하고, 프로그램은 이를 읽습니다. 무엇이 손실될까요?
X에 대해k개의 구성 요소로 PCA를 학습합니다. 모든 스캔을 압축한 다음rebuilt로 재구성합니다.- 아래 줄을 출력합니다. 오차는
X와의 절대 차이의 평균입니다. - 가장 최근 스캔인
X[-1]을axs[0]에 그리고, 재구성한 결과를axs[1]에 그립니다. 둘 다gray_r를 사용합니다. 표시합니다.
7의 경우:
Sent: 7 numbers per scan instead of 64
Average pixel error: 1.739그리고 다음과 같이 그립니다. 그런 다음 Coddy가 두 패널을 설명합니다.
직접 해보기
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
# 64픽셀로 이루어진 스캔 1,797개; 펜의 최신 스캔은 마지막 행에 있습니다
digits = load_digits()
X = digits.data
k = int(input())
# 아래 줄은 변경하지 마세요
fig, axs = plt.subplots(1, 2)
axs[0].set_title("Scan")
axs[1].set_title(f"Rebuilt from {k} numbers")
# 아래에 코드를 작성하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
비지도 학습의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러