PCA로 차원 축소하기
Coddy Machine Learning 여정의 비지도 학습 섹션에 포함된 레슨. 51개 중 44번째.
64픽셀은 숫자에 필요한 것보다 많습니다. PCA는 구성 요소의 개수 대신 분산의 비율을 목표로 삼을 수 있습니다:
n_components=0.9는 90%를 담는 데 필요한 최소한의 구성 요소를 유지합니다:
pca = PCA(n_components=0.9)
X_small = pca.fit_transform(X)
print(pca.n_components_, X_small.shape)이것은 21 (1797, 21)을 출력합니다. 숫자는 3분의 1이지만 그림 대부분을 차지합니다.
여기에는 스케일러가 없습니다. 모든 픽셀이 0부터 16까지의 잉크라는 동일한 단위를 공유합니다. 스케일링하면 거의 비어 있는 가장자리 픽셀이 큰 특징으로 부풀려집니다.
챌린지
중급스캔 데이터를 축소할 시간입니다. 프로그램은 유지할 분산의 비율을 읽습니다. 예를 들어 0.8입니다.
- 원본 픽셀에서 해당 비율을 유지하는 데 PCA가 필요한 성분의 수를 출력한 다음, 스케일링된 픽셀에서 필요한 수를 출력합니다.
- 더 적은 수의 성분이 필요한 버전을 유지합니다. 그 이름과 축소된 데이터의 형태를 출력합니다.
0.6의 경우:
Raw pixels: 7 components
Scaled pixels: 11 components
Keep: raw pixels, shape (1797, 7)이제부터 프로젝트는 분산의 80%를 유지합니다.
직접 해보기
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
# Look at the Digits에서 가져옴: 64픽셀 스캔 이미지 1,797개, 잉크 값은 0부터 16까지
digits = load_digits()
X = digits.data
y = digits.target
# 유지할 분산의 비율, 예: 0.8
share = float(input())
# 아래에 코드를 작성하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
비지도 학습의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러