Menu
CoddyTech

설명된 분산

Coddy Machine Learning 여정의 비지도 학습 섹션에 포함된 레슨. 51개 중 27번째.

두 개의 구성 요소가 얼마나 보존했을까요? 각 구성 요소는 전체 분산에서 차지하는 비율인 설명된 분산 비율을 나타냅니다. 13개의 와인 구성 요소 전체를 살펴보면 다음과 같습니다.

13개의 와인 구성 요소를 나타내는 막대는 0.36에서 거의 0까지 줄어들고, 이를 누적하는 주황색 선은 0.36에서 1까지 상승합니다. 선은 구성 요소 8에서 점선으로 표시된 90% 선을 가로지릅니다.

PCA()는 n_components를 지정하지 않으면 모든 성분을 유지합니다. np.cumsum은 누적 합계를 구합니다:

pca = PCA().fit(scaled)
ratio = pca.explained_variance_ratio_
print(ratio[:3].round(3))
total = np.cumsum(ratio)
print((total < 0.9).sum() + 1)

이 코드는 [0.362 0.192 0.111]과 8을 출력합니다. 누적 합계는 여전히 0.9 미만이고, 이를 넘는 항목이 하나 더 있습니다. 따라서 2D 와인 맵은 55%를 유지했습니다.

challenge icon

챌린지

중급

초콜릿 연구실에서는 막대 하나당 9가지 항목을 측정합니다. 산포의 90%를 유지하는 데 필요한 성분은 몇 개일까요? scaled가 준비되어 있습니다.

  1. PCA()를 학습시키고 각 성분이 차지하는 비율을 구하세요.
  2. 90%에 도달하는 성분의 개수를 출력하세요.
  3. 비율은 1, 2, 3... 위치에 막대로 그리고 each component라고 표시하세요. 누적 합계는 marker="o"가 있는 선으로 그리고 running total이라고 표시하세요. 0.9 위치에 회색 점선을 추가하고 범례를 표시하세요. 그래프를 보여 주세요.

다른 연구실의 경우:

Components for 90%: 4

7개 성분에 대한 Spread Kept by Each Component 제목의 차트: 0.42부터 줄어드는 막대, 성분 4에서 점선 0.9를 넘어 1까지 올라가는 누적 합계 선, 그리고 범례

직접 해보기

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA

# 초콜릿 제조사의 실험실: 초콜릿 바 150개 각각에 대한 측정값 9개
bars = pd.read_csv("chocolate.csv")
scaled = StandardScaler().fit_transform(bars)

fig, ax = plt.subplots()
ax.set_title("Spread Kept by Each Component")
ax.set_xlabel("Component")
ax.set_ylabel("Share of spread")

# 아래에 코드를 작성하세요
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

비지도 학습의 모든 레슨

직접 연습해 보세요: 온라인 Python 컴파일러