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]))