gpt4 book ai didi

c++ - Cv 正态贝叶斯分类器

转载 作者:行者123 更新时间:2023-11-28 08:17:35 25 4
gpt4 key购买 nike

我正在使用 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”。另一个问题是我试图改变训练集中的一些值,然后保存分类器。结果我发现,如果我不改变训练集的大小(即使值完全不同),分类器总是相同的

这怎么可能?谁能告诉我训练、保存和预测功能是如何工作的?谢谢

最佳答案

我发现要从 ml 库中获得正确的结果,您需要像下面这样创建和访问分类器:

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

上面的代码片段适用于一些训练数据。

关于c++ - Cv 正态贝叶斯分类器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7174442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com