PCA.h 784 B

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