void Classifier2::ProbabilitiesByClass (const MLClassList& classes, FeatureVectorPtr example, kkint32* votes, double* probabilities ) { ClassProbListPtr predictions = ProbabilitiesByClass (example); kkuint32 numClasses = (kkuint32)classes.size (); for (kkuint32 x = 0; x < numClasses; ++x) { votes[x] = 0; probabilities[x] = 0.0; MLClassPtr c = classes.IdxToPtr (x); ClassProbConstPtr cp = predictions->LookUp (c); if (cp) { votes[x] = (kkint32)(0.5f + cp->votes); probabilities[x] = cp->probability; } } delete predictions; predictions= NULL; } /* ProbabilitiesByClass */
void ModelUsfCasCor::ProbabilitiesByClass (FeatureVectorPtr _example, const MLClassList& _mlClasses, double* _probabilities, RunLog& _log ) { if (!usfCasCorClassifier) { KKStr errMsg = "ModelUsfCasCor::ProbabilitiesByClass ***ERROR*** (usfCasCorClassifier == NULL)"; _log.Level (-1) << endl << endl << errMsg << endl << endl; throw KKException (errMsg); } VectorFloat probabilities; MLClassPtr pc1 = NULL; MLClassPtr pc2 = NULL; MLClassPtr kc = NULL; float pc1p = 0.0f; float pc2p = 0.0f; float kcp = 0.0f; bool newExampleCreated = false; FeatureVectorPtr encodedExample = PrepExampleForPrediction (_example, newExampleCreated); usfCasCorClassifier->PredictConfidences (encodedExample, kc, pc1, pc1p, pc2, pc2p, kcp, _mlClasses, probabilities ); if (newExampleCreated) { delete encodedExample; encodedExample = NULL; } if (_mlClasses.size () != probabilities.size ()) { _log.Level (-1) << endl << "ModelUsfCasCor::ProbabilitiesByClass ***ERROR***" << endl << "\"_mlClasses.size () != probabilities.size ()\" This should not ever be able to happen." << endl << endl; for (int x = 0; x < _mlClasses.QueueSize (); ++x) { _probabilities[x] = 0.0; } } else { for (kkuint32 x = 0; x < probabilities.size (); ++x) _probabilities[x] = probabilities[x]; } return; } /* ProbabilitiesByClass */