0.理论
维度灾难:当数据有很多维度时,会引发一系列的问题。它会导致预测的结果不准确,并且很难进行可视化。
主成分分析:PCA就是在高维空间中选择能够保持数据中大多数方差的超平面,然后将数据投射到这些高维平面上,从而得到一个低维的数据空间。PCA是一种非常有用的工具,可用于压缩、特征提取、面部识别。
1.对鸢尾花数据集的PCA示例
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
iris = load_iris()
# 获取数据
X = iris.data
print(X.shape)
y = iris.target
print(y[:10])
(150, 4)
[0 0 0 0 0 0 0 0 0 0]
# PCA降维至2个维度
pca = PCA(n_components=2).fit(X)
X_pca = pca.transform(X)
# 从(150, 4)降至(150,2)
print('降维后的数据集大小:\n{}'.format(X_pca.shape))
# 降维后能保留原数据97.8%的方差
print('降维后的方差占比:\n{}'.format(sum(pca.explained_variance_ratio_)))
降维后的数据集大小:
(150, 2)
降维后的方差占比:
0.9776852063187949
import matplotlib.pyplot as plt
# 对每一种花画散点图
for i in range(len(iris.target_names)):
x = X_pca[iris.target == i, 0]
y = X_pca[iris.target == i, 1]
label = iris.target_names[i]
plt.scatter(x, y, label = label)
plt.legend()
plt.show()
2.参考资料
Python数据科学与机器学习:从入门到实践
作者:
[美]弗兰克•凯恩(Frank Kane)