PCA编程实现小结

2019-08-22  本文已影响0人  Jana_LU

分析思路:

先导入pandas、numpy包;

定义一个myPCA,传入data及n_components参数,并设置components为1000000维;

①先求每个属性的平均值,即按列求平均值,并将结果赋予mean_vals;

②将每列数据减去该列平均数,得到新的data,并赋予mid;

③求mid的协方差矩阵,将结果赋予cov_mat;

④引入scipy的linalg包;

⑤通过linalg.eig求协方差矩阵cov_mat的特征值和特征向量,并将结果赋予eig_vals,eig_vects;

⑥求最大特征值。先将特征值通过np.argsort进行排序,然后取最大特征值,并将结果赋予eig_val_index;

⑦求最大特征值特征向量,将结果赋给eig_vects;

⑧用mid乘以特征向量eig_vects,得到转换后的矩阵low_dim_mat;

⑨返回降维后的矩阵和特征值。

代码实现如下:

返回结果为:

(array([[-0.82797019],

       [ 1.77758033],

       [-0.99219749],

       [-0.27421042],

       [-1.67580142],

       [-0.9129491 ],

       [ 0.09910944],

       [ 1.14457216],

       [ 0.43804614],

       [ 1.22382056]]), array([0.0490834 +0.j, 1.28402771+0.j]))

上一篇下一篇

猜你喜欢

热点阅读