![]() |
aGrUM
0.16.0
|
The databases' cell translators for range variables. More...
#include <agrum/learning/database/DBTranslator4RangeVariable.h>
Public Member Functions | |
Constructors / Destructors | |
template<template< typename > class XALLOC> | |
DBTranslator4RangeVariable (const std::vector< std::string, XALLOC< std::string > > &missing_symbols, std::size_t max_dico_entries=std::numeric_limits< std::size_t >::max(), const allocator_type &alloc=allocator_type()) | |
default constructor without any initial variable More... | |
DBTranslator4RangeVariable (std::size_t max_dico_entries=std::numeric_limits< std::size_t >::max(), const allocator_type &alloc=allocator_type()) | |
default constructor without any initial variable nor missing symbols More... | |
template<template< typename > class XALLOC> | |
DBTranslator4RangeVariable (const RangeVariable &var, const std::vector< std::string, XALLOC< std::string > > &missing_symbols, const bool editable_dictionary=false, std::size_t max_dico_entries=std::numeric_limits< std::size_t >::max(), const allocator_type &alloc=allocator_type()) | |
default constructor with a range variable as translator More... | |
DBTranslator4RangeVariable (const RangeVariable &var, const bool editable_dictionary=false, std::size_t max_dico_entries=std::numeric_limits< std::size_t >::max(), const allocator_type &alloc=allocator_type()) | |
default constructor with a range variable as translator but without missing symbols More... | |
DBTranslator4RangeVariable (const DBTranslator4RangeVariable< ALLOC > &from) | |
copy constructor More... | |
DBTranslator4RangeVariable (const DBTranslator4RangeVariable< ALLOC > &from, const allocator_type &alloc) | |
copy constructor with a given translator More... | |
DBTranslator4RangeVariable (DBTranslator4RangeVariable< ALLOC > &&from) | |
move constructor More... | |
DBTranslator4RangeVariable (DBTranslator4RangeVariable< ALLOC > &&from, const allocator_type &alloc) | |
move constructor with a given allocator More... | |
virtual DBTranslator4RangeVariable< ALLOC > * | clone () const |
virtual copy constructor More... | |
virtual DBTranslator4RangeVariable< ALLOC > * | clone (const allocator_type &alloc) const |
virtual copy constructor with a given allocator More... | |
virtual | ~DBTranslator4RangeVariable () |
destructor More... | |
Operators | |
DBTranslator4RangeVariable< ALLOC > & | operator= (const DBTranslator4RangeVariable< ALLOC > &from) |
copy operator More... | |
DBTranslator4RangeVariable< ALLOC > & | operator= (DBTranslator4RangeVariable< ALLOC > &&from) |
move operator More... | |
Accessors / Modifiers | |
virtual DBTranslatedValue | translate (const std::string &str) final |
returns the translation of a string More... | |
virtual std::string | translateBack (const DBTranslatedValue translated_val) const final |
returns the original value for a given translation More... | |
virtual std::size_t | domainSize () const final |
returns the domain size of a variable corresponding to the translations More... | |
virtual bool | needsReordering () const final |
indicates whether a reordering is needed to make the translations sorted by increasing numbers More... | |
virtual HashTable< std::size_t, std::size_t, ALLOC< std::pair< std::size_t, std::size_t > > > | reorder () final |
performs a reordering of the dictionary and returns a mapping from the old translated values to the new ones. More... | |
virtual const RangeVariable * | variable () const final |
returns the variable stored into the translator More... | |
virtual DBTranslatedValue | missingValue () const final |
returns the translation of a missing value More... | |
Operators | |
DBTranslatedValue | operator<< (const std::string &str) |
alias for method translate More... | |
std::string | operator>> (const DBTranslatedValue translated_val) |
alias for method translateBack More... | |
Accessors / Modifiers | |
virtual bool | hasEditableDictionary () const |
indicates whether the translator has an editable dictionary or not More... | |
virtual void | setEditableDictionaryMode (bool new_mode) |
sets/unset the editable dictionary mode More... | |
const Set< std::string, ALLOC< std::string > > & | missingSymbols () const |
returns the set of missing symbols taken into account by the translator More... | |
bool | isMissingSymbol (const std::string &str) const |
indicates whether a string corresponds to a missing symbol More... | |
void | setVariableName (const std::string &str) const |
sets the name of the variable stored into the translator More... | |
void | setVariableDescription (const std::string &str) const |
sets the name of the variable stored into the translator More... | |
DBTranslatedValueType | getValType () const |
returns the type of values handled by the translator More... | |
allocator_type | getAllocator () const |
returns the allocator used by the translator More... | |
bool | isMissingValue (const DBTranslatedValue &val) const |
indicates whether a translated value corresponds to a missing value More... | |
Public Types | |
using | allocator_type = typename DBTranslator< ALLOC >::allocator_type |
type for the allocators passed in arguments of methods More... | |
Protected Attributes | |
bool | _is_dictionary_dynamic |
indicates whether the dictionary can be updated or not More... | |
std::size_t | _max_dico_entries |
the maximum number of entries that the dictionary is allowed to contain More... | |
Set< std::string, ALLOC< std::string > > | _missing_symbols |
the set of missing symbols More... | |
Bijection< std::size_t, std::string, ALLOC< std::pair< float, std::string > > > | _back_dico |
the bijection relating back translated values and their original strings. More... | |
DBTranslatedValueType | _val_type |
the type of the values translated by the translator More... | |
The databases' cell translators for range variables.
Translators are used by DatabaseTable instances to transform datasets' strings into DBTranslatedValue instances. The point is that strings are not adequate for fast learning, they need to be preprocessed into a type that can be analyzed quickly (the so-called DBTranslatedValue type).
A DBTranslator4RangeVariable is a translator that contains and exploits a RangeVariable for translations. Each time a string needs be translated, we ask the RangeVariable whether its domain contains the integer value represented in the string. If this is the case, then the DBTranslatedValue corresponding to the translation of the string contains in its discr_val field this integer value.
Definition at line 133 of file DBTranslator4RangeVariable.h.
using gum::learning::DBTranslator4RangeVariable< ALLOC >::allocator_type = typename DBTranslator< ALLOC >::allocator_type |
type for the allocators passed in arguments of methods
Definition at line 136 of file DBTranslator4RangeVariable.h.
gum::learning::DBTranslator4RangeVariable< ALLOC >::DBTranslator4RangeVariable | ( | const std::vector< std::string, XALLOC< std::string > > & | missing_symbols, |
std::size_t | max_dico_entries = std::numeric_limits< std::size_t >::max() , |
||
const allocator_type & | alloc = allocator_type() |
||
) |
default constructor without any initial variable
When using this constructor, it is assumed implicitly that the dictionary contained into the translator is editable. So, when reading the database, if we observe a value that has not been encountered before, we update the range of the dictionary of the translator (hence that of the variable contained by the translator).
missing_symbols | the set of symbols in the dataset representing missing values |
max_dico_entries | the max number of entries that the dictionary can contain. If we try to add new entries in the dictionary, this will be considered as an error and a SizeError exception will be raised |
alloc | The allocator used to allocate memory for all the fields of the DBTranslator4RangeVariable |
gum::learning::DBTranslator4RangeVariable< ALLOC >::DBTranslator4RangeVariable | ( | std::size_t | max_dico_entries = std::numeric_limits< std::size_t >::max() , |
const allocator_type & | alloc = allocator_type() |
||
) |
default constructor without any initial variable nor missing symbols
When using this constructor, it is assumed implicitly that the dictionary contained into the translator is editable. So, when reading the database, if we observe a value that has not been encountered before, we update the range of the dictionary of the translator (hence that of the variable contained by the translator).
max_dico_entries | the max number of entries that the dictionary can contain. If we try to add new entries in the dictionary, this will be considered as an error and a SizeError exception will be raised |
alloc | The allocator used to allocate memory for all the fields of the DBTranslator4RangeVariable |
gum::learning::DBTranslator4RangeVariable< ALLOC >::DBTranslator4RangeVariable | ( | const RangeVariable & | var, |
const std::vector< std::string, XALLOC< std::string > > & | missing_symbols, | ||
const bool | editable_dictionary = false , |
||
std::size_t | max_dico_entries = std::numeric_limits< std::size_t >::max() , |
||
const allocator_type & | alloc = allocator_type() |
||
) |
default constructor with a range variable as translator
var | a range variable which will be used for translations. The translator keeps a copy of this variable |
missing_symbols | the set of symbols in the dataset representing missing values |
editable_dictionary | the mode in which the translator will perform translations: when false (the default), the translation of a string that does not correspond to an integer within the range of var will raise a NotFound exception; when true, the translator will try to expand the domain of the RangeVariable so that the number represented in the string belongs to this domain ((and therefore to the dictionary) |
max_dico_entries | the max number of entries that the dictionary can contain. If we try to add new entries in the dictionary, this will be considered as an error and a SizeError exception will be raised |
alloc | The allocator used to allocate memory for all the fields of the DBTranslator4RangeVariable |
gum::learning::DBTranslator4RangeVariable< ALLOC >::DBTranslator4RangeVariable | ( | const RangeVariable & | var, |
const bool | editable_dictionary = false , |
||
std::size_t | max_dico_entries = std::numeric_limits< std::size_t >::max() , |
||
const allocator_type & | alloc = allocator_type() |
||
) |
default constructor with a range variable as translator but without missing symbols
var | a range variable which will be used for translations. The translator keeps a copy of this variable |
editable_dictionary | the mode in which the translator will perform translations: when false (the default), the translation of a string that does not correspond to an integer within the range of var will raise a NotFound exception; when true, the translator will try to expand the domain of the RangeVariable so that the number represented in the string belongs to this domain ((and therefore to the dictionary) |
max_dico_entries | the max number of entries that the dictionary can contain. If we try to add new entries in the dictionary, this will be considered as an error and a SizeError exception will be raised |
alloc | The allocator used to allocate memory for all the fields of the DBTranslator4RangeVariable |
gum::learning::DBTranslator4RangeVariable< ALLOC >::DBTranslator4RangeVariable | ( | const DBTranslator4RangeVariable< ALLOC > & | from | ) |
copy constructor
gum::learning::DBTranslator4RangeVariable< ALLOC >::DBTranslator4RangeVariable | ( | const DBTranslator4RangeVariable< ALLOC > & | from, |
const allocator_type & | alloc | ||
) |
copy constructor with a given translator
gum::learning::DBTranslator4RangeVariable< ALLOC >::DBTranslator4RangeVariable | ( | DBTranslator4RangeVariable< ALLOC > && | from | ) |
move constructor
gum::learning::DBTranslator4RangeVariable< ALLOC >::DBTranslator4RangeVariable | ( | DBTranslator4RangeVariable< ALLOC > && | from, |
const allocator_type & | alloc | ||
) |
move constructor with a given allocator
|
virtual |
destructor
|
virtual |
virtual copy constructor
Implements gum::learning::DBTranslator< ALLOC >.
|
virtual |
virtual copy constructor with a given allocator
Implements gum::learning::DBTranslator< ALLOC >.
|
finalvirtual |
returns the domain size of a variable corresponding to the translations
Returns the size of the range of the variable.
Implements gum::learning::DBTranslator< ALLOC >.
|
inherited |
returns the allocator used by the translator
|
inherited |
returns the type of values handled by the translator
|
virtualinherited |
indicates whether the translator has an editable dictionary or not
Reimplemented in gum::learning::DBTranslator4DiscretizedVariable< ALLOC >.
|
inherited |
indicates whether a string corresponds to a missing symbol
|
inherited |
indicates whether a translated value corresponds to a missing value
|
inherited |
returns the set of missing symbols taken into account by the translator
|
finalvirtual |
returns the translation of a missing value
Implements gum::learning::DBTranslator< ALLOC >.
|
finalvirtual |
indicates whether a reordering is needed to make the translations sorted by increasing numbers
When constructing dynamically its dictionary, the translator may assign wrong DBTranslatedValue values to strings. For instance, a translator reading sequentially integer strings 2, 1, 3, may map 2 into DBTranslatedValue{std::size_t(0)}, 1 into DBTranslatedValue{std::size_t(1)} and 3 into DBTranslatedValue{std::size_t(2)}, resulting in random variables having domain {2,1,3}. The user may prefer having domain {1,2,3}, i.e., a domain specified with increasing values. This requires a reordering. Method needsReodering() returns a Boolean indicating whether such a reordering should be performed or whether the current order is OK.
Implements gum::learning::DBTranslator< ALLOC >.
|
inherited |
alias for method translate
DBTranslator4RangeVariable< ALLOC >& gum::learning::DBTranslator4RangeVariable< ALLOC >::operator= | ( | const DBTranslator4RangeVariable< ALLOC > & | from | ) |
copy operator
DBTranslator4RangeVariable< ALLOC >& gum::learning::DBTranslator4RangeVariable< ALLOC >::operator= | ( | DBTranslator4RangeVariable< ALLOC > && | from | ) |
move operator
|
inherited |
alias for method translateBack
|
finalvirtual |
performs a reordering of the dictionary and returns a mapping from the old translated values to the new ones.
When a reordering is needed, i.e., string values must be translated differently, Method reorder() computes how the translations should be changed. It updates accordingly the dictionary and returns the mapping that enables changing the old dictionary values into the new ones.
Implements gum::learning::DBTranslator< ALLOC >.
|
virtualinherited |
sets/unset the editable dictionary mode
Reimplemented in gum::learning::DBTranslator4DiscretizedVariable< ALLOC >.
|
inherited |
sets the name of the variable stored into the translator
|
inherited |
sets the name of the variable stored into the translator
|
finalvirtual |
returns the translation of a string
This method tries to translate a given string into the DBTranslatedValue that should be stored into a databaseTable. If the translator cannot find the translation in its current dictionary, then two situations can obtain:
UnknownLabelInDatabase | is raised if the translation cannot be found and the translator is not in an editable dictionary mode. |
SizeError | is raised if the number of entries (the range) in the dictionary has already reached its maximum. |
TypeError | is raised if the translation cannot be found and the translator is in an editable dictionary mode and the string does not correspond to an integer. |
OperationNotAllowed | exception is raised if the translation cannot be found and the insertion of the string into the translator's dictionary fails because it would induce incoherent behavior (e.g., a translator that contains a variable whose domain is {x,y,z,t} as well as a missing value symbol z). |
Implements gum::learning::DBTranslator< ALLOC >.
|
finalvirtual |
returns the original value for a given translation
UnknownLabelInDatabase | is raised if this original value cannot be found |
Implements gum::learning::DBTranslator< ALLOC >.
|
finalvirtual |
returns the variable stored into the translator
Implements gum::learning::DBTranslator< ALLOC >.
|
mutableprotectedinherited |
the bijection relating back translated values and their original strings.
Note that the translated values considered here are of type std::size_t because only the values for discrete variables need be stored, those for continuous variables are actually identity mappings.
Definition at line 396 of file DBTranslator.h.
|
protectedinherited |
indicates whether the dictionary can be updated or not
Definition at line 379 of file DBTranslator.h.
|
protectedinherited |
the maximum number of entries that the dictionary is allowed to contain
Definition at line 382 of file DBTranslator.h.
|
protectedinherited |
the set of missing symbols
Definition at line 385 of file DBTranslator.h.
|
protectedinherited |
the type of the values translated by the translator
Definition at line 399 of file DBTranslator.h.