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

#include <polynomialfeatures.h>

Inheritance diagram for Cosan::PolynomialFeatures< NumericType >:
Cosan::Preprocessor< NumericType > Cosan::CosanBO

Public Member Functions

 PolynomialFeatures ()=delete
 
 PolynomialFeatures (CosanRawData< NumericType > &RD, std::vector< std::pair< gsl::index, NumericType >> um, bool add_back=false)
 
void SetInteractionFeatures (CosanRawData< NumericType > &RD, std::pair< gsl::index, gsl::index > pair, bool add_back=false)
 
decltype(auto) GetPolynomialFeatures ()
 
decltype(auto) GetInteractionFeatures ()
 
void UpdatePolynomialFeatures (CosanMatrix< NumericType > inputX)
 
- Public Member Functions inherited from Cosan::Preprocessor< NumericType >
 Preprocessor ()
 
virtual ~Preprocessor ()=default
 
virtual void fit (const CosanMatrix< NumericType > &X)
 
virtual CosanMatrix< NumericTypetransform (const CosanMatrix< NumericType > &X)
 
- Public Member Functions inherited from Cosan::CosanBO
 CosanBO ()
 Default constructor. More...
 
virtual const std::string GetName () const
 Get the name of the objects. More...
 

Private Attributes

CosanMatrix< NumericType__polynomialFeatures
 
CosanMatrix< NumericType__interactionFeatures
 

Detailed Description

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

Generate polynomial and interaction features. Generate a new feature matrix consisting of all polynomial combinations of the features with degree less than or equal to the specified degree.

Definition at line 14 of file polynomialfeatures.h.

Constructor & Destructor Documentation

◆ PolynomialFeatures() [1/2]

template<Numeric NumericType>
Cosan::PolynomialFeatures< NumericType >::PolynomialFeatures ( )
delete

◆ PolynomialFeatures() [2/2]

template<Numeric NumericType>
Cosan::PolynomialFeatures< NumericType >::PolynomialFeatures ( CosanRawData< NumericType > &  RD,
std::vector< std::pair< gsl::index, NumericType >>  um,
bool  add_back = false 
)
inline

Definition at line 17 of file polynomialfeatures.h.

17  : Preprocessor<NumericType>(){
18  fmt::print("*********************************\n");
19  fmt::print("Begin to generating polynomial features!!\n");
20 
21  decltype(auto) X = RD.GetInput();
22  __polynomialFeatures.conservativeResize(X.rows(),um.size());
23 // std::cout<<um.size()<<std::endl;
24 // X.conservativeResize(X.rows(),X.cols()+um.size());
25  gsl::index i = 0;
26  for (const auto & each : um) {
27  if (each.second>=3){
28  fmt::print("Your choice of power {:f} may be too big. High potential of overflow!",each.second);
29  }
30  __polynomialFeatures.col(i) = X.col(each.first).array().pow(each.second);
31  fmt::print("Generating power {:f} of Column {:d}!\n",each.second,each.first);
32  i++;
33  }
34  fmt::print("Finish generating polynomial features! Use .GetPolynomialFeatures() to get access it.\n");
35  fmt::print("*********************************\n");
36  if (add_back==true){
37  RD.ConcatenateData(__polynomialFeatures);
38  fmt::print("Notice that CRD.X has been modified. The dimension of X is ({:},{:}). {:} columns of polynomial features have been added.\n",RD.GetrowsX(),RD.GetcolsX(),__polynomialFeatures.cols());
39  }
40  }

Member Function Documentation

◆ GetInteractionFeatures()

template<Numeric NumericType>
decltype(auto) Cosan::PolynomialFeatures< NumericType >::GetInteractionFeatures ( )
inline

Definition at line 109 of file polynomialfeatures.h.

109 {return __interactionFeatures;}

◆ GetPolynomialFeatures()

template<Numeric NumericType>
decltype(auto) Cosan::PolynomialFeatures< NumericType >::GetPolynomialFeatures ( )
inline

Definition at line 108 of file polynomialfeatures.h.

108 {return __polynomialFeatures;}

◆ SetInteractionFeatures()

template<Numeric NumericType>
void Cosan::PolynomialFeatures< NumericType >::SetInteractionFeatures ( CosanRawData< NumericType > &  RD,
std::pair< gsl::index, gsl::index >  pair,
bool  add_back = false 
)
inline

Definition at line 41 of file polynomialfeatures.h.

41  {
42  fmt::print("*********************************\n");
43  fmt::print("Begin generating interaction features between {:d} and {:d}!!\n",pair.first,pair.second);
44  decltype(auto) X = RD.GetInput();
45  __interactionFeatures.conservativeResize(X.rows(),1);
46  __polynomialFeatures.col(0) = X.col(pair.first).array()*X.col(pair.second).array();
47  fmt::print("End of generating interaction features. Get access to it via .GetInteractionFeatures()\n",pair.first,pair.second);
48  fmt::print("*********************************\n");
49  if (add_back==true){
50  RD.ConcatenateData(__interactionFeatures);
51  fmt::print("Notice that CRD.X has been modified. The dimension of X is ({:d},{:d}). {:d} columns of interaction features have been added.\n",RD.GetrowsX(),RD.GetcolsX(),__interactionFeatures.cols());
52  }
53 
54  }

◆ UpdatePolynomialFeatures()

template<Numeric NumericType>
void Cosan::PolynomialFeatures< NumericType >::UpdatePolynomialFeatures ( CosanMatrix< NumericType inputX)
inline

Definition at line 110 of file polynomialfeatures.h.

110 {return __polynomialFeatures = inputX; }

Member Data Documentation

◆ __interactionFeatures

template<Numeric NumericType>
CosanMatrix<NumericType> Cosan::PolynomialFeatures< NumericType >::__interactionFeatures
private

Definition at line 113 of file polynomialfeatures.h.

◆ __polynomialFeatures

template<Numeric NumericType>
CosanMatrix<NumericType> Cosan::PolynomialFeatures< NumericType >::__polynomialFeatures
private

Definition at line 112 of file polynomialfeatures.h.


The documentation for this class was generated from the following file:
Cosan::PolynomialFeatures::GetInteractionFeatures
decltype(auto) GetInteractionFeatures()
Definition: polynomialfeatures.h:109
Cosan::PolynomialFeatures::__interactionFeatures
CosanMatrix< NumericType > __interactionFeatures
Definition: polynomialfeatures.h:113
Cosan::PolynomialFeatures::__polynomialFeatures
CosanMatrix< NumericType > __polynomialFeatures
Definition: polynomialfeatures.h:112