这块主要参考这个博文,写的很好:一文让你彻底搞懂主成成分分析PCA的原理及代码实现(超详细推导)
唯一的疑问是这份代码,自己跑出来的结果第二维数据的符号与原文符号正好相反。有朋友看到可以跑出来一起看下结果:
import numpy as np
from sklearn.decomposition import PCA# 3 x 5 , 3维特征,5组数据
data = np.array([[-1,-1,0,2,1],[2,0,0,-1,-1],[2,0,1,1,0]], dtype=np.float)
k = 2pca = PCA(n_components=k)
# 注意转置
new_data = pca.fit_transform(data.T)
# 降维后的数据各个维度特征 所占信息比例
ratios = pca.explained_variance_ratio_print(new_data,ratios)
# 输出
[[ 2.50856792 -0.76054613][ 0.59089386 1.31546989][ 0.19057608 -0.02787302][-1.84517782 -0.93519683][-1.44486004 0.40814608]][0.7801724 0.21479774]
自测输出:
[[ 2.50856792 0.76054613][ 0.59089386 -1.31546989][ 0.19057608 0.02787302][-1.84517782 0.93519683][-1.44486004 -0.40814608]][0.7801724 0.21479774]
———————————————————————————————————————————————————————————
额。。。找到根源,具体原因未知:在python3.11.15下是自测的结果,在python3.9.19的情况下是第一种结果,可能和变换的轴方向不一样