Feature Selection Toolbox FST4
UTIA · Czech Academy of Sciences
Loading...
Searching...
No Matches
FST::Distance_Euclid< DATATYPE, DIMTYPE, SUBSET > Class Template Reference

Implements Euclidean (L_2) distance. More...

#include <distance_euclid.hpp>

Inheritance diagram for FST::Distance_Euclid< DATATYPE, DIMTYPE, SUBSET >:
FST::Clonable_Impl< Distance_Euclid< DATATYPE, DIMTYPE, SUBSET >, Distance< DATATYPE, DIMTYPE, SUBSET > > FST::Distance< DATATYPE, DIMTYPE, SUBSET > FST::Clonable

Public Types

typedef Distance< DATATYPE, DIMTYPE, SUBSET > parent
 base class: the abstract distance interface
typedef Clonable_Impl< Distance_Euclid, parent > parent_impl
 implements clone(); sharing/stateless_clone throw in Distance
Public Types inherited from FST::Distance< DATATYPE, DIMTYPE, SUBSET >
typedef std::shared_ptr< SUBSET > PSubset
 shared pointer to a feature subset, as consumed by narrow_to()

Public Member Functions

 Distance_Euclid (const DIMTYPE n)
 Constructs and immediately reset()s for n raw features (see Distance::reset()).
 Distance_Euclid (const Distance_Euclid &de)
 Copy-constructor; delegates to parent_impl (deep-copies the current _index[] mapping).
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() entries of each pattern, at the raw indices in _index[] (identity unless narrow_to() is in effect) – concrete distances must index through _index[], never assume a contiguous 0..get_d()-1 layout.
virtual std::ostream & print (std::ostream &os) const override
 writes a human-readable identification of the object; base default writes nothing
Public Member Functions inherited from FST::Clonable_Impl< Distance_Euclid< DATATYPE, DIMTYPE, SUBSET >, Distance< DATATYPE, DIMTYPE, SUBSET > >
Distance< DATATYPE, DIMTYPE, SUBSET > * clone () const override
 dispatches to the DEEP_KIND mechanism (default CLONE_DEEP: Derived's copy-constructor)
Distance< DATATYPE, DIMTYPE, SUBSET > * sharing_clone () const override
 dispatches to the SHARING_KIND mechanism (default CLONE_INHERIT: defers to Base, which throws by family convention)
Distance< DATATYPE, DIMTYPE, SUBSET > * stateless_clone () const override
 dispatches to the STATELESS_KIND mechanism (default CLONE_INHERIT: defers to Base, which throws by family convention)
Public Member Functions inherited from FST::Distance< DATATYPE, DIMTYPE, SUBSET >
 Distance (const Distance &d)
 Copy-constructor; deep-copies the current _index[] mapping (same narrowed/denarrowed state as d).
void reset (const DIMTYPE n)
 Allocates for n raw features and makes _index[] the identity map 0..n-1, with all n features active (get_d()==get_n()); narrow_to() restricts that.
void narrow_to (const PSubset sub)
 Restricts distance() to sub's selected features only. Rewrites _index[] to the subset's selected feature indices (raw-feature order) and sets get_d() to the subset size; distance() then reads only those _d entries of a pattern, through _index[], instead of all _n. Precondition: reset() must have been called with n >= the subset size.
void denarrow ()
 Undoes narrow_to(): _index[] reverts to the identity map and get_d() returns to get_n().
DIMTYPE get_n () const
 the full (raw, unnarrowed) feature count fixed by reset()
DIMTYPE get_d () const
 the currently active feature count: the narrowed subset size after narrow_to(), get_n() after reset()/denarrow()
Distance * sharing_clone () const override
Distance * stateless_clone () const override
Public Member Functions inherited from FST::Clonable
bool is_clone () const
bool is_sharing () const
 true if this instance is a sharing_clone() result (referencing, not owning, the source's structures)
bool is_sharing_clone () const
 true if this instance is BOTH a clone and sharing – i.e. specifically a sharing_clone() result, not a clone()/stateless_clone() one

Additional Inherited Members

Protected Member Functions inherited from FST::Clonable
void set_cloned (const bool cloned=true)
 marks/unmarks this instance as a clone; call from clone()/stateless_clone() overrides (Clonable_Impl does this automatically)
void set_sharing (const bool sharing=true)
 marks/unmarks this instance as sharing (see is_sharing())
void set_sharing_cloned (const bool cloned=true, const bool sharing=true)
 sets both flags at once; call from sharing_clone() overrides (Clonable_Impl does this automatically)
Protected Attributes inherited from FST::Distance< DATATYPE, DIMTYPE, SUBSET >
DIMTYPE _n
 full raw feature count, fixed by reset()
DIMTYPE _d
 currently active feature count (see get_d())
std::unique_ptr< DIMTYPE[]> _index
 maps active-feature position [0,_d) to a raw feature index in [0,_n)

Detailed Description

template<typename DATATYPE, typename DIMTYPE, class SUBSET>
class FST::Distance_Euclid< DATATYPE, DIMTYPE, SUBSET >

Implements Euclidean (L_2) distance.

the square root of the sum, over the currently active features, of the squared coordinate differences; a true metric, and the usual default for Classifier_kNN. Note that it treats all features on their raw scale, so features of widely different magnitude dominate it unless the data is scaled beforehand.

Examples
demo10.cpp, and demo52t.cpp.

Member Function Documentation

◆ distance()

template<typename DATATYPE, typename DIMTYPE, class SUBSET>
DATATYPE FST::Distance_Euclid< DATATYPE, DIMTYPE, SUBSET >::distance ( const DATATYPE * pattern1,
const DATATYPE * pattern2 )
overridevirtual

Distance between two raw patterns over the currently active features only. Reads exactly get_d() entries of each pattern, at the raw indices in _index[] (identity unless narrow_to() is in effect) – concrete distances must index through _index[], never assume a contiguous 0..get_d()-1 layout.

Parameters
pattern1,pattern2raw feature vectors of at least get_n() entries each
Returns
a non-negative dissimilarity: 0 for identical patterns, larger values mean farther apart. Implementations are free to return any monotone transform of a true distance (e.g. a squared or fractionally powered one), so the value need NOT satisfy the triangle inequality and need not be a metric. Only the induced ORDER of neighbours matters to the callers (Classifier_kNN).

Implements FST::Distance< DATATYPE, DIMTYPE, SUBSET >.

◆ print()

template<typename DATATYPE, typename DIMTYPE, class SUBSET>
virtual std::ostream & FST::Distance_Euclid< DATATYPE, DIMTYPE, SUBSET >::print ( std::ostream & os) const
inlineoverridevirtual

writes a human-readable identification of the object; base default writes nothing

Reimplemented from FST::Clonable.


The documentation for this class was generated from the following file:
Copyright © 2000–present ÚTIA, Institute of Information Theory and Automation of the Czech Academy of Sciences · Contacts · This site sets no cookies and uses no analytics.