KSquare Utilities
CrossValidationVoting.h
Go to the documentation of this file.
1 #ifndef _CROSSVALIDATIONVOTING_
2 #define _CROSSVALIDATIONVOTING_
3 
4 #include "RunLog.h"
5 
6 
7 
8 namespace KKMLL
9 {
10  #if !defined(FeatureVector_Defined_)
11  class FeatureVector;
12  typedef FeatureVector* FeatureVectorPtr;
13  #endif
14 
15 
16  #if !defined(_FeatureVectorList_Defined_)
17  class FeatureVectorList;
18  typedef FeatureVectorList* FeatureVectorListPtr;
19  #endif
20 
21 
22  #if !defined(_MLCLASS_)
23  class MLClass;
24  typedef MLClass* MLClassPtr;
25  class MLClassList;
26  typedef MLClassList* MLClassListPtr;
27  #endif
28 
29 
30 
31  #if !defined(_ConfussionMatrix2_Defined_)
32  class ConfusionMatrix2;
33  typedef ConfusionMatrix2* ConfusionMatrix2Ptr;
34  #endif
35 
36 
37  #if !defined(_TrainingConfiguration2_Defined_)
39  typedef TrainingConfiguration2* TrainingConfiguration2Ptr;
40  #endif
41 
42  #if !defined(_TrainingConfiguration2List_Defined_)
44  typedef TrainingConfiguration2List* TrainingConfiguration2ListPtr;
45  #endif
46 
47 
48  #if !defined(_FileDesc_Defined_)
49  class FileDesc;
50  typedef FileDesc* FileDescPtr;
51  #endif
52 
53 
54 
56  {
57  public:
58  CrossValidationVoting (TrainingConfiguration2ListPtr _configs,
59  FeatureVectorListPtr _examples,
60  MLClassListPtr _mlClasses,
61  kkint32 _numOfFolds,
62  bool _featuresAreAlreadyNormalized,
63  FileDescPtr _fileDesc
64  );
65 
67 
68  void RunCrossValidation (RunLog& log);
69 
70  void RunValidationOnly (FeatureVectorListPtr validationData,
71  bool* classedCorrectly,
72  RunLog& log
73  );
74 
75 
76  ConfusionMatrix2Ptr ConfussionMatrix () {return confusionMatrix;}
77 
78  float Accuracy ();
79  double ClassificationTime () const {return classificationTime;}
80  float FoldAccuracy (kkint32 foldNum) const;
81  KKStr FoldAccuracysToStr () const;
82  KKStr FoldStr () const;
83  kkint32 NumOfSupportVectors () const {return numOfSupportVectors;}
84  double TrainingTime () const {return trainingTime;}
85 
86  private:
87  void AllocateMemory (RunLog& log);
88 
89  void CrossValidate (FeatureVectorListPtr testImages,
90  FeatureVectorListPtr trainingExamples,
91  kkint32 foldNum,
92  bool* classedCorrectly,
93  RunLog& log
94  );
95 
96  void DeleteAllocatedMemory ();
97 
98 
99  TrainingConfiguration2ListPtr configs;
100  bool featuresAreAlreadyNormalized;
101  FileDescPtr fileDesc;
102  float* foldAccuracies;
103  kkint32* foldCounts;
104  ConfusionMatrix2Ptr confusionMatrix;
105  ConfusionMatrix2Ptr* cmByNumOfConflicts;
106  FeatureVectorListPtr examples;
107  MLClassListPtr mlClasses;
108  kkint32 examplesPerClass;
109  kkint32 maxNumOfConflicts; /**< Will indicate the number confusionMatrices created in table in cmByNumOfConflicts; */
110  kkint32 numOfFolds;
111  kkint32 numOfSupportVectors;
112  kkint32* numOfWinnersCounts;
113  kkint32* numOfWinnersCorrects;
114  kkint32* numOfWinnersOneOfTheWinners;
115  double classificationTime;
116  double trainingTime;
117  };
118 
119 
121 
122 } /* namespace KKMLL */
123 
124 #endif
Provides a detailed description of the attributes of a dataset.
Definition: FileDesc.h:72
__int32 kkint32
Definition: KKBaseTypes.h:88
Represents a "Class" in the Machine Learning Sense.
Definition: MLClass.h:52
Container class for FeatureVector derived objects.
CrossValidationVoting * CrossValidationVotingPtr
static KKStr Concat(const std::vector< std::string > &values)
Concatenates the list of &#39;std::string&#39; strings.
Definition: KKStr.cpp:1082
void RunValidationOnly(FeatureVectorListPtr validationData, bool *classedCorrectly, RunLog &log)
CrossValidationVoting(TrainingConfiguration2ListPtr _configs, FeatureVectorListPtr _examples, MLClassListPtr _mlClasses, kkint32 _numOfFolds, bool _featuresAreAlreadyNormalized, FileDescPtr _fileDesc)
Used for logging messages.
Definition: RunLog.h:49
void EncodeProblem(const struct svm_paramater &param, struct svm_problem &prob_in, struct svm_problem &prob_out)
ConfusionMatrix2Ptr ConfussionMatrix()
Maintains a list of MLClass instances.
Definition: MLClass.h:233
Represents a Feature Vector of a single example, labeled or unlabeled.
Definition: FeatureVector.h:59
A confusion matrix object that is used to record the results from a CrossValidation. <see also cref="CrossValidation"
float FoldAccuracy(kkint32 foldNum) const