|
Cosan
1.0
Data Analytics Library
|
Go to the documentation of this file. 1 #ifndef COSAN_NORMALIZER_H
2 #define COSAN_NORMALIZER_H
11 template<Numeric NumericType>
21 throw std::invalid_argument(
22 "Choose p from 1, 2 or std::numeric_limits<int>::max()!"
41 fmt::print(
"*********************************\n");
42 fmt::print(
"Begin normalizing data using norm {:d}!\n",
p);
48 case std::numeric_limits<int>::max():
49 SampleNorm = X.rowwise().template lpNorm<Eigen::Infinity>();
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");
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());
66 std::set<int>
plist = {1,2,std::numeric_limits<int>::max()};
71 #endif //COSAN_NORMALIZER_H
CosanMatrix< NumericType > GetInput()
Get a copy of CosanMatrix<NumericType> X.
void fit(const CosanMatrix< NumericType > &X) override
CosanColVector< NumericType > GetSampleNorm()
void UpdateData(const CosanMatrix< NumericType > &inputX)
Update X using CosanMatrix<NumericType> input X.
Eigen::Matrix< NumericType, Eigen::Dynamic, Eigen::Dynamic > CosanMatrix
Eigen::Matrix< NumericType, Eigen::Dynamic, 1 > CosanColVector
~Normalizer() override=default
CosanMatrix< NumericType > transform(const CosanMatrix< NumericType > &X) override
Normalizer(CosanRawData< NumericType > &RD, int new_p)
CosanColVector< NumericType > SampleNorm
Normalizer(CosanRawData< NumericType > &RD)
void fit(CosanRawData< NumericType > &RD)