解释方差
本课属于 Coddy Machine Learning 学习旅程的“无监督学习”单元。第 27 课,共 51 课。
2 个组件保留了多少信息?每个组件都占总方差的一部分,这就是它的解释方差比。对于全部 13 个葡萄酒组件:
不设置 n_components 时,PCA() 会保留所有主成分。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 的值。所以,2D 葡萄酒图保留了 55%。
挑战
中等巧克力实验室会测量每块巧克力的 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 在线编译器