99template<
typename DATATYPE,
typename REALTYPE,
typename DIMTYPE,
class SUBSET, const
int numerator=1, const
int denominator=1>
100class Distance_Lp :
public Clonable_Impl<Distance_Lp<DATATYPE,REALTYPE,DIMTYPE,SUBSET,numerator,denominator>,Distance<DATATYPE,DIMTYPE,SUBSET> > {
104 Distance_Lp() :
_p(REALTYPE(numerator)/REALTYPE(denominator)) {
notify(
"Distance_Lp (empty) constructor.");}
111 virtual DATATYPE
distance(
const DATATYPE *pattern1,
const DATATYPE *pattern2)
override;
115 virtual std::ostream&
print(std::ostream& os)
const override {os <<
"Distance_Lp(p=" <<
_p <<
")";
return os;}
120template<
typename DATATYPE,
typename REALTYPE,
typename DIMTYPE,
class SUBSET, const
int numerator, const
int denominator>
125 assert(pattern1!=
nullptr);
126 assert(pattern2!=
nullptr);
131 result+=std::pow(std::abs(pattern1[index_i]-pattern2[index_i]),
_p);
133 return std::pow(result,1.0/
_p);
CRTP mixin implementing the Clonable protocol for a concrete class.
Definition clonable.hpp:184
Implements L_{p} distance, p equals numerator/denominator (template parameters).
Definition distance_Lp.hpp:100
virtual std::ostream & print(std::ostream &os) const override
writes a human-readable identification of the object; base default writes nothing
Definition distance_Lp.hpp:115
virtual DATATYPE distance(const DATATYPE *pattern1, const DATATYPE *pattern2) override
Distance between two raw patterns over the currently active features only. Reads exactly get_d() entr...
Definition distance_Lp.hpp:121
const REALTYPE _p
Definition distance_Lp.hpp:117
Clonable_Impl< Distance_Lp, parent > parent_impl
Definition distance_Lp.hpp:103
Distance_Lp(const DIMTYPE n)
Constructs and immediately reset()s for n raw features (see Distance::reset()).
Definition distance_Lp.hpp:106
Distance< DATATYPE, DIMTYPE, SUBSET > parent
Definition distance_Lp.hpp:102
Distance_Lp(const Distance_Lp &dlp)
Copy-constructor; delegates to parent_impl (deep-copies the current _index[] mapping) and copies _p.
Definition distance_Lp.hpp:108
Abstract class, defines interface for distance evaluators to be used in Classifier_kNN.
Definition distance.hpp:89
DIMTYPE _d
currently active feature count (see get_d())
Definition distance.hpp:128
void reset(const DIMTYPE n)
Allocates for n raw features and makes _index[] the identity map 0..n-1, with all n features active (...
Definition distance.hpp:142
std::unique_ptr< DIMTYPE[]> _index
maps active-feature position [0,_d) to a raw feature index in [0,_n)
Definition distance.hpp:129
Defines interface for distance evaluators (to be used primarily in Classifier_kNN).
FST4 specific error passing class.
The Feature Selection Toolbox 4 library: every library component – data access, criteria and classifi...
Definition data_accessor.hpp:80
void notify(const std::string msg)
Prints msg followed by a newline via syncout::print(); a no-op unless the preprocessor macro DEBUG is...
Definition global.hpp:112