本文主要是介绍如何确定PCA降维的维度,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
主要是对西瓜书里面的一个思路的实现,并不涉及PCA原理和公式推导,用一句话总结PCA,在 R d R^{d} Rd中的m个点经过矩阵变换(压缩)映射到 R d ′ R^{d'} Rd′空间中,并且保证 d ′ < d d'<d d′<d,其中 d ′ d' d′是新维度。
用矩阵表示: Z d ′ ∗ m = W d ′ ∗ d T ∗ X d ∗ m Z_{d'*m}=W^{T}_{d'*d} * X_{d*m} Zd′∗m=Wd′∗dT∗Xd∗m
其中下标是矩阵行列数,和现实里面刚好反过来;Z是样本转换后的矩阵,X是样本最初的矩阵,W是转换(投影)矩阵。
文章目录
- 一、思路
- 二、代码实现
- 三、补充资料
一、思路
周志华老师《机器学习》P231
二、代码实现
主要是通过sklearn实现,比较简单
def get_pca(X,threshold):pca=PCA()pca.fit(X)variance_ratio=pca.explained_variance_ratio_s=0for i in range(len(variance_ratio)):s=s+variance_ratio[i]if s>=threshold:breaknew_dim=i+1components=pca.components_change_matrix=components[0:new_dim,:]norm_X=X-np.mean(X,axis=0)X_pca=np.matmul(norm_X,change_matrix.T)return X_pca
后来我用PCA(n_components=new_dim).fit_transform(X)和这个函数的结果对比过,主要是数值的精度不同,结果都正确。
三、补充资料
原理可以去看看这篇博客主成分分析(PCA)原理详解
另外花书的第二章和西瓜书的第十章都有比较详细的原理讲解以及公式推导。
这篇关于如何确定PCA降维的维度的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!