PCA.h 643 B

12345678910111213141516171819202122232425262728293031
  1. #ifndef PCA_H
  2. #define PCA_H
  3. #include "Eigen"
  4. #include <QVector>
  5. class PCA
  6. {
  7. public:
  8. PCA(const QVector<QVector<double>> &source, double thd = 0.85);
  9. void compute();
  10. QVector<double> weights() const;
  11. QVector<double> scores() const;
  12. private:
  13. Eigen::MatrixXd X; // 输入矩阵
  14. Eigen::MatrixXd C; // 协方差矩阵
  15. Eigen::MatrixXd reduced_;
  16. double variance_remain_;
  17. int rows_;
  18. int cols_;
  19. Eigen::MatrixXd contribution_rate_; // 特征贡献率
  20. Eigen::MatrixXd scores_; // 指标综合得分系数
  21. Eigen::MatrixXd weights_; // 指标权重
  22. };
  23. #endif // PCA_H