KSquare Utilities
KKMLL::NormalizationParms Class Reference

Normalization Parameters; calculation and implementation. More...

#include <NormalizationParms.h>

Public Types

typedef NormalizationParmsNormalizationParmsPtr
 

Public Member Functions

 NormalizationParms ()
 
 NormalizationParms (bool _normalizeNominalFeatures, FeatureVectorList &_examples, RunLog &_log)
 
 NormalizationParms (const ModelParam &_param, FeatureVectorList &_examples, RunLog &_log)
 
 NormalizationParms (TrainingConfiguration2Ptr _config, FeatureVectorList &_examples, RunLog &_log)
 
 ~NormalizationParms ()
 
FileDescPtr FileDesc () const
 
double Mean (kkint32 i, RunLog &log)
 
const double * Mean () const
 
kkint32 MemoryConsumedEstimated () const
 
void NormalizeAExample (FeatureVectorPtr example)
 
void NormalizeExamples (FeatureVectorListPtr examples, RunLog &log)
 
bool NormalizeNominalFeatures () const
 
float NumOfExamples () const
 
kkint32 NumOfFeatures () const
 
void ReadXML (XmlStream &s, XmlTagPtr tag, VolConstBool &cancelFlag, RunLog &log)
 
double Sigma (kkint32 i, RunLog &log)
 
const double * Sigma () const
 
FeatureVectorPtr ToNormalized (FeatureVectorPtr example) const
 
void WriteToFile (const KKStr &_fileName, bool &_successfull, RunLog &_log) const
 
void WriteXML (const KKStr &varName, std::ostream &o) const
 

Static Public Member Functions

static NormalizationParmsPtr ReadFromFile (const KKStr &fileName, RunLog &log)
 

Detailed Description

Normalization Parameters; calculation and implementation.

Normalization parameters will be calculated for all features but when individual examples are normalized, only the ones specified by _featuresToNormalize' will be normalized.

Definition at line 56 of file NormalizationParms.h.

Member Typedef Documentation

Constructor & Destructor Documentation

NormalizationParms::NormalizationParms ( )

Definition at line 27 of file NormalizationParms.cpp.

References KKB::KKStr::KKStr().

27  :
28  fileDesc (NULL),
29  fileName (),
30  mean (NULL),
31  normalizeFeature (NULL),
32  normalizeNominalFeatures (false),
33  numOfFeatures (0),
34  numOfExamples (0),
35  sigma (NULL)
36 {
37 } /* NormalizationParms */
NormalizationParms::NormalizationParms ( bool  _normalizeNominalFeatures,
FeatureVectorList _examples,
RunLog _log 
)

Definition at line 41 of file NormalizationParms.cpp.

References KKMLL::FileDesc::CreateAttributeTypeTable(), KKMLL::FeatureVectorList::FileDesc(), KKB::KKStr::KKStr(), and KKMLL::FeatureVectorList::NumOfFeatures().

44  :
45 
46  fileDesc (NULL),
47  fileName (),
48  mean (NULL),
49  normalizeFeature (NULL),
50  normalizeNominalFeatures (_normalizeNominalFeatures),
51  numOfFeatures (0),
52  numOfExamples (0),
53  sigma (NULL)
54 
55 {
56  _log.Level (20) << "FeatureNormalization - Creating instance from[" << _examples.FileName () << "]." << endl;
57 
58  fileDesc = _examples.FileDesc ();
59  attriuteTypes = fileDesc->CreateAttributeTypeTable ();
60  numOfFeatures = _examples.NumOfFeatures ();
61  DeriveNormalizationParameters (_examples);
62 } /* NormalizationParms */
HTMLReport &__cdecl endl(HTMLReport &htmlReport)
Definition: HTMLReport.cpp:240
const FileDescPtr FileDesc() const
RunLog & Level(kkint32 _level)
Definition: RunLog.cpp:220
kkint32 NumOfFeatures() const
const KKStr & FileName() const
AttributeTypeVector CreateAttributeTypeTable() const
Definition: FileDesc.cpp:419
NormalizationParms::NormalizationParms ( const ModelParam _param,
FeatureVectorList _examples,
RunLog _log 
)

Definition at line 66 of file NormalizationParms.cpp.

References KKMLL::FileDesc::CreateAttributeTypeTable(), KKMLL::FeatureVectorList::FileDesc(), KKB::KKStr::KKStr(), KKMLL::ModelParam::NormalizeNominalFeatures(), and KKMLL::FeatureVectorList::NumOfFeatures().

Referenced by KKMLL::Model::TrainModel().

69  :
70  fileDesc (NULL),
71  fileName (),
72  mean (NULL),
73  normalizeFeature (NULL),
74  normalizeNominalFeatures (false),
75  numOfFeatures (0),
76  numOfExamples (0),
77  sigma (NULL)
78 {
79  _log.Level (20) << "FeatureNormalization - Creating instance from[" << _examples.FileName () << "]." << endl;
80 
81  fileDesc = _examples.FileDesc ();
82  numOfFeatures = _examples.NumOfFeatures ();
83  attriuteTypes = fileDesc->CreateAttributeTypeTable ();
84  normalizeNominalFeatures = _param.NormalizeNominalFeatures ();
85 
86  DeriveNormalizationParameters (_examples);
87 }
HTMLReport &__cdecl endl(HTMLReport &htmlReport)
Definition: HTMLReport.cpp:240
const FileDescPtr FileDesc() const
virtual bool NormalizeNominalFeatures() const
Definition: ModelParam.h:115
RunLog & Level(kkint32 _level)
Definition: RunLog.cpp:220
kkint32 NumOfFeatures() const
const KKStr & FileName() const
AttributeTypeVector CreateAttributeTypeTable() const
Definition: FileDesc.cpp:419
NormalizationParms::NormalizationParms ( TrainingConfiguration2Ptr  _config,
FeatureVectorList _examples,
RunLog _log 
)

Definition at line 91 of file NormalizationParms.cpp.

References KKMLL::FileDesc::CreateAttributeTypeTable(), KKMLL::TrainingConfiguration2::FileDesc(), KKB::KKStr::KKStr(), KKMLL::TrainingConfiguration2::NormalizeNominalFeatures(), and KKMLL::FeatureVectorList::NumOfFeatures().

94  :
95 
96  fileDesc (NULL),
97  fileName (),
98  mean (NULL),
99  normalizeFeature (NULL),
100  normalizeNominalFeatures (false),
101  numOfFeatures (0),
102  numOfExamples (0),
103  sigma (NULL)
104 
105 {
106  _log.Level (20) << "FeatureNormalization - Creating instance from[" << _examples.FileName () << "]." << endl;
107 
108  fileDesc = _config->FileDesc ();
109  attriuteTypes = fileDesc->CreateAttributeTypeTable ();
110  normalizeNominalFeatures = _config->NormalizeNominalFeatures ();
111 
112  numOfFeatures = _examples.NumOfFeatures ();
113 
114  DeriveNormalizationParameters (_examples);
115 } /* NormalizationParms */
HTMLReport &__cdecl endl(HTMLReport &htmlReport)
Definition: HTMLReport.cpp:240
RunLog & Level(kkint32 _level)
Definition: RunLog.cpp:220
kkint32 NumOfFeatures() const
const KKStr & FileName() const
AttributeTypeVector CreateAttributeTypeTable() const
Definition: FileDesc.cpp:419
NormalizationParms::~NormalizationParms ( )

Definition at line 120 of file NormalizationParms.cpp.

121 {
122  delete [] mean; mean = NULL;
123  delete [] sigma; sigma = NULL;
124  delete [] normalizeFeature; normalizeFeature = NULL;
125 }

Member Function Documentation

FileDescPtr KKMLL::NormalizationParms::FileDesc ( ) const
inline

Definition at line 82 of file NormalizationParms.h.

82 {return fileDesc;}
double NormalizationParms::Mean ( kkint32  i,
RunLog log 
)

Definition at line 378 of file NormalizationParms.cpp.

381 {
382  if ((i < 0) || (i > numOfFeatures))
383  {
384  log.Level (-1) << "NormalizationParms::Mean ***ERROR*** Feature Number[" << i << "] out of bounds." << endl;
385  return -99999.99;
386  }
387  else
388  {
389  return mean[i];
390  }
391 } /* Mean */
HTMLReport &__cdecl endl(HTMLReport &htmlReport)
Definition: HTMLReport.cpp:240
RunLog & Level(kkint32 _level)
Definition: RunLog.cpp:220
const double* KKMLL::NormalizationParms::Mean ( ) const
inline

Definition at line 126 of file NormalizationParms.h.

126 {return mean;}
kkint32 NormalizationParms::MemoryConsumedEstimated ( ) const

Definition at line 128 of file NormalizationParms.cpp.

Referenced by KKMLL::Model::MemoryConsumedEstimated().

129 {
130  kkint32 memoryConsumedEstimated = sizeof (NormalizationParms)
131  + attriuteTypes.size () * sizeof (AttributeType)
132  + fileName.MemoryConsumedEstimated ()
133  + numOfFeatures * (sizeof (bool) + sizeof (double) + sizeof (double)); // mean + sigma
134 
135  return memoryConsumedEstimated;
136 }
kkint32 MemoryConsumedEstimated() const
Definition: KKStr.cpp:766
__int32 kkint32
Definition: KKBaseTypes.h:88
AttributeType
Definition: Attribute.h:36
void NormalizationParms::NormalizeAExample ( FeatureVectorPtr  example)

Definition at line 439 of file NormalizationParms.cpp.

References KKMLL::FeatureVector::FeatureDataAlter().

440 {
441  float* featureData = example->FeatureDataAlter ();
442 
443  for (kkint32 i = 0; i < numOfFeatures; i++)
444  {
445  if (normalizeFeature[i])
446  {
447  double normValue = 0.0;
448  if (sigma[i] != 0.0)
449  normValue = ((double)featureData[i] - mean[i]) / sigma[i];
450  featureData[i] = (float)normValue;
451  }
452  }
453 } /* NormalizeAExample */
__int32 kkint32
Definition: KKBaseTypes.h:88
float * FeatureDataAlter()
Same as &#39;FeatureData() except you can modify the data.
void NormalizationParms::NormalizeExamples ( FeatureVectorListPtr  examples,
RunLog log 
)

Definition at line 457 of file NormalizationParms.cpp.

References KKMLL::FeatureVectorList::NumOfFeatures(), and KKB::osWaitForEnter().

Referenced by KKMLL::Model::TrainModel().

460 {
461  if (numOfFeatures != examples->NumOfFeatures ())
462  {
463  log.Level (-1) << "NormalizationParms::NoralizeImage **** ERROR **** Mismatched Feature Count." << endl
464  << " NormalizationParms [" << numOfFeatures << "]" << endl
465  << " ImageFeatiresList [" << examples->NumOfFeatures () << "]." << endl
466  << endl;
467 
468  osWaitForEnter ();
469  exit (-1);
470  return;
471  }
472 
474 
475  for (idx = examples->begin (); idx != examples->end (); ++idx)
476  NormalizeAExample (*idx);
477 
478  return;
479 } /* NoralizeImage */
HTMLReport &__cdecl endl(HTMLReport &htmlReport)
Definition: HTMLReport.cpp:240
std::vector< FeatureVector * >::iterator iterator
Definition: KKQueue.h:88
void osWaitForEnter()
void NormalizeAExample(FeatureVectorPtr example)
RunLog & Level(kkint32 _level)
Definition: RunLog.cpp:220
kkint32 NumOfFeatures() const
bool KKMLL::NormalizationParms::NormalizeNominalFeatures ( ) const
inline

Definition at line 90 of file NormalizationParms.h.

90 {return normalizeNominalFeatures;}
float KKMLL::NormalizationParms::NumOfExamples ( ) const
inline

Definition at line 96 of file NormalizationParms.h.

96 {return numOfExamples;}
kkint32 KKMLL::NormalizationParms::NumOfFeatures ( ) const
inline

Definition at line 94 of file NormalizationParms.h.

94 {return numOfFeatures;}
NormalizationParmsPtr NormalizationParms::ReadFromFile ( const KKStr fileName,
RunLog log 
)
static

Definition at line 255 of file NormalizationParms.cpp.

References KKB::XmlStream::GetNextToken(), and KKB::XmlStream::XmlStream().

256 {
257  NormalizationParmsPtr n = NULL;
258  XmlStreamPtr stream = new XmlStream (fileName, log);
259  bool cancelFlag = false;
260  XmlTokenPtr t = stream->GetNextToken (cancelFlag, log);
261  while (t && (!n))
262  {
263  if (typeid (*t) != typeid (XmlElementNormalizationParms))
264  n = dynamic_cast<XmlElementNormalizationParmsPtr> (t)->Value ();
265  delete t;
266  t = stream->GetNextToken (cancelFlag, log);
267  }
268  delete t; t = NULL;
269  delete stream; stream = NULL;
270  return n;
271 }
Manages the reading and writing of objects in a simple XML format. For a class to be supported by Xml...
Definition: XmlStream.h:46
Normalization Parameters; calculation and implementation.
virtual XmlTokenPtr GetNextToken(VolConstBool &cancelFlag, RunLog &log)
Definition: XmlStream.cpp:116
void NormalizationParms::ReadXML ( XmlStream s,
XmlTagPtr  tag,
VolConstBool cancelFlag,
RunLog log 
)

Definition at line 302 of file NormalizationParms.cpp.

References KKB::KKStr::Concat(), KKMLL::FileDesc::CreateAttributeTypeTable(), KKB::KKStr::EqualIgnoreCase(), KKB::XmlStream::GetNextToken(), KKB::XmlElement::SectionName(), KKB::XmlElement::ToBool(), KKB::XmlElement::ToFloat(), KKB::XmlElement::ToInt32(), KKB::XmlToken::tokElement, KKB::XmlToken::TokenType(), KKMLL::XmlElementFileDesc::Value(), and KKB::XmlElement::VarName().

307 {
308  XmlTokenPtr t = s.GetNextToken (cancelFlag, log);
309  while (t && (!cancelFlag))
310  {
311  if (t->TokenType () == XmlToken::TokenTypes::tokElement)
312  {
313  XmlElementPtr e = dynamic_cast<XmlElementPtr> (t);
314  const KKStr& className = e->SectionName ();
315  const KKStr& varName = e->VarName ();
316  if (varName.EqualIgnoreCase ("NumOfFeatures"))
317  numOfFeatures = e->ToInt32 ();
318 
319  else if (varName.EqualIgnoreCase ("NumOfExamples"))
320  numOfExamples = e->ToFloat ();
321 
322  else if (varName.EqualIgnoreCase ("NormalizeNominalFeatures"))
323  normalizeNominalFeatures = e->ToBool ();
324 
325  else if (varName.EqualIgnoreCase ("FileDesc"))
326  {
327  XmlElementFileDescPtr fd = dynamic_cast<XmlElementFileDescPtr>(e);
328  fileDesc = fd->Value ();
329  }
330 
331  else if (varName.EqualIgnoreCase ("Mean"))
332  {
334  if (m->Count () == numOfFeatures)
335  {
336  delete mean;
337  mean = m->TakeOwnership ();
338  }
339  else
340  {
341  log.Level (-1) << endl
342  << "XmlElementNormalizationParms ***ERROR*** mean->Count[" << m->Count () << "] does not agree with NumOfFeatures[" << numOfFeatures << "]." <<endl
343  << endl;
344  }
345  }
346 
347  else if (varName.EqualIgnoreCase ("Sigma"))
348  {
350  if (s->Count () == numOfFeatures)
351  {
352  delete sigma;
353  sigma = s->TakeOwnership ();
354  }
355  else
356  {
357  log.Level (-1) << endl
358  << "XmlElementNormalizationParms ***ERROR*** sigma->Count[" << s->Count () << "] does not agree with NumOfFeatures[" << numOfFeatures << "]." <<endl
359  << endl;
360  }
361  }
362  }
363 
364  delete t;
365  t = s.GetNextToken (cancelFlag, log);
366  }
367  delete t;
368  t = NULL;
369 
370  if (fileDesc)
371  {
372  attriuteTypes = fileDesc->CreateAttributeTypeTable ();
373  ConstructNormalizeFeatureVector ();
374  }
375 } /* ReadXML */
HTMLReport &__cdecl endl(HTMLReport &htmlReport)
Definition: HTMLReport.cpp:240
kkuint32 Count() const
Definition: XmlStream.h:917
virtual float ToFloat() const
Definition: XmlStream.h:316
bool EqualIgnoreCase(const KKStr &s2) const
Definition: KKStr.cpp:1250
RunLog & Level(kkint32 _level)
Definition: RunLog.cpp:220
virtual kkint32 ToInt32() const
Definition: XmlStream.h:317
virtual bool ToBool() const
Definition: XmlStream.h:313
virtual const KKStr & VarName() const
Definition: XmlStream.cpp:794
virtual const KKStr & SectionName() const
Definition: XmlStream.cpp:785
AttributeTypeVector CreateAttributeTypeTable() const
Definition: FileDesc.cpp:419
virtual TokenTypes TokenType()=0
FileDescPtr Value() const
Definition: FileDesc.cpp:947
virtual XmlTokenPtr GetNextToken(VolConstBool &cancelFlag, RunLog &log)
Definition: XmlStream.cpp:116
double NormalizationParms::Sigma ( kkint32  i,
RunLog log 
)

Definition at line 394 of file NormalizationParms.cpp.

397 {
398  if ((i < 0) || (i > numOfFeatures))
399  {
400  log.Level (-1) << "NormalizationParms::Mean ***ERROR*** Feature Number[" << i << "] out of bounds." << endl;
401  return (float)-99999.99;
402  }
403  else
404  {
405  return sigma[i];
406  }
407 } /* Sigma */
HTMLReport &__cdecl endl(HTMLReport &htmlReport)
Definition: HTMLReport.cpp:240
RunLog & Level(kkint32 _level)
Definition: RunLog.cpp:220
const double* KKMLL::NormalizationParms::Sigma ( ) const
inline

Definition at line 127 of file NormalizationParms.h.

127 {return sigma;}
FeatureVectorPtr NormalizationParms::ToNormalized ( FeatureVectorPtr  example) const

Definition at line 483 of file NormalizationParms.cpp.

References KKMLL::FeatureVector::FeatureDataAlter(), and KKMLL::FeatureVector::FeatureVector().

Referenced by KKMLL::ModelOldSVM::PrepExampleForPrediction(), and KKMLL::Model::PrepExampleForPrediction().

484 {
485  FeatureVectorPtr result = new FeatureVector (*example);
486  float* featureData = result->FeatureDataAlter ();
487  for (kkint32 i = 0; i < numOfFeatures; ++i)
488  {
489  if (normalizeFeature[i])
490  {
491  double normValue = 0.0;
492  if (sigma[i] != 0.0)
493  normValue = ((double)featureData[i] - mean[i]) / sigma[i];
494  featureData[i] = (float)normValue;
495  }
496  }
497 
498  return result;
499 } /* ToNormalized */
__int32 kkint32
Definition: KKBaseTypes.h:88
Represents a Feature Vector of a single example, labeled or unlabeled.
Definition: FeatureVector.h:59
float * FeatureDataAlter()
Same as &#39;FeatureData() except you can modify the data.
void NormalizationParms::WriteToFile ( const KKStr _fileName,
bool &  _successfull,
RunLog _log 
) const

Definition at line 236 of file NormalizationParms.cpp.

References KKB::KKStr::operator=().

237 {
238  _log.Level (20) << "NormalizationParms::WriteToFile FileName[" << _fileName << "]." << endl;
239  fileName = _fileName;
240  _successfull = true;
241  ofstream outFile (fileName.Str ());
242  if (!outFile.is_open ())
243  {
244  _log.Level (-1) << endl << "NormalizationParms::WriteToFile ***EROR*** writing to file["<< _fileName << "]." << endl << endl;
245  _successfull = false;
246  return;
247  }
248  WriteXML ("NormalizationParms", outFile);
249  outFile.close ();
250  return;
251 } /* Save */
HTMLReport &__cdecl endl(HTMLReport &htmlReport)
Definition: HTMLReport.cpp:240
RunLog & Level(kkint32 _level)
Definition: RunLog.cpp:220
void WriteXML(const KKStr &varName, std::ostream &o) const
const char * Str() const
Returns a pointer to a ascii string.
Definition: KKStr.h:422
void NormalizationParms::WriteXML ( const KKStr varName,
std::ostream &  o 
) const

Definition at line 277 of file NormalizationParms.cpp.

References KKB::XmlTag::AddAtribute(), KKB::KKStr::Empty(), KKB::XmlTag::tagEnd, KKB::XmlTag::tagStart, KKB::XmlTag::WriteXML(), KKMLL::XmlElementFileDesc::WriteXML(), KKB::XmlElementBool::WriteXML(), and KKB::XmlTag::XmlTag().

Referenced by KKMLL::Model::WriteModelXMLFields().

280 {
281  XmlTag startTag ("NormalizationParms", XmlTag::TagTypes::tagStart);
282  if (!varName.Empty ())
283  startTag.AddAtribute ("VarName", varName);
284  startTag.WriteXML (o);
285  o << endl;
286 
287  XmlElementInt32::WriteXML (numOfFeatures, "NumOfFeatures", o);
288  XmlElementFloat::WriteXML (numOfExamples, "NumOfExamples", o);
289  XmlElementBool::WriteXML (normalizeNominalFeatures, "NormalizeNominalFeatures", o);
290 
291  if (fileDesc) XmlElementFileDesc::WriteXML (*fileDesc, "FileDesc", o);
292  if (mean) XmlElementArrayDouble::WriteXML (numOfFeatures, mean, "Mean", o);
293  if (sigma) XmlElementArrayDouble::WriteXML (numOfFeatures, sigma, "sigma", o);
294 
295  XmlTag endTag ("NormalizationParms", XmlTag::TagTypes::tagEnd);
296  endTag.WriteXML (o);
297  o << endl;
298 }
HTMLReport &__cdecl endl(HTMLReport &htmlReport)
Definition: HTMLReport.cpp:240
bool Empty() const
Definition: KKStr.h:241
static void WriteXML(const FileDesc &fileDesc, const KKStr &varName, std::ostream &o)
Definition: FileDesc.cpp:962

The documentation for this class was generated from the following files: