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

#include <normalizer.h>

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

Public Member Functions

 Normalizer (CosanRawData< NumericType > &RD)
 
 ~Normalizer () override=default
 
 Normalizer (CosanRawData< NumericType > &RD, int new_p)
 
int Getp () const
 
CosanColVector< NumericTypeGetSampleNorm ()
 
void Setp (int new_p)
 
- Public Member Functions inherited from Cosan::Preprocessor< NumericType >
 Preprocessor ()
 
virtual ~Preprocessor ()=default
 
- Public Member Functions inherited from Cosan::CosanBO
 CosanBO ()
 Default constructor. More...
 
virtual const std::string GetName () const
 Get the name of the objects. More...
 

Protected Member Functions

void fit (CosanRawData< NumericType > &RD)
 
void fit (const CosanMatrix< NumericType > &X) override
 
CosanMatrix< NumericTypetransform (const CosanMatrix< NumericType > &X) override
 

Private Attributes

int p
 
bool exist_zero
 
CosanColVector< NumericTypeSampleNorm
 
std::set< int > plist = {1,2,std::numeric_limits<int>::max()}
 

Detailed Description

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

Scale input vectors individually to unit norm (vector length).

Definition at line 12 of file normalizer.h.

Constructor & Destructor Documentation

◆ Normalizer() [1/2]

template<Numeric NumericType>
Cosan::Normalizer< NumericType >::Normalizer ( CosanRawData< NumericType > &  RD)
inline

Definition at line 14 of file normalizer.h.

14  : Preprocessor<NumericType>() {
15  p = 2;
16  this->fit(RD);
17  }

◆ ~Normalizer()

template<Numeric NumericType>
Cosan::Normalizer< NumericType >::~Normalizer ( )
overridedefault

◆ Normalizer() [2/2]

template<Numeric NumericType>
Cosan::Normalizer< NumericType >::Normalizer ( CosanRawData< NumericType > &  RD,
int  new_p 
)
inline

Definition at line 19 of file normalizer.h.

19  : Preprocessor<NumericType>(){
20  if (plist.find(new_p)==plist.end()){
21  throw std::invalid_argument(
22  "Choose p from 1, 2 or std::numeric_limits<int>::max()!"
23  );
24  }
25  p = new_p;
26  this->fit(RD);
27  }

Member Function Documentation

◆ fit() [1/2]

template<Numeric NumericType>
void Cosan::Normalizer< NumericType >::fit ( const CosanMatrix< NumericType > &  X)
inlineoverrideprotectedvirtual

Reimplemented from Cosan::Preprocessor< NumericType >.

Definition at line 38 of file normalizer.h.

38 { }

◆ fit() [2/2]

template<Numeric NumericType>
void Cosan::Normalizer< NumericType >::fit ( CosanRawData< NumericType > &  RD)
inlineprotected

Definition at line 35 of file normalizer.h.

35  {
36  RD.UpdateData(transform(RD.GetInput()));
37  }

◆ Getp()

template<Numeric NumericType>
int Cosan::Normalizer< NumericType >::Getp ( ) const
inline

Definition at line 31 of file normalizer.h.

31 {return p;}

◆ GetSampleNorm()

template<Numeric NumericType>
CosanColVector<NumericType> Cosan::Normalizer< NumericType >::GetSampleNorm ( )
inline

Definition at line 32 of file normalizer.h.

32 {return SampleNorm;}

◆ Setp()

template<Numeric NumericType>
void Cosan::Normalizer< NumericType >::Setp ( int  new_p)
inline

Definition at line 33 of file normalizer.h.

33 {p=new_p;}

◆ transform()

template<Numeric NumericType>
CosanMatrix<NumericType> Cosan::Normalizer< NumericType >::transform ( const CosanMatrix< NumericType > &  X)
inlineoverrideprotectedvirtual

Reimplemented from Cosan::Preprocessor< NumericType >.

Definition at line 40 of file normalizer.h.

40  {
41  fmt::print("*********************************\n");
42  fmt::print("Begin normalizing data using norm {:d}!\n",p);
43 // SampleNorm = X.rowwise().template lpNorm<2>();
44  switch(p){
45  case 1:
46  SampleNorm = X.rowwise().template lpNorm<1>();
47  break;
48  case std::numeric_limits<int>::max():
49  SampleNorm = X.rowwise().template lpNorm<Eigen::Infinity>();
50  break;
51  default:
52  SampleNorm = X.rowwise().template lpNorm<2>();
53  }
54  bool _exist_zero = (SampleNorm.array()==0).any();
55  if (_exist_zero==true){
56  fmt::print("Caveat: some row has norm-p equals to zero!\n");
57  }
58  fmt::print("End of normalizing data using norm {:d} One may get norm of each row by GetSampleNorm().\n",p);
59  fmt::print("*********************************\n");
60  return (X.array().colwise())/((SampleNorm.array()==0).template cast<NumericType>()+SampleNorm.array());
61  }

Member Data Documentation

◆ exist_zero

template<Numeric NumericType>
bool Cosan::Normalizer< NumericType >::exist_zero
private

Definition at line 64 of file normalizer.h.

◆ p

template<Numeric NumericType>
int Cosan::Normalizer< NumericType >::p
private

Definition at line 63 of file normalizer.h.

◆ plist

template<Numeric NumericType>
std::set<int> Cosan::Normalizer< NumericType >::plist = {1,2,std::numeric_limits<int>::max()}
private

Definition at line 66 of file normalizer.h.

◆ SampleNorm

template<Numeric NumericType>
CosanColVector<NumericType> Cosan::Normalizer< NumericType >::SampleNorm
private

Definition at line 65 of file normalizer.h.


The documentation for this class was generated from the following file:
Cosan::Normalizer::p
int p
Definition: normalizer.h:63
Cosan::Normalizer::plist
std::set< int > plist
Definition: normalizer.h:66
Cosan::Normalizer::transform
CosanMatrix< NumericType > transform(const CosanMatrix< NumericType > &X) override
Definition: normalizer.h:40
Cosan::Normalizer::SampleNorm
CosanColVector< NumericType > SampleNorm
Definition: normalizer.h:65
Cosan::Normalizer::fit
void fit(CosanRawData< NumericType > &RD)
Definition: normalizer.h:35