基于朴素贝叶斯的花生品种识别
来源:互联网 发布:linux stdin 编辑:程序博客网 时间:2024/04/18 11:56
最近一段时间,正在学习机器学习与模式识别,为了验证算法,仍然用了之前做过的项目的一些图片作为数据采集的样本,进行数据采集。前段时间,做了一个花生籽粒的识别程序,是基于SVM+HOG的,这次则是采用朴素贝叶斯来进行识别。采集了20个品种,每个品种50个样本,共1K个数据。
朴素贝叶斯分类器(Naive Bayes Classifier,或 NBC)发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。同时,NBC模型所需估计的参数很少,对缺失数据不太敏感,算法也比较简单。理论上,NBC模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为NBC模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,这给NBC模型的正确分类带来了一定影响。
用于本次实验的部分图像如下所示:
Book* book = xlCreateBook();if (book->load("Data.xls")){Sheet *sheet = book->getSheet(0);int myrow = sheet->lastRow();int mycol = sheet->lastCol();if (sheet){CvMat* importMat = cvCreateMat(myrow, mycol, CV_32FC1); //存储导入数据for (auto i = 0; i < myrow; ++i){for (auto j = 0; j < mycol; j++){double temp = sheet->readNum(i, j);cvSetReal2D(importMat, i, j, temp);}}// end form_DataMat = cvCloneMat(importMat);}// end if}book->release();MessageBox("数据导入完成");CvMat* dataMat = cvCloneMat(m_DataMat);CvMat* lableMat = cvCreateMat(dataMat->rows, 1, CV_32FC1);//构建样本的分类标签cvZero(lableMat);for (int i = 0; i < 20; ++i)//共分了 20 个不同的种类{for (int j = 0; j < 50; ++j)//每个品种共50个籽粒{cvSetReal2D(lableMat, i * 50 + j, 0, i + 1);}}CvNormalBayesClassifier nbc;nbc.train(dataMat, lableMat);nbc.save("bayes.txt");MessageBox("数据训练完成");CvMat* nbcResult = cvCreateMat(dataMat->rows, 1, CV_32FC1);CvMat* nbcRow = NULL;for (int i = 0; i < dataMat->rows; ++i){nbcRow = cvCreateMat(1, dataMat->cols, CV_32FC1);for (int j = 0; j < dataMat->cols; ++j){float temp = cvGetReal2D(dataMat, i, j);cvSetReal2D(nbcRow, 0, j, temp);}unsigned int ret = 0;ret = nbc.predict(nbcRow);cvSetReal2D(nbcResult, i, 0, ret);cvReleaseMat(&nbcRow);nbcRow = NULL;}int nCount = 0;for (int i = 0; i < 20; ++i){for (int j = 0; j < 50; ++j){int ret = cvGetReal2D(nbcResult, i * 50 + j, 0);if (ret == (i + 1)){++nCount;}}}float recognize = 100 * nCount / 20 / 50;CString str;str.Format("朴素贝叶斯 识别率为: %f", recognize);str = str + "%";MessageBox(str);
0 0
- 基于朴素贝叶斯的花生品种识别
- 基于SVM+HOG的花生品种识别
- 基于朴素贝叶斯的扑克牌花色识别
- 基于朴素贝叶斯的垃圾邮件检测
- 基于朴素贝叶斯的文本分类算法
- 基于朴素贝叶斯的垃圾邮件检测
- 基于spark的朴素贝叶斯分类器
- 基于朴素贝叶斯的内容推荐算法
- 基于朴素贝叶斯的内容推荐算法
- 基于概率论的分类方法:朴素贝叶斯
- 基于朴素贝叶斯的文本分类算法
- 基于朴素贝叶斯的文本分类算法
- 基于概率论的分类方法:朴素贝叶斯
- 基于Python的朴素贝叶斯算法实现
- 基于朴素贝叶斯的文本分类器
- 基于概率论的分类方法:朴素贝叶斯
- 基于Hadoop的朴素贝叶斯算法实现
- 基于概率论的分类方法:朴素贝叶斯
- hdu 5164 Matching on Array AC自动机
- 工作总结_2
- playMaker状态机之连击组合技能
- Mongodb:笔记一(安装及基本操作)
- ZOJ 1760 &&POJ1552 Doubles (模拟)
- 基于朴素贝叶斯的花生品种识别
- U3D资源打包与动态加载各种事项与方案
- VLC for iOS 2.3.0
- Oracle 4天实训笔记
- VC++调用UpdateLayeredWindow实现半透明窗体【转】
- 初识三层架构
- qt交叉编译
- NGUI如何进行自适应UI重叠问题解决方案
- 组合数C(n,m)的求法总结,卢卡斯定理