KSquare Utilities
KKMLL::TrainingClass Class Reference

Specify where training examples and other related data for a MLClass that is needed to train a classifier. More...

#include <TrainingClass.h>

Public Member Functions

 TrainingClass ()
 
 TrainingClass (const VectorKKStr &_directories, KKStr _name, float _weight, float _countFactor, TrainingConfiguration2Ptr _subClassifier, MLClassList &_mlClasses)
 Constructor, Creates a new instance of TrainingClass and populates fields with respective data from parameters. More...
 
 TrainingClass (const TrainingClass &tc)
 
void AddDirectories (const VectorKKStr &_directories)
 
void AddDirectory (const KKStr &_directory)
 
float CountFactor () const
 
void CountFactor (float _countFactor)
 
const VectorKKStrDirectories () const
 
const KKStrDirectory (kkuint32 idx) const
 
void Directory (kkuint32 idx, const KKStr &directory)
 
kkuint32 DirectoryCount () const
 
KKStr ExpandedDirectory (const KKStr &rootDir, kkuint32 idx)
 
const KKStrFeatureFileName () const
 
void FeatureFileName (const KKStr &_featureFileName)
 
const MLClassPtr MLClass () const
 
void MLClass (MLClassPtr _mlClass)
 
const KKStrName () const
 
virtual void ReadXML (XmlStream &s, XmlTagConstPtr tag, VolConstBool &cancelFlag, RunLog &log)
 
TrainingConfiguration2Ptr SubClassifier () const
 
void SubClassifier (TrainingConfiguration2Ptr _subClassifier)
 
const KKStrSubClassifierName () const
 
void SubClassifierName (const KKStr &_subClassifierName)
 
float Weight () const
 
void Weight (float _weight)
 
virtual void WriteXML (const KKStr &varName, std::ostream &o) const
 
virtual void WriteXML (const KKStr &varName, const KKStr &rootDir, std::ostream &o) const
 

Detailed Description

Specify where training examples and other related data for a MLClass that is needed to train a classifier.

You create one instance of this object for each MLClass instance that you want to include in a classifier. Each instance will tie a class to the directories where you can find training examples. Other info that is included is 'CountFator', training Weight, dun-classifier that is to be used to further define the prediction.

Definition at line 38 of file TrainingClass.h.

Constructor & Destructor Documentation

TrainingClass::TrainingClass ( )

Definition at line 24 of file TrainingClass.cpp.

References KKB::KKStr::KKStr(), and KKB::VectorKKStr::VectorKKStr().

24  :
25  countFactor (0.0f),
26  directories (),
27  featureFileName (),
28  mlClass (NULL),
29  subClassifier (NULL),
30  weight (0.0f)
31 {
32 }
TrainingClass::TrainingClass ( const VectorKKStr _directories,
KKStr  _name,
float  _weight,
float  _countFactor,
TrainingConfiguration2Ptr  _subClassifier,
MLClassList _mlClasses 
)

Constructor, Creates a new instance of TrainingClass and populates fields with respective data from parameters.

Parameters
[in]_directoriesA list of directories where training examples for class '_name' can be found.
[in]_nameThe name of the class that this'TrainingClass' instance will be pointing to.
[in]_weightYou can give extra weight to a class with this parameter; its impact/use varies with particular algorithm(Model) used.
[in]_countFactor
[in]_subClassifierIf not NULL points to the configuration that is to be used if this class is predicted. This is how multi-level classifier is implemented.
[in,out]_mlClassesList of classes.

Definition at line 35 of file TrainingClass.cpp.

References KKMLL::MLClass::CountFactor(), KKMLL::MLClassList::GetMLClassPtr(), KKB::KKStr::KKStr(), and KKB::VectorKKStr::VectorKKStr().

Referenced by KKMLL::TrainingConfiguration2::AddATrainingClass(), KKMLL::TrainingConfiguration2::GenerateAConfiguraionForAHierarchialLevel(), and KKMLL::TrainingConfiguration2::TrainingConfiguration2().

41  :
42  countFactor (_countFactor),
43  directories (_directories),
44  featureFileName (_name),
45  mlClass (NULL),
46  weight (_weight),
47  subClassifier (_subClassifier)
48 {
49  featureFileName << ".data"; // Will be equal to ClassName + ".data". ex: "Copepods.data"
50 
51  mlClass = _mlClasses.GetMLClassPtr (_name);
52  mlClass->CountFactor (_countFactor);
53 }
float CountFactor() const
Definition: MLClass.h:139
virtual MLClassPtr GetMLClassPtr(const KKStr &_name)
return pointer to instance with &#39;_name&#39;; if none exists, create one and add to list.
Definition: MLClass.cpp:861
TrainingClass::TrainingClass ( const TrainingClass tc)

Definition at line 57 of file TrainingClass.cpp.

References KKB::KKStr::KKStr(), and KKB::VectorKKStr::VectorKKStr().

57  :
58  countFactor (tc.countFactor),
59  directories (tc.directories),
60  featureFileName (tc.featureFileName),
61  mlClass (tc.mlClass),
62  subClassifier (NULL),
63  weight (tc.weight)
64 {
65 }

Member Function Documentation

void TrainingClass::AddDirectories ( const VectorKKStr _directories)

Definition at line 103 of file TrainingClass.cpp.

104 {
105  VectorKKStr::const_iterator idx;
106  for (idx = _directories.begin (); idx != _directories.end (); ++idx)
107  AddDirectory (*idx);
108 }
void AddDirectory(const KKStr &_directory)
void TrainingClass::AddDirectory ( const KKStr _directory)

Definition at line 96 of file TrainingClass.cpp.

97 {
98  directories.push_back (_directory);
99 }
float KKMLL::TrainingClass::CountFactor ( ) const
inline

Definition at line 65 of file TrainingClass.h.

65 {return countFactor;}
void KKMLL::TrainingClass::CountFactor ( float  _countFactor)
inline

Definition at line 84 of file TrainingClass.h.

84 {countFactor = _countFactor;}
const VectorKKStr& KKMLL::TrainingClass::Directories ( ) const
inline

Definition at line 68 of file TrainingClass.h.

Referenced by KKMLL::TrainingConfiguration2::GenerateAConfiguraionForAHierarchialLevel().

68 {return directories;}
const KKStr & TrainingClass::Directory ( kkuint32  idx) const

Definition at line 79 of file TrainingClass.cpp.

80 {
81  if (idx >= directories.size ())
82  return KKStr::EmptyStr();
83  else
84  return directories[idx];
85 }
void TrainingClass::Directory ( kkuint32  idx,
const KKStr directory 
)

Definition at line 113 of file TrainingClass.cpp.

116 {
117  while (idx >= directories.size ())
118  directories.push_back ("");
119  directories[idx] = directory;
120 }
kkuint32 TrainingClass::DirectoryCount ( ) const

Definition at line 88 of file TrainingClass.cpp.

Referenced by KKMLL::TrainingClassList::LocateByDirectory().

89 {
90  return directories.size ();
91 }
KKStr TrainingClass::ExpandedDirectory ( const KKStr rootDir,
kkuint32  idx 
)

Definition at line 124 of file TrainingClass.cpp.

References KKB::KKStr::Concat(), KKB::KKStr::Empty(), KKB::KKStr::FirstChar(), KKMLL::MLClass::Name(), KKB::KKStr::operator+(), KKB::KKStr::operator=(), KKB::KKStr::operator[](), KKB::osAddSlash(), and KKB::osSubstituteInEnvironmentVariables().

Referenced by KKMLL::TrainingConfiguration2::BuildTrainingClassListFromDirectoryStructure(), KKMLL::TrainingConfiguration2::DirectoryPathForClass(), and KKMLL::TrainingClassList::LocateByDirectory().

127 {
128  KKStr rootDirWithSlash = "";
129  if (!rootDir.Empty ())
130  rootDirWithSlash = osAddSlash (rootDir);
131 
132  KKStr directory = "";
133 
134  if (idx >= directories.size ())
135  return KKStr::EmptyStr ();
136 
137  directory = directories[idx];
138 
139  if (directory.Empty ())
140  {
141  directory = rootDirWithSlash + mlClass->Name ();
142  return directory;
143  }
144 
145  directory = osSubstituteInEnvironmentVariables (directory);
146 
147  char firstChar = directory.FirstChar ();
148  if ((firstChar == '/') || (firstChar == '\\'))
149  return directory;
150 
151  if (directory[1] == ':')
152  return directory;
153 
154  return osSubstituteInEnvironmentVariables (rootDirWithSlash + directory);
155 } /* ExpandedDirectory */
char FirstChar() const
Definition: KKStr.cpp:1970
KKB::KKStr osAddSlash(const KKStr &fileSpec)
bool Empty() const
Definition: KKStr.h:241
KKB::KKStr osSubstituteInEnvironmentVariables(const KKStr &src)
Substitute in the value of the environment variables into &#39;src&#39;.
Definition: OSservices.cpp:977
const KKStr& KKMLL::TrainingClass::FeatureFileName ( ) const
inline

Definition at line 69 of file TrainingClass.h.

Referenced by KKMLL::TrainingConfiguration2::BuildTrainingClassListFromDirectoryStructure().

69 {return featureFileName;}
void KKMLL::TrainingClass::FeatureFileName ( const KKStr _featureFileName)
inline

Definition at line 85 of file TrainingClass.h.

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

Referenced by KKMLL::TrainingConfiguration2::BuildTrainingClassListFromDirectoryStructure().

85 {featureFileName = _featureFileName;}
void KKMLL::TrainingClass::MLClass ( MLClassPtr  _mlClass)
inline

Definition at line 86 of file TrainingClass.h.

Referenced by KKMLL::TrainingConfiguration2::BuildTrainingClassListFromDirectoryStructure().

86 {mlClass = _mlClass;}
const KKStr & TrainingClass::Name ( ) const

Definition at line 71 of file TrainingClass.cpp.

References KKMLL::MLClass::Name().

72 {
73  return mlClass->Name ();
74 }
void TrainingClass::ReadXML ( XmlStream s,
XmlTagConstPtr  tag,
VolConstBool cancelFlag,
RunLog log 
)
virtual

Definition at line 239 of file TrainingClass.cpp.

References KKB::KKStr::EqualIgnoreCase(), KKB::XmlStream::GetNextToken(), and KKB::XmlToken::VarName().

244 {
245  directories.clear ();
246  for (auto idx: tag->Attributes ())
247  {
248  const KKStr& n = idx->Name ();
249  const KKStr& v = idx->Value ();
250 
251  if (n.EqualIgnoreCase ("MLClass"))
253 
254  else if (n.EqualIgnoreCase ("FeatureFileName"))
255  FeatureFileName (v);
256 
257  else if (n.EqualIgnoreCase ("Weight"))
258  Weight (v.ToFloat ());
259 
260  else if (n.EqualIgnoreCase ("CountFactor"))
261  CountFactor (v.ToFloat ());
262 
263  else if (n.EqualIgnoreCase ("SubClassifier"))
264  SubClassifierName (v);
265  }
266 
267  XmlTokenPtr t = s.GetNextToken (cancelFlag, log);
268  while (t && (!cancelFlag))
269  {
270  if ((t->VarName ().EqualIgnoreCase ("Directory")) && (typeid (*t) == typeid (XmlElementKKStr)))
271  {
272  XmlElementKKStrPtr xmlS = dynamic_cast<XmlElementKKStrPtr> (t);
273  if (xmlS && xmlS->Value ())
274  {
275  directories.push_back (*(xmlS->Value ()));
276  }
277  }
278 
279  delete t;
280  t = s.GetNextToken (cancelFlag, log);
281  }
282  delete t;
283  t = NULL;
284 } /* ReadXML */
const KKStr & FeatureFileName() const
Definition: TrainingClass.h:69
T *const Value() const
Definition: XmlStream.h:441
Represents a "Class" in the Machine Learning Sense.
Definition: MLClass.h:52
bool EqualIgnoreCase(const KKStr &s2) const
Definition: KKStr.cpp:1250
float CountFactor() const
Definition: TrainingClass.h:65
float Weight() const
Definition: TrainingClass.h:75
static MLClassPtr CreateNewMLClass(const KKStr &_name, kkint32 _classId=-1)
Static method used to create a new instance of a MLClass object.
Definition: MLClass.cpp:100
const KKStr & SubClassifierName() const
Definition: TrainingClass.h:73
float ToFloat() const
Definition: KKStr.cpp:3553
virtual XmlTokenPtr GetNextToken(VolConstBool &cancelFlag, RunLog &log)
Definition: XmlStream.cpp:116
virtual const KKStr & VarName() const
Definition: XmlStream.h:269
TrainingConfiguration2Ptr KKMLL::TrainingClass::SubClassifier ( ) const
inline

Definition at line 72 of file TrainingClass.h.

Referenced by KKMLL::TrainingConfiguration2::ExtractFullHierachyOfClasses().

72 {return subClassifier;}
void KKMLL::TrainingClass::SubClassifier ( TrainingConfiguration2Ptr  _subClassifier)
inline

Definition at line 87 of file TrainingClass.h.

Referenced by KKMLL::TrainingConfiguration2::ReadXMLPost().

87 {subClassifier = _subClassifier;}
const KKStr& KKMLL::TrainingClass::SubClassifierName ( ) const
inline

Definition at line 73 of file TrainingClass.h.

Referenced by KKMLL::TrainingConfiguration2::ReadXMLPost().

73 {return subClassifierName;}
void KKMLL::TrainingClass::SubClassifierName ( const KKStr _subClassifierName)
inline

Definition at line 88 of file TrainingClass.h.

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

88 {subClassifierName = _subClassifierName;}
float KKMLL::TrainingClass::Weight ( ) const
inline

Definition at line 75 of file TrainingClass.h.

75 {return weight;}
void KKMLL::TrainingClass::Weight ( float  _weight)
inline

Definition at line 89 of file TrainingClass.h.

89 {weight = _weight;}
virtual void KKMLL::TrainingClass::WriteXML ( const KKStr varName,
std::ostream &  o 
) const
virtual
virtual void KKMLL::TrainingClass::WriteXML ( const KKStr varName,
const KKStr rootDir,
std::ostream &  o 
) const
virtual

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