20 using namespace KKMLL;
39 TrainingConfiguration2Ptr _subClassifier,
42 countFactor (_countFactor),
43 directories
(_directories
),
44 featureFileName
(_name
),
47 subClassifier (_subClassifier)
49 featureFileName <<
".data";
58 countFactor (tc.countFactor),
59 directories
(tc.directories
),
60 featureFileName
(tc.featureFileName
),
81 if (idx >= directories.size ())
82 return KKStr::EmptyStr();
84 return directories[idx];
90 return directories.size ();
98 directories.push_back (_directory);
105 VectorKKStr::const_iterator idx;
106 for (idx = _directories.begin (); idx != _directories.end (); ++idx)
114 const KKStr& directory
117 while (idx >= directories.size ())
118 directories.push_back (
"");
119 directories[idx] = directory;
128 KKStr rootDirWithSlash =
"";
132 KKStr directory =
"";
134 if (idx >= directories.size ())
135 return KKStr::EmptyStr ();
137 directory = directories[idx];
141 directory
= rootDirWithSlash
+ mlClass
->Name ();
148 if ((firstChar ==
'/') || (firstChar ==
'\\'))
151 if (directory
[1
] ==
':')
167 const KKStr& rootDir,
171 bool noDirectories =
false;
172 bool onlyOneDirectory =
false;
175 for (
auto idx: directories)
177 if (idx.StartsWith (rootDir))
179 KKStr rootPart = idx.SubStrPart (rootDir.Len ());
180 rootPart.ChopFirstChar ();
181 tempDirectories.push_back (rootPart);
185 tempDirectories.push_back (idx);
189 if (tempDirectories.size () == 1)
191 if ((tempDirectories[0].EqualIgnoreCase (mlClass->Name ())) || (tempDirectories[0].Empty ()))
192 noDirectories =
true;
194 onlyOneDirectory =
true;
197 else if (tempDirectories.size () < 1)
198 noDirectories =
true;
204 XmlTag startTag
("TrainingClass", startTagType
);
217 if (countFactor != 0.0f)
228 for (
auto idx: tempDirectories)
229 idx.WriteXML (
"Directory", o);
245 directories.clear ();
246 for (
auto idx: tag->Attributes ())
248 const KKStr& n = idx->Name ();
249 const KKStr& v = idx->Value ();
251 if (n.EqualIgnoreCase (
"MLClass"))
252 MLClass (MLClass::CreateNewMLClass (v));
254 else if (n.EqualIgnoreCase (
"FeatureFileName"))
257 else if (n.EqualIgnoreCase (
"Weight"))
258 Weight (v.ToFloat ());
260 else if (n.EqualIgnoreCase (
"CountFactor"))
261 CountFactor (v.ToFloat ());
263 else if (n.EqualIgnoreCase (
"SubClassifier"))
264 SubClassifierName (v);
268 while (t && (!cancelFlag))
273 if (xmlS && xmlS->Value ())
275 directories.push_back (*(xmlS->Value ()));
307 KKQueue<TrainingClass> (tcl),
308 rootDir
(tcl.rootDir
) 318 rootDir
(tcl.rootDir
) 327 PushOnBack (trainingClass);
334 TrainingClassList::const_iterator idx;
335 for (idx = begin (); idx != end (); idx++)
349 for (
auto idx: *
this)
351 if (idx->Name ().EqualIgnoreCase(className))
367 for (idx = begin (); idx != end (); idx++)
386 for (const_iterator idx = begin (); idx != end (); idx++)
389 dupList->PushOnBack (
new TrainingClass (*tc));
405 tagStart.AddAtribute (
"Count", (kkint32)size ());
414 TrainingClassList::const_iterator idx;
415 for (idx = begin (); idx != end (); ++idx)
436 while (t && (!cancelFlag))
449 if (varName.EqualIgnoreCase (
"RootDir"))
450 RootDir (*(s->Value ()));
453 else if (
typeid (*t) ==
typeid (XmlElementTrainingClass))
455 XmlElementTrainingClassPtr tokenTrainingClass =
dynamic_cast<XmlElementTrainingClassPtr> (t);
456 TrainingClassPtr tc = tokenTrainingClass->TakeOwnership ();
458 AddTrainingClass (tc);
463 log.Level (-1) <<
"XmlElementTrainingClassList ***ERROR*** Un-expected Section Element[" << e->SectionName () <<
"]" << endl;
487 return new XmlElementTrainingClass(tag, s, cancelFlag, log);
TrainingClass(const TrainingClass &tc)
XmlTag(const KKStr &_name, TagTypes _tagType)
TrainingClassList(const KKStr &rootDir, bool owner)
TrainingClassPtr LocateByMLClassName(const KKStr &className)
XmlElementTemplate< TrainingClass > XmlElementTrainingClass
bool EqualIgnoreCase(const char *s2) const
static XmlFactoryTrainingClass * factoryInstance
const KKStr & Directory(kkuint32 idx) const
TrainingClassPtr LocateByDirectory(const KKStr &directory)
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 p...
virtual void ReadXML(XmlStream &s, XmlTagConstPtr tag, VolConstBool &cancelFlag, RunLog &log)
static void RegisterFactory(XmlFactory *factory)
bool EqualIgnoreCase(const KKStr &s2) const
kkuint32 DirectoryCount() const
void CountFactor(float _countFactor)
unsigned __int32 kkuint32
XmlFactory(const KKStr &_clasName)
KKStr ExpandedDirectory(const KKStr &rootDir, kkuint32 idx)
KKStr & operator=(KKStr &&src)
KKB::KKStr osAddSlash(const KKStr &fileSpec)
KKStr(const KKStr &str)
Copy Constructor.
virtual void ReadXML(XmlStream &s, XmlTagPtr tag, VolConstBool &cancelFlag, RunLog &log)
XmlElement * XmlElementPtr
void AddAtribute(const KKStr &attributeName, const KKStr &attributeValue)
virtual void WriteXML(const KKStr &varName, std::ostream &o) const
XmlTag const * XmlTagConstPtr
Manages the reading and writing of objects in a simple XML format. For a class to be supported by Xml...
virtual void WriteXML(const KKStr &varName, const KKStr &rootDir, std::ostream &o) const
static KKStr Concat(const std::vector< std::string > &values)
Concatenates the list of 'std::string' strings.
virtual XmlElementTrainingClass * ManufatureXmlElement(XmlTagPtr tag, XmlStream &s, VolConstBool &cancelFlag, RunLog &log)
const KKStr & Name() const
virtual const KKStr & VarName() const
const KKStr & Name() const
void WriteXML(const KKStr &varName, std::ostream &o) const
KKStr operator+(const KKStr &right) const
void AddTrainingClass(TrainingClassPtr trainingClass)
static XmlFactoryTrainingClass * FactoryInstance()
const MLClassPtr MLClass() const
TrainingClassList * TrainingClassListPtr
KKB::KKStr osSubstituteInEnvironmentVariables(const KKStr &src)
Substitute in the value of the environment variables into 'src'.
XmlFactoryTrainingClass()
Specify where training examples and other related data for a MLClass that is needed to train a classi...
TrainingClassPtr LocateByMLClass(MLClassPtr _mlClass) const
void Directory(kkuint32 idx, const KKStr &directory)
XmlElementKKStr * XmlElementKKStrPtr
char operator[](kkint32 i) const
void WriteXML(std::ostream &o)
Used for logging messages.
void EncodeProblem(const struct svm_paramater ¶m, struct svm_problem &prob_in, struct svm_problem &prob_out)
void AddDirectories(const VectorKKStr &_directories)
virtual MLClassPtr GetMLClassPtr(const KKStr &_name)
return pointer to instance with '_name'; if none exists, create one and add to list.
const KKStr & SubClassifierName() const
virtual TokenTypes TokenType()=0
virtual XmlTokenPtr GetNextToken(VolConstBool &cancelFlag, RunLog &log)
virtual void WriteXML(const KKStr &varName, std::ostream &o) const
Maintains a list of MLClass instances.
Maintains one instance of a GoalKeeper object that can be used anywhere in the application.
TrainingClass * TrainingClassPtr
TrainingClassList(const TrainingClassList &tcl, bool _owner)
virtual const KKStr & VarName() const
#define XmlFactoryMacro(NameOfClass)
TrainingClassList * DuplicateListAndContents() const
void AddAtribute(const KKStr &attributeName, double attributeValue)
VectorKKStr(const VectorKKStr &v)
void AddDirectory(const KKStr &_directory)
volatile const bool VolConstBool