PLearn 0.1
|
#include <SDBVMat.h>
Public Member Functions | |
SDBVMFieldMultiDiscrete (const FieldArray &fields, real missing_values_mapping=MISSING_VALUE, SDBVMOutputCoding oc=SDBVMNumeric, VMField::FieldType ft=VMField::DiscrGeneral) | |
const FieldArray & | getFields () const |
Accessor and mutator for field array. | |
void | setFields (const FieldArray &fields) |
virtual real | getDiscreteValue (const SDBWithStats &sdb, const Row &row) const |
virtual int fieldWidth() const; | |
Protected Attributes | |
FieldArray | fields_ |
Vec | field_multipliers_ |
factor by which to multiply | |
Private Types | |
typedef SDBVMFieldDiscrete | inherited |
typedef SDBVMFieldDiscrete PLearn::SDBVMFieldMultiDiscrete::inherited [private] |
Reimplemented from PLearn::SDBVMFieldDiscrete.
PLearn::SDBVMFieldMultiDiscrete::SDBVMFieldMultiDiscrete | ( | const FieldArray & | fields, |
real | missing_values_mapping = MISSING_VALUE , |
||
SDBVMOutputCoding | oc = SDBVMNumeric , |
||
VMField::FieldType | ft = VMField::DiscrGeneral |
||
) |
The constructor accepts an array of discrete fields; this class assumes ownership of the fields; the array can be empty, and later set with setFields().
Definition at line 899 of file SDBVMat.cc.
References setFields().
: inherited(FieldPtr() /* "null pointer" */, 0, missing_values_mapping, oc, ft) { setFields(fields); }
real PLearn::SDBVMFieldMultiDiscrete::getDiscreteValue | ( | const SDBWithStats & | sdb, |
const Row & | row | ||
) | const [virtual] |
virtual int fieldWidth() const;
Compute the "array index" corresponding to the fields
Implements PLearn::SDBVMFieldDiscrete.
Definition at line 929 of file SDBVMat.cc.
References field_multipliers_, fields_, i, n, PLERROR, and PLearn::TVec< T >::size().
{ int index = 0; int n = fields_.size(); for (int i=0; i<n; ++i) { real value = fields_[i]->getDiscreteValue(sdb,row); if (value != int(value) || value < 0) PLERROR("SDBVMFieldMultiDiscrete::getDiscreteValue: negative or " "non-integer value %f returned for field %d", value, i); index += int(value)*int(field_multipliers_[i]); } return real(index); }
const FieldArray& PLearn::SDBVMFieldMultiDiscrete::getFields | ( | ) | const [inline] |
void PLearn::SDBVMFieldMultiDiscrete::setFields | ( | const FieldArray & | fields | ) |
Definition at line 909 of file SDBVMat.cc.
References field_multipliers_, fields_, i, n, PLearn::TVec< T >::resize(), PLearn::SDBVMFieldDiscrete::setNumClasses(), and PLearn::TVec< T >::size().
Referenced by SDBVMFieldMultiDiscrete().
{ fields_ = fields; int n = fields.size(); field_multipliers_.resize(n); setNumClasses(0); // Compute all partial products from i to n if (n>0) { int prod = 1; field_multipliers_[n-1] = 1; for (int i=n-2; i>=0; --i) { prod *= fields[i+1]->getNumClasses(); field_multipliers_[i] = prod; } prod *= fields[0]->getNumClasses(); setNumClasses(prod); } }
factor by which to multiply
Definition at line 894 of file SDBVMat.h.
Referenced by getDiscreteValue(), and setFields().
FieldArray PLearn::SDBVMFieldMultiDiscrete::fields_ [protected] |
Definition at line 893 of file SDBVMat.h.
Referenced by getDiscreteValue(), and setFields().