26 using namespace KKMLL;
33 FeatureVectorListPtr _data,
38 cancelFlag (_cancelFlag),
41 meanConfusionMatrix (NULL),
42 numOfFolds (_numOfFolds),
43 numOfOrderings (_numOfOrderings),
45 weOwnOrderings (
false),
48 trainingTimeMean (0.0),
49 trainingTimeStdDev (0.0),
55 CheckFileDescCopasetic (_log);
56 orderings =
new Orderings (_data
, numOfOrderings
, _numOfFolds
, _log
);
57 weOwnOrderings =
true;
69 cancelFlag (_cancelFlag),
72 meanConfusionMatrix (NULL),
75 orderings (_orderings),
76 weOwnOrderings (
false),
78 trainingTimeMean (0.0),
79 trainingTimeStdDev (0.0),
84 CheckFileDescCopasetic (_log);
107 KKStr errMsg =
"CrossValidationMxN ***ERROR*** File Description between config and orderings don't match.";
117 accuracies.erase (accuracies.begin (), accuracies.end ());
118 supportPoints.erase (supportPoints.begin (), supportPoints.end ());
119 trainingTimes.erase (trainingTimes.begin (), trainingTimes.end ());
120 testTimes.erase (testTimes.begin (), testTimes.end ());
122 delete meanConfusionMatrix;
123 meanConfusionMatrix = NULL;
139 for (cvIDX = 0; cvIDX < numOfOrderings; cvIDX++)
141 FeatureVectorListPtr data = orderings
->Ordering (cvIDX
);
155 accuracies.push_back (cv->Accuracy ());
156 supportPoints.push_back ((
float)cv->NumOfSupportVectors ());
157 trainingTimes.push_back (cv->TrainTimeTotal ());
158 testTimes.push_back (cv->TestTimeTotal ());
165 CalcMeanAndStdDev (accuracies, accuracyMean, accuracyStdDev);
166 CalcMeanAndStdDev (supportPoints, supportPointsMean, supportPointsStdDev);
167 CalcMeanAndStdDev (trainingTimes, trainingTimeMean, trainingTimeStdDev);
168 CalcMeanAndStdDev (testTimes, testTimeMean, testTimeStdDev);
170 double factor = 1.0 / (
double)numOfOrderings;
197 for (cvIDX = 0; cvIDX < numOfOrderings; cvIDX++)
199 FeatureVectorListPtr data = orderings
->Ordering (cvIDX
);
204 FeatureVectorList::iterator fvIDX;
206 for (fvIDX = data->begin (); fvIDX != data->end (); fvIDX++)
208 FeatureVectorPtr example = *fvIDX;
210 if (trainingData.QueueSize () < numExamplsToUseForTraining)
211 trainingData.PushOnBack (example);
213 testData.PushOnBack (example);
231 accuracies.push_back (cv->Accuracy ());
232 supportPoints.push_back ((
float)cv->NumOfSupportVectors ());
233 trainingTimes.push_back (cv->TrainTimeTotal ());
234 testTimes.push_back (cv->TestTimeTotal ());
241 CalcMeanAndStdDev (accuracies, accuracyMean, accuracyStdDev);
242 CalcMeanAndStdDev (supportPoints, supportPointsMean, supportPointsStdDev);
243 CalcMeanAndStdDev (trainingTimes, trainingTimeMean, trainingTimeStdDev);
244 CalcMeanAndStdDev (testTimes, testTimeMean, testTimeStdDev);
246 double factor = 1.0 / (
double)numOfOrderings;
256 return meanConfusionMatrix;
Used to maintain multiple orderings of a single list of FeatureVector objects.
kkuint32 NumOfFolds() const
Orderings(const FeatureVectorListPtr _data, kkuint32 _numOfOrderings, kkuint32 _numOfFolds, RunLog &_log)
Constructs Orderings object from ImageFeatursList object.
const ConfusionMatrix2Ptr ConfussionMatrix() const
const ConfusionMatrix2Ptr ConfussionMatrix() const
kkuint32 NumOfOrderings() const
const MLClassListPtr MLClasses() const
A class that is meant to manage a n-Fold Cross Validation.
void RunCrossValidation(RunLog &log)
unsigned __int32 kkuint32
FeatureVectorList(FileDescPtr _fileDesc, bool _owner)
Will create a new empty list of FeatureVector's.
Container class for FeatureVector derived objects.
CrossValidationMxN(TrainingConfiguration2Ptr _comfig, OrderingsPtr _data, bool &_cancelFlag, RunLog &_log)
void FactorCounts(double factor)
void AddIn(const ConfusionMatrix2 &cm, RunLog &log)
ConfusionMatrix2(const MLClassList &_classes)
const FeatureVectorListPtr Ordering(kkuint32 orderingIdx) const
static KKStr Concat(const std::vector< std::string > &values)
Concatenates the list of 'std::string' strings.
FileDescPtr FileDesc() const
CrossValidationMxN(TrainingConfiguration2Ptr _comfig, kkuint32 _numOfOrderings, kkuint32 _numOfFolds, FeatureVectorListPtr _data, bool &_cancelFlag, RunLog &_log)
void RunTrainAndTest(kkint32 numExamplsToUseForTraining, RunLog &log)
Will run M number of Train then Test passes.
Used for logging messages.
void EncodeProblem(const struct svm_paramater ¶m, struct svm_problem &prob_in, struct svm_problem &prob_out)
KKException(const KKStr &_exceptionStr)
CrossValidation(TrainingConfiguration2Ptr _config, FeatureVectorListPtr _examples, MLClassListPtr _mlClasses, kkint32 _numOfFolds, bool _featuresAreAlreadyNormalized, FileDescPtr _fileDesc, RunLog &_log, bool &_cancelFlag)
A confusion matrix object that is used to record the results from a CrossValidation. <see also cref="CrossValidation"
void RunValidationOnly(FeatureVectorListPtr validationData, bool *classedCorrectly, RunLog &log)
void RunValidations(RunLog &log)
const FileDescPtr FileDesc() const