Cosan  1.0
Data Analytics Library
CosanPrincipalComponentRegression.h
Go to the documentation of this file.
1 //
2 // Created by Xinyu Zhang on 4/7/21.
3 //
4 
5 #ifndef COSAN_COSANPRINCIPALCOMPONENTREGRESSION_H
6 #define COSAN_COSANPRINCIPALCOMPONENTREGRESSION_H
7 
10 #include <numeric>
11 namespace Cosan
12 {
13 // template<typename NumericType,
14 // typename = typename std::enable_if<std::is_arithmetic<NumericType>::value,NumericType>::type>
15  /**
16  * @tparam NumericType
17  * @details https://en.wikipedia.org/wiki/Principal_component_regression
18  */
19  template<Numeric NumericType>
21  public:
22 // Initialization
23 
25  __ncomp = 3;}
27  __ncomp = ncomp;}
29  __ncomp = ncomp;
30  fit(RD.GetInput(),RD.GetTarget());
31  }
33  __ncomp = ncomp;
34  fit(CD.GetInput(),CD.GetTarget());
35  }
36 
37  template<class T,
38  std::enable_if_t<std::is_same_v<std::decay_t<T>,CosanMatrix<NumericType>>,bool> = true >
40  __ncomp = ncomp;
41  PC = PrincipalComponentAnalysis(X,(gsl::index) ncomp).GetPC();
43  this->MBeta = (DerivatedCovariate.transpose()*DerivatedCovariate).ldlt().solve(DerivatedCovariate.transpose()*Y);
44  }
45 
46  virtual EModelType GetModelType() override {
48  };
49 
51  return PdUnivariateRegression;}
52  virtual const std::string GetName() const override {
53  return "Principal Component Regression with least square";}
54 
55  template<class T,
56  std::enable_if_t<std::is_same_v<std::decay_t<T>,CosanMatrix<NumericType>>,bool> =true>
57  void fit(T&& X,const CosanMatrix<NumericType>& Y) {
60  this->MBeta = (DerivatedCovariate.transpose()*DerivatedCovariate).ldlt().solve(DerivatedCovariate.transpose()*Y);
61  }
62 
64  return X*PC*(this->MBeta);
65  }
66  CosanMatrix<NumericType> &GetPC() {return PC;}
67 
68  void SetParams(NumericType ncomp) {__ncomp = ncomp; };
70 
71  protected:
75  };
76 }
77 
78 
79 
80 #endif //COSAN_COSANPRINCIPALCOMPONENTREGRESSION_H
Cosan
Definition: CosanBO.h:29
Cosan::CosanRawData::GetInput
CosanMatrix< NumericType > GetInput()
Get a copy of CosanMatrix<NumericType> X.
Definition: CosanData.h:141
Cosan::CosanRawData::GetTarget
CosanMatrix< NumericType > GetTarget()
Get a copy of CosanMatrix<NumericType> Y.
Definition: CosanData.h:147
Cosan::CosanPrincipalComponentRegression::CosanPrincipalComponentRegression
CosanPrincipalComponentRegression(CosanRawData< NumericType > &RD, NumericType ncomp, bool bias=false)
Definition: CosanPrincipalComponentRegression.h:28
Cosan::CosanPrincipalComponentRegression::GetProblemType
virtual EProblemType GetProblemType()
Definition: CosanPrincipalComponentRegression.h:50
NumericType
double NumericType
Definition: onehotencodingTest.cpp:20
Cosan::CosanPrincipalComponentRegression
Definition: CosanPrincipalComponentRegression.h:20
Cosan::EModelType
EModelType
Definition: CosanModel.h:21
Cosan::CosanPrincipalComponentRegression::GetParams
NumericType GetParams()
Definition: CosanPrincipalComponentRegression.h:69
Cosan::CosanPrincipalComponentRegression::GetPC
CosanMatrix< NumericType > & GetPC()
Definition: CosanPrincipalComponentRegression.h:66
Cosan::CosanPrincipalComponentRegression::predict
virtual CosanMatrix< NumericType > predict(const CosanMatrix< NumericType > &X) override
Definition: CosanPrincipalComponentRegression.h:63
Cosan::CosanMatrix
Eigen::Matrix< NumericType, Eigen::Dynamic, Eigen::Dynamic > CosanMatrix
Definition: CosanBO.h:37
Cosan::CosanLinearModel::MBeta
CosanMatrix< NumericType > MBeta
Definition: CosanLinearModel.h:56
Cosan::CosanPrincipalComponentRegression::__ncomp
NumericType __ncomp
Definition: CosanPrincipalComponentRegression.h:72
Cosan::CosanData
Data container.
Definition: CosanData.h:546
Cosan::CosanLinearModel
CosanLinear Model. All linear model inherit this object.
Definition: CosanLinearModel.h:32
Cosan::EProblemType
EProblemType
Definition: CosanModel.h:13
principalcomponentanalysis.h
Cosan::CosanPrincipalComponentRegression::PC
CosanMatrix< NumericType > PC
Definition: CosanPrincipalComponentRegression.h:73
Cosan::CosanPrincipalComponentRegression::CosanPrincipalComponentRegression
CosanPrincipalComponentRegression(T &&X, const CosanMatrix< NumericType > &Y, NumericType ncomp, bool bias=false)
Definition: CosanPrincipalComponentRegression.h:39
Cosan::PrincipalComponentAnalysis::GetPC
CosanMatrix< NumericType > & GetPC()
Definition: principalcomponentanalysis.h:34
Cosan::PrincipalComponentAnalysis
Definition: principalcomponentanalysis.h:16
Cosan::CosanPrincipalComponentRegression::fit
void fit(T &&X, const CosanMatrix< NumericType > &Y)
Definition: CosanPrincipalComponentRegression.h:57
Cosan::CosanRawData
Raw Data container.
Definition: CosanData.h:36
Cosan::CosanPrincipalComponentRegression::GetName
virtual const std::string GetName() const override
Get the name of the objects.
Definition: CosanPrincipalComponentRegression.h:52
Cosan::PdUnivariateRegression
@ PdUnivariateRegression
Definition: CosanModel.h:16
Cosan::CosanPrincipalComponentRegression::DerivatedCovariate
CosanMatrix< NumericType > DerivatedCovariate
Definition: CosanPrincipalComponentRegression.h:74
Cosan::CosanPrincipalComponentRegression::SetParams
void SetParams(NumericType ncomp)
Definition: CosanPrincipalComponentRegression.h:68
Cosan::CosanPrincipalComponentRegression::GetModelType
virtual EModelType GetModelType() override
Definition: CosanPrincipalComponentRegression.h:46
CosanLinearModel.h
Cosan::CosanPrincipalComponentRegression::CosanPrincipalComponentRegression
CosanPrincipalComponentRegression(NumericType ncomp, bool bias=false)
Definition: CosanPrincipalComponentRegression.h:26
Cosan::CosanPrincipalComponentRegression::CosanPrincipalComponentRegression
CosanPrincipalComponentRegression()
Definition: CosanPrincipalComponentRegression.h:24
Cosan::CosanPrincipalComponentRegression::CosanPrincipalComponentRegression
CosanPrincipalComponentRegression(CosanData< NumericType > &CD, NumericType ncomp, bool bias=false)
Definition: CosanPrincipalComponentRegression.h:32
Cosan::MdPrincipalComponentRegression
@ MdPrincipalComponentRegression
Definition: CosanModel.h:25