私は 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」カテゴリにある場合でも、predict() の結果として「1」を取得できることです。もう 1 つの問題は、トレーニング セットのいくつかの値を変更してから分類子を保存しようとしたことです。その結果、トレーニング セットのサイズを変更しない場合 (値がまったく異なる場合でも)、分類器は常に同じであることがわかります。
そんなことがあるものか?トレーニング、保存、予測機能の仕組みを教えてくれる人はいますか? ありがとうございました