Cosan  1.0
Data Analytics Library
Cosan::CosanLinearRegression< NumericType > Class Template Reference

#include <CosanLinearRegression.h>

Inheritance diagram for Cosan::CosanLinearRegression< NumericType >:
Cosan::CosanLinearModel< NumericType > Cosan::CosanModel Cosan::CosanBO Cosan::CosanElasticNet< NumericType > Cosan::CosanLasso< NumericType > Cosan::CosanRidgeRegression< NumericType >

Public Member Functions

 CosanLinearRegression ()
 
 CosanLinearRegression (bool Bias)
 
template<class T , std::enable_if_t< std::is_same_v< std::decay_t< T >, CosanMatrix< NumericType >>, bool > = true>
 CosanLinearRegression (T &&X, const CosanMatrix< NumericType > &Y, bool Bias)
 
 CosanLinearRegression (CosanRawData< NumericType > &RD, bool Bias)
 
 CosanLinearRegression (CosanData< NumericType > &CD, bool Bias)
 
virtual EModelType GetModelType () override
 
virtual EProblemType GetProblemType () override
 
virtual const std::string GetName () const override
 Get the name of the objects. More...
 
template<class T , std::enable_if_t< std::is_same_v< std::decay_t< T >, CosanMatrix< NumericType >>, bool > = true>
void fit (T &&X, const CosanMatrix< NumericType > &Y)
 
virtual CosanMatrix< NumericTypepredict (const CosanMatrix< NumericType > &X) override
 
- Public Member Functions inherited from Cosan::CosanLinearModel< NumericType >
 CosanLinearModel ()=delete
 
 CosanLinearModel (bool Bias)
 
void SetBias (const bool NewBias)
 
virtual void SetBeta (CosanMatrix< NumericType > InitBeta)
 
const CosanMatrix< NumericType > & GetBeta () const
 
bool GetBias () const
 
- Public Member Functions inherited from Cosan::CosanModel
 CosanModel ()
 
virtual void SetMaxTrainTime (double t)
 
virtual double GetMaxTrainTime () const
 
virtual ESolverType GetSolverType () const
 
void SetSolverType (ESolverType sr)
 
- Public Member Functions inherited from Cosan::CosanBO
 CosanBO ()
 Default constructor. More...
 

Additional Inherited Members

- Protected Attributes inherited from Cosan::CosanLinearModel< NumericType >
CosanMatrix< NumericTypeMBeta
 
bool MBias
 
- Protected Attributes inherited from Cosan::CosanModel
double MaxTrainTime
 
ESolverType SolverType
 

Detailed Description

template<Numeric NumericType>
class Cosan::CosanLinearRegression< NumericType >

y = a+bx minimize \sum_{i=1}^n (y_i-a-b^T x_i)^2 -> find the optimal a and b

Template Parameters
NumericTypehttps://en.wikipedia.org/wiki/Linear_regression

Definition at line 20 of file CosanLinearRegression.h.

Constructor & Destructor Documentation

◆ CosanLinearRegression() [1/5]

template<Numeric NumericType>
Cosan::CosanLinearRegression< NumericType >::CosanLinearRegression ( )
inline

Definition at line 23 of file CosanLinearRegression.h.

23 : CosanLinearModel<NumericType>(false){}

◆ CosanLinearRegression() [2/5]

template<Numeric NumericType>
Cosan::CosanLinearRegression< NumericType >::CosanLinearRegression ( bool  Bias)
inline

Definition at line 24 of file CosanLinearRegression.h.

24 : CosanLinearModel<NumericType>(Bias){}

◆ CosanLinearRegression() [3/5]

template<Numeric NumericType>
template<class T , std::enable_if_t< std::is_same_v< std::decay_t< T >, CosanMatrix< NumericType >>, bool > = true>
Cosan::CosanLinearRegression< NumericType >::CosanLinearRegression ( T &&  X,
const CosanMatrix< NumericType > &  Y,
bool  Bias 
)
inline

Definition at line 28 of file CosanLinearRegression.h.

28  : CosanLinearModel<NumericType>(Bias){
29  fit(X,Y);
30  }

◆ CosanLinearRegression() [4/5]

template<Numeric NumericType>
Cosan::CosanLinearRegression< NumericType >::CosanLinearRegression ( CosanRawData< NumericType > &  RD,
bool  Bias 
)
inline

Definition at line 32 of file CosanLinearRegression.h.

32  : CosanLinearModel<NumericType>(Bias){
33  fit(RD.GetInput(),RD.GetTarget());
34  }

◆ CosanLinearRegression() [5/5]

template<Numeric NumericType>
Cosan::CosanLinearRegression< NumericType >::CosanLinearRegression ( CosanData< NumericType > &  CD,
bool  Bias 
)
inline

Definition at line 35 of file CosanLinearRegression.h.

35  : CosanLinearModel<NumericType>(Bias){
36  fit(CD.GetInput(),CD.GetTarget());
37  }

Member Function Documentation

◆ fit()

template<Numeric NumericType>
template<class T , std::enable_if_t< std::is_same_v< std::decay_t< T >, CosanMatrix< NumericType >>, bool > = true>
void Cosan::CosanLinearRegression< NumericType >::fit ( T &&  X,
const CosanMatrix< NumericType > &  Y 
)
inline

Definition at line 55 of file CosanLinearRegression.h.

55  {
56  if (this->MBias==true){
57  X.conservativeResize(X.rows(), X.cols()+1);
58  X.col(X.cols()-1) = CosanMatrix<NumericType>::Ones(X.rows(),1);
59  }
60  this->MBeta = (X.transpose()*X).ldlt().solve(X.transpose()*Y);
61  if (this->MBias==true){
62  removeColumn(X,X.cols()-1);
63  }
64  }

◆ GetModelType()

template<Numeric NumericType>
virtual EModelType Cosan::CosanLinearRegression< NumericType >::GetModelType ( )
inlineoverridevirtual

Reimplemented from Cosan::CosanModel.

Reimplemented in Cosan::CosanRidgeRegression< NumericType >.

Definition at line 44 of file CosanLinearRegression.h.

44  {
45  return MdLinearRegression;
46  };

◆ GetName()

template<Numeric NumericType>
virtual const std::string Cosan::CosanLinearRegression< NumericType >::GetName ( ) const
inlineoverridevirtual

Get the name of the objects.

Description: Get the name of the object. It should return "Abstract Object"

Reimplemented from Cosan::CosanLinearModel< NumericType >.

Reimplemented in Cosan::CosanRidgeRegression< NumericType >.

Definition at line 49 of file CosanLinearRegression.h.

49  {
50  return "Linear Regression/ Ordinary Least Square";}

◆ GetProblemType()

template<Numeric NumericType>
virtual EProblemType Cosan::CosanLinearRegression< NumericType >::GetProblemType ( )
inlineoverridevirtual

Reimplemented from Cosan::CosanModel.

Definition at line 47 of file CosanLinearRegression.h.

47  {
48  return PdUnivariateRegression;}

◆ predict()

template<Numeric NumericType>
virtual CosanMatrix<NumericType> Cosan::CosanLinearRegression< NumericType >::predict ( const CosanMatrix< NumericType > &  X)
inlineoverridevirtual

Implements Cosan::CosanLinearModel< NumericType >.

Definition at line 75 of file CosanLinearRegression.h.

75  {
76  if (this->MBias==true){
77 // std::vector<int> idx(X.cols()-1);
78 // std::iota(std::begin(idx), std::end(idx), 0);
79 
80 // return (X*MBeta.block(0,0,X.cols(),1)).array()+MBeta(X.cols(),0);
81  return (X*this->MBeta(Eigen::seq(0,X.cols()-1),Eigen::all)).array()+this->MBeta(X.cols(),0);
82  }
83  else{return X*this->MBeta;}
84  }

The documentation for this class was generated from the following file:
Cosan::CosanLinearModel::MBias
bool MBias
Definition: CosanLinearModel.h:57
Cosan::CosanLinearModel::MBeta
CosanMatrix< NumericType > MBeta
Definition: CosanLinearModel.h:56
Cosan::CosanLinearRegression::fit
void fit(T &&X, const CosanMatrix< NumericType > &Y)
Definition: CosanLinearRegression.h:55
Cosan::MdLinearRegression
@ MdLinearRegression
Definition: CosanModel.h:23
Cosan::PdUnivariateRegression
@ PdUnivariateRegression
Definition: CosanModel.h:16
removeColumn
void removeColumn(Matrix &matrix, gsl::index colToRemove)
Definition: utils.h:22