PCA算法的原理以及c++实现

论坛 期权论坛 脚本     
匿名技术用户   2021-1-14 20:12   259   0

PCA主成分分析,是模式识别中常见的特征降维的算法,其大体步骤可以分为以下几个部分:

(1)原始特征矩阵归一化处理(假设M和样本,每个样本n个特征,则对M*N的X数据,进行零均值化,即减去这一列的均值)

(2)求取归一化处理后特征矩阵的协方差矩阵

(3)计算协方差矩阵的特征值及其对应的特征向量

(4)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P;

(5)Y=PX即为降维到k维后的数据;

数据类型:(保存到文本里面即可读取)

10 2
2.5 2.4
0.5 0.7
2.2 2.9
1.9 2.2
3.1 3.0
2.3 2.7
2.0 1.6
1.0 1.1
1.5 1.6
1.1 0.9

这里先贴出完整代码,后续有时间,会具体整理一下算法流程:

#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<fstream>
#include "Eigen/Dense"
using namespace std;
using namespace Eigen;
void featurenormalize(MatrixXd &X)
{
 //计算每一维度均值
 MatrixXd meanval = X.colwise().mean();
 RowVectorXd meanvecRow = meanval;
 //样本均值化为0
 X.rowwise() -= meanvecRow;
}
void compute
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP