@@ -34,7 +34,6 @@ using std::endl;
3434
3535void trainingByGPU (vector<vector<float_point> > &v_v_DocVector, data_info &SDataInfo, SVMParam ¶m);
3636
37-
3837svmModel trainSVM (SVMParam ¶m, string strTrainingFileName, int nNumofFeature) {
3938
4039 vector<vector<float_point> > v_v_DocVector;
@@ -47,20 +46,8 @@ svmModel trainSVM(SVMParam ¶m, string strTrainingFileName, int nNumofFeature
4746 rawDataRead.ReadFromFile (strTrainingFileName, nNumofFeature, v_v_DocVector, v_nLabel);
4847 svmProblem problem (v_v_DocVector, v_nLabel);
4948 svmModel model;
50- param.probability = 1 ;// train with probability
49+ param.probability = 0 ;// train with probability
5150 model.fit (problem, param);
52- vector<int > predictLabels = model.predict (v_v_DocVector, true );
53- int numOfCorrect = 0 ;
54- for (int i = 0 ; i < v_v_DocVector.size (); ++i) {
55- if (predictLabels[i] == v_nLabel[i])
56- numOfCorrect++;
57- // for (int j = 0; j < problem.getNumOfClasses(); ++j) {
58- // printf("%.2f,",prob[i][j]);
59- // }
60- // printf("\n");
61- }
62- printf (" training accuracy = %.2f%%(%d/%d)\n " , numOfCorrect / (float ) v_v_DocVector.size ()*100 , numOfCorrect,
63- (int ) v_v_DocVector.size ());
6451 return model;
6552}
6653
@@ -185,3 +172,30 @@ svm_model trainBinarySVM(svmProblem &problem, const SVMParam ¶m) {
185172 model.nDimension = problem.getNumOfFeatures ();
186173 return model;
187174}
175+
176+ void evaluateSVMClassifier (svmModel &model, string strTrainingFileName, int nNumofFeature)
177+ {
178+ vector<vector<float_point> > v_v_DocVector;
179+ vector<int > v_nLabel;
180+
181+ CDataIOOps rawDataRead;
182+ int nNumofInstance = 0 ; // not used
183+ long long nNumofValue = 0 ; // not used
184+ BaseLibSVMReader::GetDataInfo (strTrainingFileName, nNumofFeature, nNumofInstance, nNumofValue);
185+ rawDataRead.ReadFromFile (strTrainingFileName, nNumofFeature, v_v_DocVector, v_nLabel);
186+
187+ // perform svm classification
188+ vector<int > predictLabels = model.predict (v_v_DocVector, true );
189+ int numOfCorrect = 0 ;
190+ for (int i = 0 ; i < v_v_DocVector.size (); ++i)
191+ {
192+ if (predictLabels[i] == v_nLabel[i])
193+ numOfCorrect++;
194+ // for (int j = 0; j < problem.getNumOfClasses(); ++j) {
195+ // printf("%.2f,",prob[i][j]);
196+ // }
197+ // printf("\n");
198+ }
199+ printf (" training accuracy = %.2f%%(%d/%d)\n " , numOfCorrect / (float ) v_v_DocVector.size ()*100 ,
200+ numOfCorrect, (int ) v_v_DocVector.size ());
201+ }
0 commit comments