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 */
Example #2
0
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 */