30 using namespace KKMLL;
55 Model (_name
, _param
, _factoryFVProducer
),
100 return memoryConsumedEstimated;
121 bool _alreadyNormalized,
127 _log.Level (10) <<
"ModelUsfCasCor::TrainModel[" << Name () <<
"]." << endl;
132 KKStr errMsg =
"ModelUsfCasCor::TrainModel (param == NULL)";
133 _log.Level (-1) << endl << endl << errMsg << endl << endl;
150 KKStr errMsg =
"ModelUsfCasCor::TrainModel ***ERROR*** Exception occurred calling 'Model::TrainModel'.";
151 _log.Level (-1) << endl << errMsg << endl << e.ToString () << endl << endl;
154 catch (
const exception& e2)
157 KKStr errMsg =
"ModelUsfCasCor::TrainModel ***ERROR*** Exception occurred calling 'Model::TrainModel'.";
158 _log.Level (-1) << endl << endl << errMsg << endl << e2.what () << endl << endl;
164 KKStr errMsg =
"ModelUsfCasCor::TrainModel ***ERROR*** Exception occurred calling 'Model::TrainModel'.";
165 _log.Level (-1) << endl << endl << errMsg << endl << endl;
194 _log.Level (10) <<
"ModelUsfCasCor::TrainModel Completed." << endl;
206 log.Level (-1) << endl << endl <<
"ModelUsfCasCor::Predict ***ERROR*** (usfCasCorClassifier == NULL)" << endl << endl;
209 bool newExampleCreated =
false;
213 if (newExampleCreated)
215 delete encodedExample;
216 encodedExample = NULL;
219 return predictedClass;
226 MLClassPtr knownClass,
227 MLClassPtr& predClass1,
228 MLClassPtr& predClass2,
231 double& probOfKnownClass,
232 double& predClass1Prob,
233 double& predClass2Prob,
235 bool& knownClassOneOfTheWinners,
242 KKStr errMsg =
"ModelUsfCasCor::Predict ***ERROR*** (usfCasCorClassifier == NULL)";
243 log.Level (-1) << endl << endl << errMsg << endl << endl;
254 bool newExampleCreated =
false;
265 if (newExampleCreated)
267 delete encodedExample;
268 encodedExample = NULL;
271 predClass1Prob = pc1p;
272 predClass2Prob = pc2p;
273 probOfKnownClass = kcp;
275 breakTie = pc1p - pc2p;
278 knownClassOneOfTheWinners = (predClass1 == knownClass);
293 KKStr errMsg =
"ModelUsfCasCor::ProbabilitiesByClass ***ERROR*** (usfCasCorClassifier == NULL)";
294 log.Level (-1) << endl << endl << errMsg << endl << endl;
298 bool newExampleCreated =
false;
305 if (newExampleCreated)
307 delete encodedExample;
308 encodedExample = NULL;
320 double* _probabilities,
326 KKStr errMsg =
"ModelUsfCasCor::ProbabilitiesByClass ***ERROR*** (usfCasCorClassifier == NULL)";
327 log.Level (-1) << endl << endl << errMsg << endl << endl;
333 MLClassPtr pc1 = NULL;
334 MLClassPtr pc2 = NULL;
335 MLClassPtr kc = NULL;
341 bool newExampleCreated =
false;
351 if (newExampleCreated)
353 delete encodedExample;
354 encodedExample = NULL;
357 if (_mlClasses.size () != probabilities.size ())
359 log.Level (-1) << endl <<
"ModelUsfCasCor::ProbabilitiesByClass ***ERROR***" << endl
360 <<
"\"_mlClasses.size () != probabilities.size ()\" This should not ever be able to happen." << endl
362 for (
int x = 0; x < _mlClasses.QueueSize (); ++x)
365 _probabilities[x] = 0.0;
370 float highProb = -9999.99f;
371 int highProbIdx = -1;
372 for (kkuint32 x = 0; x < probabilities.size (); ++x)
374 float p = probabilities[x];
376 _probabilities[x] = p;
383 if (highProbIdx >= 0)
384 votes[highProbIdx] = 1;
396 double* _probabilities,
402 KKStr errMsg =
"ModelUsfCasCor::ProbabilitiesByClass ***ERROR*** (usfCasCorClassifier == NULL)";
403 _log.Level (-1) << endl << endl << errMsg << endl << endl;
409 MLClassPtr pc1 = NULL;
410 MLClassPtr pc2 = NULL;
411 MLClassPtr kc = NULL;
417 bool newExampleCreated =
false;
427 if (newExampleCreated)
429 delete encodedExample;
430 encodedExample = NULL;
433 if (_mlClasses.size () != probabilities.size ())
435 _log.Level (-1) << endl <<
"ModelUsfCasCor::ProbabilitiesByClass ***ERROR***" << endl
436 <<
"\"_mlClasses.size () != probabilities.size ()\" This should not ever be able to happen." << endl
438 for (
int x = 0; x < _mlClasses.QueueSize (); ++x)
440 _probabilities[x] = 0.0;
445 for (kkuint32 x = 0; x < probabilities.size (); ++x)
446 _probabilities[x] = probabilities[x];
499 while (t && (!cancelFlag))
504 if (t->VarName ().EqualIgnoreCase (
"UsfCasCorClassifier") && (
typeid (*t) ==
typeid(XmlElementUsfCasCor)))
506 delete usfCasCorClassifier;
507 usfCasCorClassifier =
dynamic_cast<XmlElementUsfCasCorPtr>(t)->TakeOwnership ();
512 errMsg <<
"ModelUsfCasCor::ReadXML ***ERROR*** Unexpected Element: Section: " << t->SectionName () <<
" VarName:" << t->VarName ();
513 log.Level (-1) << endl << errMsg << endl << endl;
514 AddErrorMsg (errMsg, 0);
532 errMsg <<
"ModelUsfCasCor::ReadXML ***ERROR*** Base class 'Model' does not have 'param' defined.";
534 log.Level (-1) << endl << errMsg << endl << endl;
542 log.Level (-1) << endl << errMsg << endl << endl;
KKStr(kkint32 size)
Creates a KKStr object that pre-allocates space for 'size' characters.
XmlTag(const KKStr &_name, TagTypes _tagType)
Base class to all Learning Algorithms.
FeatureVector * FeatureVectorPtr
ModelParamUsfCasCorPtr Param()
KKException(const KKStr &_exceptionStr, const KKException &_innerException)
XmlTokenPtr ReadXMLModelToken(XmlTokenPtr t, RunLog &log)
Will process any tokens that belong to 'ModelParam' and return NULL ones that are not will be passed ...
FeatureVectorListPtr trainExamples
void AddErrorMsg(const KKStr &errMsg, kkint32 lineNum)
void WriteModelXMLFields(std::ostream &o) const
The "WriteXML" method in Derived classes call this method to include the parents classes fields in th...
KKException(const KKStr &_exceptionStr, const std::exception &_innerException)
UsfCasCorPtr usfCasCorClassifier
int Number_of_rounds() const
virtual FeatureVectorPtr PrepExampleForPrediction(FeatureVectorPtr fv, bool &newExampleCreated)
Every prediction method in every class that is inherited from this class should call this method befo...
virtual kkint32 MemoryConsumedEstimated() const
kkint64 Random_seed() const
virtual void ProbabilitiesByClass(FeatureVectorPtr _example, const MLClassList &_mlClasses, double *_probabilities, RunLog &log)
Derives predicted probabilities by class.
virtual void Predict(FeatureVectorPtr example, MLClassPtr knownClass, MLClassPtr &predClass1, MLClassPtr &predClass2, kkint32 &predClass1Votes, kkint32 &predClass2Votes, double &probOfKnownClass, double &predClass1Prob, double &predClass2Prob, kkint32 &numOfWinners, bool &knownClassOneOfTheWinners, double &breakTie, RunLog &log)
void SortByProbability(bool highToLow=true)
void AddAtribute(const KKStr &attributeName, const KKStr &attributeValue)
virtual void ProbabilitiesByClass(FeatureVectorPtr example, const MLClassList &_mlClasses, kkint32 *_votes, double *_probabilities, RunLog &log)
XmlTag const * XmlTagConstPtr
std::vector< float > VectorFloat
Manages the reading and writing of objects in a simple XML format. For a class to be supported by Xml...
This class encapsulates are the information necessary to build a UsfCasCor class. ...
void TrainingTimeEnd()
Derived classes call this method to stop the clock for 'trainingTime'.
virtual kkint32 MemoryConsumedEstimated() const
virtual ModelUsfCasCorPtr Duplicate() const
ModelUsfCasCor(const KKStr &_name, const ModelParamUsfCasCor &_param, FactoryFVProducerPtr _factoryFVProducer)
static KKStr Concat(const std::vector< std::string > &values)
Concatenates the list of 'std::string' strings.
ClassProbList * ClassProbListPtr
ModelUsfCasCor(const ModelUsfCasCor &_model)
Model(const KKStr &_name, const ModelParam &_param, FactoryFVProducerPtr _factoryFVProducer)
Construct a instance of 'Model' using the parameters specified in '_param'.
virtual ~ModelUsfCasCor()
Frees any memory allocated by, and owned by the ModelUsfCasCor.
virtual ClassProbListPtr ProbabilitiesByClass(FeatureVectorPtr example, RunLog &log)
ModelParamUsfCasCor * ModelParamUsfCasCorPtr
virtual MLClassPtr Predict(FeatureVectorPtr example, RunLog &log)
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)
virtual void TrainModel(FeatureVectorListPtr _trainExamples, bool _alreadyNormalized, bool _takeOwnership, VolConstBool &_cancelFlag, RunLog &_log)
Performs operations such as FeatureEncoding, and Normalization. The actual training of models occurs ...
virtual kkint32 NumOfSupportVectors() const
void TrainingTimeStart()
Derived classes call this method to start the clock for 'trainingTime'.
void ReadXMLModelPost(RunLog &log)
virtual KKStr ModelParamTypeStr() const
ModelParamUsfCasCorPtr param
int Number_of_trials() const
Model(const Model &_madel)
Copy Constructor.
virtual XmlTokenPtr GetNextToken(VolConstBool &cancelFlag, RunLog &log)
KKException(const KKStr &_exceptionStr)
ModelUsfCasCor(FactoryFVProducerPtr _factoryFVProducer)
Maintains a list of MLClass instances.
virtual void ReadXML(XmlStream &s, XmlTagConstPtr tag, VolConstBool &cancelFlag, RunLog &log)
To be implemented by derived classes; the parent classes fields will be updated by the derived class ...
virtual void TrainModel(FeatureVectorListPtr _trainExamples, bool _alreadyNormalized, bool _takeOwnership, VolConstBool &_cancelFlag, RunLog &_log)
Performs operations such as FeatureEncoding, and Normalization. The actual training of models occurs ...
FeatureVectorList * FeatureVectorListPtr
#define XmlFactoryMacro(NameOfClass)
virtual void WriteXML(const KKStr &varName, ostream &o) const
FactoryFVProducer * FactoryFVProducerPtr
Model(FactoryFVProducerPtr _factoryFVProducer)
Use this when you are planning on creating a empty model without parameters.
virtual FeatureNumListConstPtr SelectedFeatures() const
volatile const bool VolConstBool