Cosan  1.0
Data Analytics Library
PCATest.cpp
Go to the documentation of this file.
1 //
2 // Created by Xinyu Zhang on 3/26/21.
3 //
4 // gcc -I/Users/xinyuzhang/Desktop/Spring2021/c++pattern/project/cosan /Users/xinyuzhang/Desktop/Spring2021/c++pattern/project/cosan/test/preprocessor/PCATest.cpp
5 
6 #include <iostream>
7 #include <Eigen/Dense>
8 #include <Eigen/Core>
9 #include <cosan/data/CosanData.h>
10 #include <gsl/gsl>
15 
16 #include <vector>
17 #ifndef FMT_HEADER_ONLY
18 #define FMT_HEADER_ONLY
19 #endif
20 #include <fmt/format.h>
21 #include <numeric>
22 //using namespace Eigen;
23 //using namespace std;
24 
25 
26 int main() {
27 
28  // std::cout<< value1<<value2<<std::endl;
29  // std::cout<<X.col(i).array().isNaN().sum()<<std::endl;
30  Cosan::CosanMatrix X{5,3};
31  X << 1,2,2,
32  4,3,4,
33  2,4,6,
34  12,51,6,
35  435,4,15;
36  // (X.array().colwise()-X.colwise().minCoeff())/X.colwise().maxCoeff()-X.colwise().minCoeff();
37  std::cout<<X<<std::endl;
38 
39  Cosan::CosanMatrix centered = X.rowwise() - X.colwise().mean();
40  Cosan::CosanMatrix cov = centered.adjoint() * centered;
41 
42  Eigen::SelfAdjointEigenSolver<Cosan::CosanMatrix> eigensolver(cov);
43  if (eigensolver.info() != Eigen::Success) {
44  throw std::invalid_argument("Cannot solve eigenvalue decomposition.");}
45  std::cout<<eigensolver.eigenvalues()<<std::endl;
46  std::cout<<eigensolver.eigenvectors()<<std::endl;
47  std::cout<<eigensolver.eigenvectors().rightCols(2)<<std::endl;
48  centered = eigensolver.eigenvectors().rightCols(2);
49  std::vector<double> vec(eigensolver.eigenvalues().data(), eigensolver.eigenvalues().data() + eigensolver.eigenvalues().size());
50  std::reverse(vec.begin(),vec.end());
51  std::vector<double> runningSum(vec.size());
52  std::partial_sum(vec.begin(), vec.end(), runningSum.begin(), std::plus<double>());
53  for (auto & each :runningSum){
54  std::cout<<each<<std::endl;
55  }
56 
57 
58 
59  Cosan::CosanRawData CRD("./example_data/toy2/X_.csv","./example_data/toy2/Y_.csv");
60  std::cout<<CRD.GetSummaryMessageX()<<CRD.GetSummaryMessageY()<<std::endl;
61  Cosan::OverUnderFlow ouf(CRD);
62  Cosan::MissingValues MissV(CRD);
63  Cosan::MinmaxScaler MMS(CRD,3,5);
64  auto [value1, value2] = CRD.GetMissingNumber();
65  std::cout<< value1<<value2<<std::endl;
67 
68  // std::cout<<M.array().isNaN().sum()<<std::endl;
69  // CRD.GetTarget().rows()-CRD.GetTarget().array().isNaN().sum()
70  // CRD.GetTarget().array().isNaN().select(0,CRD.GetTarget())
71 
72  // std::cout<<CRD.GetTarget().array().isNaN().select(0,CRD.GetTarget()).sum()<<std::endl;
73 
74  // std::cout<<(1-CRD.GetTarget().array().isNaN()).cast<double>().array()*CRD.GetTarget().array()<<std::endl;
75 
76 
77  return 0;
78 }
Cosan::MinmaxScaler
Definition: minmaxscaler.h:12
CosanData.h
main
int main()
Definition: PCATest.cpp:26
Cosan::OverUnderFlow
Definition: overunderflow.h:14
Cosan::vec
std::vector< NumericType > vec
Definition: templateTest.cpp:14
Cosan::CosanMatrix
Eigen::Matrix< NumericType, Eigen::Dynamic, Eigen::Dynamic > CosanMatrix
Definition: CosanBO.h:37
minmaxscaler.h
principalcomponentanalysis.h
Cosan::PrincipalComponentAnalysis
Definition: principalcomponentanalysis.h:16
Cosan::CosanRawData
Raw Data container.
Definition: CosanData.h:36
overunderflow.h
Cosan::MissingValues
Definition: missingvalues.h:13
Cosan::CosanRawData::GetSummaryMessageY
const std::string & GetSummaryMessageY() const
Get the summary message on reading csv file on Y.
Definition: CosanData.h:192
Cosan::CosanRawData::GetSummaryMessageX
const std::string & GetSummaryMessageX() const
Get the summary message on reading csv file on X.
Definition: CosanData.h:187
missingvalues.h
Cosan::CosanRawData::GetMissingNumber
std::tuple< gsl::index, gsl::index > GetMissingNumber()
Get the total number data information.
Definition: CosanData.h:166