説明分散
CoddyのMachine Learningジャーニー「教師なし学習」セクションの一部。レッスン 27/51。
2つの成分ではどれだけ保持できたでしょうか?各成分は全体のばらつきに占める割合、つまり説明分散比を持ちます。13個すべてのワイン成分について:
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未満のものに加え、0.9を超えるものが1つあります。つまり、2Dのワインマップでは55%が保持されました。
チャレンジ
中級チョコレートの研究室では、1本あたり9項目を測定します。ばらつきの90%を保持するには、いくつの成分が必要でしょうか? scaled の準備はできています。
PCA()を当てはめ、各成分の寄与率を取得します。- 90%に達する成分数を出力します。
- 寄与率を1、2、3...の位置に棒グラフで描画し、ラベルを
each componentとします。累積合計はmarker="o"を使った折れ線で描画し、ラベルをrunning totalとします。0.9の位置に灰色の破線を引き、凡例を表示します。グラフを表示します。
別の研究室の場合:
Components for 90%: 4自分で試してみよう
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")
# 以下にコードを書いてください
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
教師なし学習のすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ