python 贝叶斯分类器sklearn_使用sklearn自带的贝叶斯分类器进行文本分类和参数调优...

使用

sklearn

自带的贝叶斯分类器进行文本分类和参数调优

数据挖掘入门与实战

公众号:

datadw

Part 1:

本篇内容简介

在前一篇文章完整手写一个朴素贝叶斯分类器,完成文本分

类,我们使用首先假设在文档中出现的单词彼此独立,利用

贝叶斯定理,完成了一个简单的文本分类器的编写,在真实

数据的测试上,显示了良好的效果。

其实要是了解

sklearn

的人都应该知道,

这个

python

的机器

学习库,实现了我们常用的大部分机器学习算法,免除了我

们重复造轮子的痛苦。我们使用和上一篇博客同样的数据,

使用

sklearn

自带的贝叶斯分类器完成文本分类,同时和上

一篇文章手写的分类器,

进行分类精度、

速度、

灵活性对比。

Part 2:

朴素贝叶斯的在文本分类中常用模型:

多项式、

伯努

朴素贝叶斯分类器是一种有监督学习,常见有两种模型,多

项式模型

(multinomial model)

即为词频型和伯努利模

(Bernoulli model)

即文档型。二者的计算粒度不一样,多项

式模型以单词为粒度,伯努利模型以文件为粒度,因此二者

的先验概率和类条件概率的计算方法都不同。计算后验概率

时,对于一个文档

d

,多项式模型中,只有在

d

中出现过的

单词,才会参与后验概率计算,伯努利模型中,没有在

d

离散贝叶斯分类(Discrete Naive Bayes Classifier)是一种基于贝叶斯定理的分类,假设所有特征都是独立的,并且每个特征都对分类结果有相同的影响。它适用于特征是离散值的情况,如文本分类、垃圾邮件识别等。 在sklearn中,可以通过`sklearn.naive_bayes.CategoricalNB`来实现离散贝叶斯分类。具体步骤如下: 1. 准备数据集,将特征转换为离散值,如文本可以使用词袋模型或TF-IDF模型来将文本转换为向量。 2. 将数据集分成训练集和测试集。 3. 创建分类对象,可以使用默认参数或者设置alpha参数来控制平滑程度。 4. 使用训练集来拟合分类。 5. 使用测试集来评估分类的性能。 示例代码如下: ```python from sklearn.naive_bayes import CategoricalNB from sklearn.datasets import fetch_20newsgroups from sklearn.feature_extraction.text import CountVectorizer # 准备数据集 newsgroups_train = fetch_20newsgroups(subset='train') vectorizer = CountVectorizer() X_train = vectorizer.fit_transform(newsgroups_train.data) y_train = newsgroups_train.target newsgroups_test = fetch_20newsgroups(subset='test') X_test = vectorizer.transform(newsgroups_test.data) y_test = newsgroups_test.target # 创建分类对象 clf = CategoricalNB() # 使用训练集拟合分类 clf.fit(X_train, y_train) # 使用测试集评估分类性能 score = clf.score(X_test, y_test) print("Accuracy:", score) ``` 注意,离散贝叶斯分类假设所有特征都是独立的,但实际上很多情况下特征之间是存在相关性的,因此在这种情况下使用离散贝叶斯分类可能会导致性能下降。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值