matlab朴素贝叶斯手写数字识别_实战:用朴素贝叶斯实现文本识别

本文介绍了如何运用朴素贝叶斯分类器,特别是多项式朴素贝叶斯,进行中文文档的分类。通过加载数据集,进行文档分词,计算单词权重,然后构建并使用sklearn库中的多项式朴素贝叶斯分类器,最终得到0.92的分类准确率。
摘要由CSDN通过智能技术生成

238b4aabed1efb8fd8e0207c5f789b93.png

在机器学习中,朴素贝叶斯分类器是一系列以假设特征之间强(朴素)独立下运用贝叶斯定理为基础的简单概率分类器。

贝叶斯原理公式:

8ed319e5e274cf4ef1d84e05f21d47cc.png

朴素贝叶斯公式:

f971d026494f56c5ff143bd4f5b7aa1e.png

具体的推导过程可以去看李航老师的统计学习方法,里面的推导很详细

在sklearn中,贝叶斯分类方法有如下三种:

1.高斯朴素贝叶斯(GaussianNB)

2.多项式朴素贝叶斯(MultinomialNB)

3.伯努利朴素贝叶斯(BernoulliNB)

本文使用的是多项式的朴素贝叶斯

下面是我画的一个帮助理解朴素贝叶斯的思维导图

1f0352ce1e2707a84ca7bc4e80bd4076.png

下面是利用python实现朴素贝叶斯文本识别的过程:

数据集是中文文档,文档共有 4 种类型:女性、体育、文学、校园;

9ccfde32ddbade1db3b8947fdc68c3f7.png

6098e3f9b9abddc0081af2e891bb5058.png

数据源:

github​github.com

d5af9070ef76af9b74d0af11cdd0f8c6.png

下面是文档分类流程图

a5444d2d4efc7972c29829e795aa7559.png

导入各种需要用到的包

19e5a8955e482c03d6e3339cbfdd1d93.png

文档分词

c6329579e4b3c00fad6691ae237f01b1.png

加载所有文档

d1c71ce058b8af71d91a209153026cb5.png

bbadeaaadecf941c345570caa57683bc.png

计算单词权重

b33d97c9fe95c658f03e468dece8461e.png

构建多项式贝叶斯分类器和做预测

067d36002072a3e0a8f4914f16fddd5b.png

计算准确率

4883eeb487b9ff3c1a2e651d1860437b.png

准确率为0.92,效果还可以。

参考文献:

李航-统计学习方法

陈旸-数据分析实战45讲

维基百科

实现手写数字识别的方法有很多种,其中朴素贝叶斯算法是一种常用的方法之一。下面是基于MNIST数据集实现手写数字识别matlab代码,使用朴素贝叶斯算法: ```matlab % 读取MNIST数据集 [train_images, train_labels] = mnist_parse('train-images.idx3-ubyte', 'train-labels.idx1-ubyte'); [test_images, test_labels] = mnist_parse('t10k-images.idx3-ubyte', 't10k-labels.idx1-ubyte'); % 转换为灰度图像 train_images_gray = reshape(train_images, size(train_images,1)*size(train_images,2), size(train_images,3))'; test_images_gray = reshape(test_images, size(test_images,1)*size(test_images,2), size(test_images,3))'; % 将像素值归一化到[0,1] train_images_norm = double(train_images_gray) / 255; test_images_norm = double(test_images_gray) / 255; % 训练朴素贝叶斯分类器 nb_classifier = fitcnb(train_images_norm, train_labels); % 预测测试集 test_labels_pred = predict(nb_classifier, test_images_norm); % 计算准确率 accuracy = sum(test_labels_pred == test_labels) / length(test_labels); fprintf('Accuracy: %.2f%%\n', accuracy * 100); ``` 在上述代码中,我们首先使用`mnist_parse`函数读取MNIST数据集,并将图像转换为灰度图像,然后将像素值归一化到[0,1]。接着使用`fitcnb`函数训练朴素贝叶斯分类器,并使用`predict`函数预测测试集的标签。最后计算准确率并输出结果。 需要注意的是,MNIST数据集的格式有点特殊,需要使用`mnist_parse`函数进行解析。此外,朴素贝叶斯算法的优点是易于实现和快速训练,但是在一些复杂的分类问题上可能表现不佳。如果需要更高的准确率,可以尝试其他分类算法,比如支持向量机(SVM)和深度学习算法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值