Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes

CDistance Class Reference


Detailed Description

Class Distance, a base class for all the distances used in the Shogun toolbox.

The distance (or metric) is a function $ d: X \times X \to R $ satisfying (for all $ x,y,z \in X$) conditions below:

Currently distance inherited from the CDistance class should be symmetric.

The simpliest example of a distance function is the euclidian distance:

See also:
CEuclidianDistance

In the means of Shogun toolbox the distance function is defined on the 'space' of CFeatures.

Definition at line 79 of file Distance.h.

Inheritance diagram for CDistance:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 CDistance ()
 CDistance (CFeatures *lhs, CFeatures *rhs)
virtual ~CDistance ()
float64_t distance (int32_t idx_a, int32_t idx_b)
SGMatrix< float64_tget_distance_matrix ()
virtual float64_tget_distance_matrix_real (int32_t &m, int32_t &n, float64_t *target)
virtual float32_tget_distance_matrix_shortreal (int32_t &m, int32_t &n, float32_t *target)
virtual bool init (CFeatures *lhs, CFeatures *rhs)
virtual void cleanup ()=0
void load (CFile *loader)
void save (CFile *writer)
CFeaturesget_lhs ()
CFeaturesget_rhs ()
CFeaturesreplace_rhs (CFeatures *rhs)
virtual void remove_lhs_and_rhs ()
virtual void remove_lhs ()
 takes all necessary steps if the lhs is removed from distance matrix
virtual void remove_rhs ()
 takes all necessary steps if the rhs is removed from distance matrix
virtual EDistanceType get_distance_type ()=0
virtual EFeatureType get_feature_type ()=0
virtual EFeatureClass get_feature_class ()=0
bool get_precompute_matrix ()
virtual void set_precompute_matrix (bool flag)
int32_t get_num_vec_lhs ()
int32_t get_num_vec_rhs ()
bool has_features ()
bool lhs_equals_rhs ()

Protected Member Functions

virtual float64_t compute (int32_t x, int32_t y)=0
void do_precompute_matrix ()
 matrix precomputation

Static Protected Member Functions

static void * run_distance_thread (void *p)
 run distance thread

Protected Attributes

float32_tprecomputed_matrix
bool precompute_matrix
CFeatureslhs
 feature vectors to occur on left hand side
CFeaturesrhs
 feature vectors to occur on right hand side

Constructor & Destructor Documentation

CDistance (  ) 

default constructor

Definition at line 56 of file Distance.cpp.

CDistance ( CFeatures lhs,
CFeatures rhs 
)

init distance

Parameters:
lhs features of left-hand side
rhs features of right-hand side
Returns:
if init was successful

Definition at line 62 of file Distance.cpp.

~CDistance (  )  [virtual]

Definition at line 68 of file Distance.cpp.


Member Function Documentation

virtual void cleanup (  )  [pure virtual]
virtual float64_t compute ( int32_t  x,
int32_t  y 
) [protected, pure virtual]
float64_t distance ( int32_t  idx_a,
int32_t  idx_b 
)

get distance function for lhs feature vector a and rhs feature vector b

Parameters:
idx_a feature vector a at idx_a
idx_b feature vector b at idx_b
Returns:
distance value

Definition at line 101 of file Distance.h.

void do_precompute_matrix (  )  [protected]

matrix precomputation

Definition at line 157 of file Distance.cpp.

SGMatrix< float64_t > get_distance_matrix (  ) 

get distance matrix

Returns:
computed distance matrix (needs to be cleaned up)

Definition at line 181 of file Distance.cpp.

float64_t * get_distance_matrix_real ( int32_t &  m,
int32_t &  n,
float64_t target 
) [virtual]

get distance matrix real

Parameters:
m dimension m
n dimension n
target target matrix
Returns:
target matrix

Definition at line 257 of file Distance.cpp.

float32_t * get_distance_matrix_shortreal ( int32_t &  m,
int32_t &  n,
float32_t target 
) [virtual]

get distance matrix short real

Parameters:
m dimension m
n dimension n
target target matrix
Returns:
target matrix

Definition at line 188 of file Distance.cpp.

virtual EDistanceType get_distance_type (  )  [pure virtual]
virtual EFeatureClass get_feature_class (  )  [pure virtual]

get feature class the distance can deal with

abstract base method

Returns:
feature class

Implemented in CCustomDistance, CKernelDistance, CSimpleDistance< ST >, CSparseDistance< ST >, CStringDistance< ST >, CSimpleDistance< float64_t >, CSparseDistance< float64_t >, and CStringDistance< uint16_t >.

virtual EFeatureType get_feature_type (  )  [pure virtual]
CFeatures* get_lhs (  ) 

get left-hand side features used in distance matrix

Returns:
left-hand side features

Definition at line 196 of file Distance.h.

int32_t get_num_vec_lhs (  ) 

get number of vectors of lhs features

Returns:
number of vectors of left-hand side

Reimplemented in CCustomDistance.

Definition at line 274 of file Distance.h.

int32_t get_num_vec_rhs (  ) 

get number of vectors of rhs features

Returns:
number of vectors of right-hand side

Reimplemented in CCustomDistance.

Definition at line 286 of file Distance.h.

bool get_precompute_matrix (  ) 

FIXME: precompute matrix should be dropped, handling should be via customdistance

Returns:
if precompute_matrix

Definition at line 252 of file Distance.h.

CFeatures* get_rhs (  ) 

get right-hand side features used in distance matrix

Returns:
right-hand side features

Definition at line 202 of file Distance.h.

bool has_features (  ) 

test whether features have been assigned to lhs and rhs

Returns:
true if features are assigned

Reimplemented in CCustomDistance.

Definition at line 298 of file Distance.h.

bool init ( CFeatures lhs,
CFeatures rhs 
) [virtual]
bool lhs_equals_rhs (  ) 

test whether features on lhs and rhs are the same

Returns:
true if features are the same

Definition at line 307 of file Distance.h.

void load ( CFile loader  ) 

load the kernel matrix

Parameters:
loader File object via which to load data

Definition at line 102 of file Distance.cpp.

void remove_lhs (  )  [virtual]

takes all necessary steps if the lhs is removed from distance matrix

Definition at line 123 of file Distance.cpp.

void remove_lhs_and_rhs (  )  [virtual]

remove lhs and rhs from distance

Definition at line 114 of file Distance.cpp.

void remove_rhs (  )  [virtual]

takes all necessary steps if the rhs is removed from distance matrix

takes all necessary steps if the rhs is removed from kernel

Definition at line 130 of file Distance.cpp.

CFeatures * replace_rhs ( CFeatures rhs  ) 

replace right-hand side features used in distance matrix

make sure to check that your distance can deal with the supplied features (!)

Parameters:
rhs features of right-hand side
Returns:
replaced right-hand side features

Definition at line 136 of file Distance.cpp.

void * run_distance_thread ( void *  p  )  [static, protected]

run distance thread

Definition at line 355 of file Distance.cpp.

void save ( CFile writer  ) 

save kernel matrix

Parameters:
writer File object via which to save data

Definition at line 108 of file Distance.cpp.

virtual void set_precompute_matrix ( bool  flag  )  [virtual]

FIXME: precompute matrix should be dropped, handling should be via customdistance

Parameters:
flag if precompute_matrix

Definition at line 259 of file Distance.h.


Member Data Documentation

CFeatures* lhs [protected]

feature vectors to occur on left hand side

Definition at line 340 of file Distance.h.

bool precompute_matrix [protected]

FIXME: precompute matrix should be dropped, handling should be via customdistance

Definition at line 337 of file Distance.h.

FIXME: precompute matrix should be dropped, handling should be via customdistance

Definition at line 332 of file Distance.h.

CFeatures* rhs [protected]

feature vectors to occur on right hand side

Definition at line 342 of file Distance.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

SHOGUN Machine Learning Toolbox - Documentation