网上已经有非常多的大佬讲解了PCA的原理,我这里不再赘述原理问题,主要说一说如何用代码实现我们PAC与Python自己的库
如果有小伙伴想了解PCA的具体数学原理,我推荐大家看看这两篇文章,讲的都非常到位了。
主成分分析(Principal components analysis)-最大方差解释www.cnblogs.com![93a0016c8d1e500f76944d6202ea65dc.png](https://i-blog.csdnimg.cn/blog_migrate/5a1a6e772406027a24803851e50a0e8b.png)
那么我们就开始讲解我们的实现步骤:
我们假定data是我们事先读入的CSV文件中的数据
X是我们的特征值,y是我们的类标
第一步:对我们的原始数据进行标准化处理
from sklearn import StandarScaler
sc = StandarScaler()
X_std = sc.fit_transform(X)
第二步:构造协方差矩阵
第三步:得到特征值和特征向量
import numpy as np
cov_mat = np.cov()//得到协方差矩阵
vals,vecs = np.linalg.eig(cov_mat)//得到特征值和特征向量
第四步:得到前K个特征值对应的特征向量
第五步:构造特征向量组成矩阵
pairs = [(np.abs(vals[i],vector[:,i]) for i in range(len(vals)))]
pairs.sort(reverse = True)
w = np.hstack((pairs[0][1][:,np.newaxis],pairs[1][1][:,np.newaxis]))
最后让我们的数据集点乘这个矩阵即可
我们也可以使用scikit-learn进行主成分分析
from sklearn.decomposition import PCA
pca=PCA(n_components=2)
X=pca.fit_transform(X)
好了,实现就是这么简单明了,但是如果要搞懂其背后的数学含义还是要下一番大功夫的。