一、主成分分析概念
主成分分析(Principal Component Analysis)简称PCA,是一个非监督学习的机器学习算法,主要用于数据的降维,对于高维数据,通过降维,可以发现更便于人类理解的特征。PCA是实现数据降维的一种算法。
1.主成分分析基本思路
通过协方差分析,建立高维空间到低维空间的线性映射/矩阵。
保留尽可能多的样本信息。
压缩后的数据对分类、聚类尽量不产生影响,甚至有所提升。
2.主成分分析原理
特征消除和特征提取是两种降维的方法。特征消除是将会在直接消除那些我们觉得不重要的特征,这会使我们对视这些特征中的很多信息。而特征提取则是通过组合现有特征来创建新变量,可以尽量保存特征中存在的信息。
PCA是一种常见的数据降维算法,PCA会将关系紧密的变量变成尽可能少的新变量,使这些新变量是两两不相关的,于是就可以用较少的综合指标分别代表存在于各个变量中的各类信息。PCA的核心思想是找到一个维数更低的仿射集,然后将所有的数据点在其上做投影,以得到新的在更低维空间中的点作为新的数据。
3.主成分分析算法流程
计算数据集{xi}的均值
计算协方差矩阵
计算S的特征向量:
根据特征准则(如压缩到d维,或保留特定能量比 例)选择d个特征向量 ,并且组成变换矩阵:
二、PCA主成分分析实战
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
iris = load_iris()
Y = iris.target # 数据集标签 ['setosa', 'versicolor', 'virginica'],山鸢尾、变色鸢尾、维吉尼亚鸢尾
X = iris.data # 数据集特征 四维,花瓣的长度、宽度,花萼的长度、宽度
pca = PCA(n_components=2)
pca = pca.fit(X)
X_dr = pca.transform(X)
# 对三种鸢尾花分别绘图
colors = ['red', 'black', 'orange']
# iris.target_names
plt.figure()
for i in [0, 1, 2]:
plt.scatter(X_dr[Y == i, 0],
X_dr[Y == i, 1],
alpha=1,
c=colors[i],
label=iris.target_names[i])
plt.legend()
plt.title('PCA of IRIS dataset')
plt.show()
分析:上述代码操作即为使用主成分分析算法对鸢尾花数据集进行分析,根据鸢尾花数据集的介绍,通过特征准则的判断,具体判断出该鸢尾花为哪一种类型的鸢尾花。
结果展示:
三、总结
这次实验我们了解了关于主成分分析(PCA)的具体运用方法,了解了它的概念方法,原理,以及实战的一些方法。知道了PCA是一种无监督学习算法,它通过最大化方差来选择主成分,但在降维过程中可能会丢失一些重要信息,特别是低方差的主成分往往包含了一些有用的局部模式。同时,PCA只能处理线性关系,对于非线性关系的数据降维效果不好。PCA是一种简单而有效的降维算法,在很多数据处理和特征提取的场景下都有广泛应用。然而,对于一些特定问题,可能需要考虑其他更适合的降维方法,例如流形学习等非线性降维技术。