2011-08-24 21 views
0

我正在使用CvNormalBayesClassifier。 我與一些隨機數據訓練它,就像在代碼中我張貼CvNormalBayesClassifier

CvMat* train = cvCreateMat(100, 32, CV_32FC1); 
cvZero(train); 
cvmSet(train, 0, 0, (double) 2); 
cvmSet(train, 0, 1, (double) 5); 
cvmSet(train, 1, 17, (double) 12); 
cvmSet(train, 1, 9, (double) 235); 
cvmSet(train, 29, 1, (double) 645); 
cvmSet(train, 34, 12, (double) 65); 
cvmSet(train, 23, 3, (double) 2.64); 
cvmSet(train, 27, 8, (double) 5443); 
cvmSet(train, 3, 7, (double) 125432); 
cvmSet(train, 67, 14, (double) 6533); 
cvmSet(train, 78, 18, (double) 43265); 
cvmSet(train, 92, 12, (double) 65.543); 
CvMat* res=cvCreateMat(1, 100, CV_32FC1); 
cvZero(res); 
cvSet(train, cvScalarAll(CV_VAR_ORDERED)); 
cvSet(res, cvScalarAll(CV_VAR_CATEGORICAL)); 
M1.train(train, res); 
CvMat* prova = cvCreateMat(1, 32, CV_32FC1); 
cvZero(prova); 
cvmSet(prova, 0, 7, (double) 10); 
float result=M1.predict(prova); 

的問題是,即使在訓練中的每一個元素是在「0」的範疇,我能得到「 1「作爲預測結果()。 另一個問題是我試圖改變訓練集中的一些值,然後保存分類器。因爲我得到的是,如果我不改變訓練集的大小(即使具有完全不同的值),分類器總是相同的。

這怎麼可能? 有沒有人可以告訴我火車,保存和預測功能是如何工作的? 謝謝

回答

1

我發現,從你需要像下面創建和訪問分類的毫升圖書館中得到正確的結果:

bayes = new CvNormalBayesClassifier(); 
bayes->train(samplesMat, responses); 

上面的代碼剪斷工作了我一些訓練數據。