#ifndef PCA_H #define PCA_H #include "Eigen" #include class PCA { public: /** * @brief PCA * @param source : 输入矩阵,一行代表一个样本, 每列对应一个指标 * @param thd */ PCA(const QVector> &source, double thd = 0.85); void compute(); QVector weights() const; QVector scores() const; private: Eigen::MatrixXd X; // 输入矩阵 Eigen::MatrixXd C; // 协方差矩阵 Eigen::MatrixXd reduced_; double variance_remain_; int rows_; int cols_; Eigen::MatrixXd contribution_rate_; // 特征贡献率 Eigen::MatrixXd scores_; // 指标综合得分系数 Eigen::MatrixXd weights_; // 指标权重 }; #endif // PCA_H