赞
踩
这是本人在学习PCA降维的过程中,根据算法写成的C++代码。
PCA是模式识别中常见的特征降维的算法,其大体步骤可以分为以下几个部分:
(1)原始特征矩阵归一化处理
(2)求取归一化处理后特征矩阵的协方差矩阵
(3)计算协方差矩阵的特征值及其对应的特征向量
(4)按照特征值从大到小排列特征向量
(5)从大到小,挑选出前K个特征值对应的特征向量组成降维后的特征向量,即为所求。
注:在求取特征值和特征向量的过程中,借助了C++ Eigen库,需要自行安装和配置该库。
- //PCA_Demension.h文件
- #pragma once
- #include<iostream>
- #include<vector>
- #include<map>
- #include<Eigen/Dense>
- using namespace Eigen;
- using Eigen::MatrixXd;
- using namespace std;
- //pca降维代码的实现 2017.02.16
- //copyright: PH-SCUT
- class PCA_Demension
- {
- public:
- PCA_Demension(void);
- ~PCA_Demension(void);
- int covariance(vector<double> x, double x_mean, vector<double> y, double y_mean, double & result);
- int PCA_demension(vector<vector<double> > Feature_Data, int k, vector<vector<double> > & PCA_Features,vector<vector<double> > & Final_Data);
- };
-
- #include "PCA_Demension.h"
-
-
- PCA_Demension::PCA_Demension(void)
- {
- }
-
-
- PCA_Demension::~PCA_Demension(void)
- {
- }
-
- /*
- 函数名称:covariance
- 函数功能:协方差求取
- 输入:ve
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。