Cosan  1.0
Data Analytics Library
CosanLinearModel.h
Go to the documentation of this file.
1 //
2 // Created by Xinyu Zhang on 3/27/21.
3 //
4 
5 #ifndef COSAN_COSANLINEARMODEL_H
6 #define COSAN_COSANLINEARMODEL_H
8 #include <cosan/data/CosanData.h>
9 
10 namespace Cosan{
11  /**
12  * @brief CosanLinear Model. All linear model inherit this object.
13  * @details To initialize model object, one can do
14  * @code model(); // The default constructor where the model is without intercept. @endcode
15  * @code model(bool bias); @endcode
16  * @code model(NumericType param, bool bias);//for model with only one parameter. Ridge regression and PCR are the cases. @endcode
17  * @code model(std::vector<NumericType> params, bool bias);//for model with more than one parameter. Each parameter is the enry of params. PCR with L2 square norm is the case. @endcode
18  * To initialize model object and run model fitting automatically, one can do
19  * @code model(CosanRawData<NumericType> RD,NumericType param ,bool bias = false); @endcode
20  * @code model(CosanData<NumericType> CD,NumericType param ,bool bias = false); @endcode
21  * @code model(CosanMatrix<NumericType> X,CosanMatrix<NumericType> Y,NumericType param,bool bias = false); @endcode
22  * For model with more than 1 parameter, one should replace `NumericType param` by `std::vector<NumericType> params`.
23  * @code model.fit(CosanMatrix<NumericType> X,CosanMatrix<NumericType> Y); @endcode
24  * @code model.predict(CosanMatrix<NumericType> X); @endcode
25  * To set new params and get current params, one can do
26  * @code model.SetParams(NumericType param); //for model with more than 1 parameter, input should be std::vecotr<NumericType> params @endcode
27  * @code model.GetParams(); @endcode
28  * To obtain the coefficient for the model one can use
29  * @code model.GetBeta(); @endcode
30  **/
31  template<Numeric NumericType>
32  class CosanLinearModel: public CosanModel {
33  // Initialization
34  public:
35  CosanLinearModel()=delete;
37  Init();
38  MBias=Bias;
39  }
40  // Coefficients
41  void SetBias(const bool NewBias){MBias = NewBias;}
42  virtual void SetBeta(CosanMatrix<NumericType> InitBeta){MBeta=InitBeta;}
43 
44  const CosanMatrix<NumericType>& GetBeta() const {return MBeta;}
45  bool GetBias() const {return MBias;}
46  // virtual void SetFeatures(InputFeatures* X){MInputX=X;}
47 
48 // template<class T,
49 // std::enable_if_t<std::is_same_v<std::decay_t<T>,std::vector<NumericType>>,bool> =true>
50 // virtual void fit( T && X , CosanMatrix<NumericType>& Y){}
51 
53  // Utils
54  virtual const std::string GetName() const {return "LinearModel";}
55  protected:
57  bool MBias;
58  private:
59  void Init(){
60  }
61  };
62 
63 }
64 
65 #endif //COSAN_COSANLINEARMODEL_H
CosanData.h
Cosan::CosanLinearModel::Init
void Init()
Definition: CosanLinearModel.h:59
Cosan
Definition: CosanBO.h:29
Cosan::CosanLinearModel::MBias
bool MBias
Definition: CosanLinearModel.h:57
Cosan::CosanLinearModel::CosanLinearModel
CosanLinearModel()=delete
Cosan::CosanLinearModel::GetBeta
const CosanMatrix< NumericType > & GetBeta() const
Definition: CosanLinearModel.h:44
Cosan::CosanLinearModel::CosanLinearModel
CosanLinearModel(bool Bias)
Definition: CosanLinearModel.h:36
Cosan::CosanMatrix
Eigen::Matrix< NumericType, Eigen::Dynamic, Eigen::Dynamic > CosanMatrix
Definition: CosanBO.h:37
Cosan::CosanLinearModel::SetBeta
virtual void SetBeta(CosanMatrix< NumericType > InitBeta)
Definition: CosanLinearModel.h:42
Cosan::CosanLinearModel::MBeta
CosanMatrix< NumericType > MBeta
Definition: CosanLinearModel.h:56
Cosan::CosanLinearModel::GetName
virtual const std::string GetName() const
Get the name of the objects.
Definition: CosanLinearModel.h:54
Cosan::CosanLinearModel
CosanLinear Model. All linear model inherit this object.
Definition: CosanLinearModel.h:32
Cosan::CosanModel
Base Object for CosanModel.
Definition: CosanModel.h:39
Cosan::CosanLinearModel::GetBias
bool GetBias() const
Definition: CosanLinearModel.h:45
CosanModel.h
Cosan::CosanLinearModel::predict
virtual CosanMatrix< NumericType > predict(const CosanMatrix< NumericType > &X)=0
Cosan::CosanLinearModel::SetBias
void SetBias(const bool NewBias)
Definition: CosanLinearModel.h:41