KSquare Utilities
CrossValidationMxN.h
Go to the documentation of this file.
1 #if !defined(_CROSSVALIDATIONMXN_)
2 #define _CROSSVALIDATIONMXN_
3 //*********************************************************************
4 //* Written by: Kurt Kramer *
5 //* For: Research Work, Plankton recognition System *
6 //* *
7 //*-------------------------------------------------------------------*
8 //* *
9 //*********************************************************************
10 
11 #include "KKBaseTypes.h"
12 #include "RunLog.h"
13 
14 namespace KKMLL
15 {
16  #if !defined (_FILEDESC_)
17  class FileDesc;
18  typedef FileDesc* FileDescPtr;
19  #endif
20 
21 
22  #ifndef _MLCLASS_
23  class MLClass;
24  typedef MLClass* MLClassPtr;
25  class MLClassList;
26  typedef MLClassList* MLClassListPtr;
27  #endif
28 
29 
30 
31 
32 
33  #ifndef _ConfussionMatrix2_
34  class ConfusionMatrix2;
35  typedef ConfusionMatrix2* ConfusionMatrix2Ptr;
36  #endif
37 
38 
39  #ifndef _CROSSVALIDATION_
40  class CrossValidation;
41  typedef CrossValidation* CrossValidationPtr;
42  #endif
43 
44 
45  #ifndef _FeatureVector_Defined_
46  class FeatureVector;
47  typedef FeatureVector* FeatureVectorPtr;
48  #endif
49 
50 
51  #ifndef _FeatureVectorList_Defined_
52  class FeatureVectorList;
53  typedef FeatureVectorList* FeatureVectorListPtr;
54  #endif
55 
56 
57  #if !defined(_ORDERINGS_)
58  class Orderings;
59  typedef Orderings* OrderingsPtr;
60  #endif
61 
62 
63  #ifndef _TrainingConfiguration2_Defined_
65  typedef TrainingConfiguration2* TrainingConfiguration2Ptr;
66  #endif
67 
68 
70  {
71  public:
72  CrossValidationMxN (TrainingConfiguration2Ptr _comfig,
73  kkuint32 _numOfOrderings,
74  kkuint32 _numOfFolds,
75  FeatureVectorListPtr _data,
76  bool& _cancelFlag,
77  RunLog& _log
78  );
79 
80  CrossValidationMxN (TrainingConfiguration2Ptr _comfig,
81  OrderingsPtr _data,
82  bool& _cancelFlag,
83  RunLog& _log
84  );
85 
87 
88  const
89  ConfusionMatrix2Ptr ConfussionMatrix () const;
90 
91  void RunTrainAndTest (kkint32 numExamplsToUseForTraining,
92  RunLog& log
93  );
94 
95  void RunValidations (RunLog& log);
96 
97  // Access Methods
98  kkint32 NumOfOrderings () const {return numOfOrderings;}
99  kkint32 NumOfFolds () const {return numOfOrderings;}
100 
101  const VectorFloat& Accuracies () const {return accuracies;}
102  float AccuracyMean () const {return accuracyMean;}
103  float AccuracyStdDev () const {return accuracyStdDev;}
104 
105  const VectorFloat& SupportPoints () const {return supportPoints;}
106  float SupportPointsMean () const {return supportPointsMean;}
107  float SupportPointsStdDev () const {return supportPointsStdDev;}
108 
109  const VectorDouble& TestTimes () const {return testTimes;}
110  double TestTimeMean () const {return testTimeMean;}
111  double TestTimeStdDev () const {return testTimeStdDev;}
112 
113  const VectorDouble& TrainingTimes () const {return trainingTimes;}
114  double TrainingTimeMean () const {return trainingTimeMean;}
115  double TrainingTimeStdDev () const {return trainingTimeStdDev;}
116 
117  private:
118  void CheckFileDescCopasetic (RunLog& log);
119 
120  void CleanUpMemory ();
121 
122 
123  bool cancelFlag;
124  TrainingConfiguration2Ptr config;
125  FileDescPtr fileDesc;
126  ConfusionMatrix2Ptr meanConfusionMatrix;
127  kkuint32 numOfFolds;
128  kkuint32 numOfOrderings;
129  OrderingsPtr orderings;
130  bool weOwnOrderings;
131 
132  /* Validation Results */
133  VectorFloat accuracies;
134  float accuracyMean;
135  float accuracyStdDev;
136 
137  VectorFloat supportPoints;
138  float supportPointsMean;
139  float supportPointsStdDev;
140 
141  VectorDouble trainingTimes;
142  double trainingTimeMean;
143  double trainingTimeStdDev;
144 
145  VectorDouble testTimes;
146  double testTimeMean;
147  double testTimeStdDev;
148  };
149 } /* namespace KKMLL */
150 
151 
152 #endif
Provides a detailed description of the attributes of a dataset.
Definition: FileDesc.h:72
Used to maintain multiple orderings of a single list of FeatureVector objects.
Definition: Orderings.h:58
__int32 kkint32
Definition: KKBaseTypes.h:88
const ConfusionMatrix2Ptr ConfussionMatrix() const
Represents a "Class" in the Machine Learning Sense.
Definition: MLClass.h:52
double TrainingTimeStdDev() const
A class that is meant to manage a n-Fold Cross Validation.
unsigned __int32 kkuint32
Definition: KKBaseTypes.h:89
kkint32 NumOfOrderings() const
Container class for FeatureVector derived objects.
CrossValidationMxN(TrainingConfiguration2Ptr _comfig, OrderingsPtr _data, bool &_cancelFlag, RunLog &_log)
std::vector< float > VectorFloat
Definition: KKBaseTypes.h:149
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.
Definition: RunLog.h:49
void EncodeProblem(const struct svm_paramater &param, struct svm_problem &prob_in, struct svm_problem &prob_out)
const VectorFloat & SupportPoints() const
Orderings * OrderingsPtr
Maintains a list of MLClass instances.
Definition: MLClass.h:233
const VectorDouble & TestTimes() const
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"
const VectorFloat & Accuracies() const
std::vector< double > VectorDouble
Vector of doubles.
Definition: KKBaseTypes.h:148
const VectorDouble & TrainingTimes() const