5. 机器学习——分类算法-朴素贝叶斯算法(笔记)

1. 常见的例子

1.1 垃圾邮件分类

在这里插入图片描述

1.2 文章分类

在这里插入图片描述

2. 概率基础

简单的一个例子,职业和体型与女神是否喜欢的关系:
在这里插入图片描述在这里插入图片描述

2.1 联合概率和条件概率

在这里插入图片描述在这里插入图片描述

可以看到第一问题很简单4/7,第二个问题是求联合概率 p(程序员,匀称) = p(程序员)p(匀称) = 3/7 * 4/7=12/49。第三个问题是条件概率,p(程序员|喜欢) = 2/4 ;第4个问题也是条件概率,P(产品,超重|喜欢) = P(产品|喜欢)P(超重|喜欢) = 1/2*(1/4) = 1/8

3. 朴素贝叶斯-贝叶斯公式

某一个文档是哪一类别的概率是多少。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
朴素贝叶斯,之所以叫“朴素”,指的就是特征独立,这也是条件概率的前提。

例子:
在这里插入图片描述
根据朴素贝叶斯公式,这篇文档是科技类别的概率是p(科技|影院,支付宝,云计算) = p( 影院,支付宝,云计算|科技) ∗ p( 科技) (因为求每一种类别的概率都要除以p(特征值的概率)所以这里就省略掉)

p( 影院,支付宝,云计算|科技) 是条件概率,根据条件概率公式,等于,p( 影院|科技) *p( 支付宝|科技) *p(云计算|科技) 也即,8/100 x 20/100 x 63/100 ,而 p( 科技) 是等于 30/90

同理,娱乐类别也是这样。

从图片中可以看出,娱乐类别是0,这显然是不合理的。所以引出拉普拉斯平滑。

3.1 拉普拉斯平滑

在这里插入图片描述
所以,添加完拉普拉斯平滑系数

在这里插入图片描述

4.朴素贝叶斯的API

4.1 sklearn朴素贝叶斯实现API

 sklearn.naive_bayes.MultinomialNB

在这里插入图片描述

5. 朴素贝叶斯算法案例

• sklearn20类新闻分类
• 20个新闻组数据集包含20个主题的18000个新闻组帖子

朴素贝叶斯案例流程

1、加载20类新闻数据,并进行分割
2、生成文章特征词
3、朴素贝叶斯estimator流程进行预估

代码

from sklearn.naive_bayes import MultinomialNB
from sklearn.datasets import fetch_20newsgroups
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer

#获取数据
news = fetch_20newsgroups(subset='all')  #可以指定下载位置

#对数据进行分割
x_train, x_test, y_train, y_test = train_test_split(news.data,news.target,test_size=0.25)

#对数据集进行特征抽取
tf = TfidfVectorizer()

#以训练集当中的词的列表进行每篇文章重要性统计['a','b'.'c','d']
x_train = tf.fit_transform(x_train)

print('获取特征的名字',tf.get_feature_names())

x_test = tf.transform(x_test)

#进行朴素贝叶斯算法的预测
mlt =MultinomialNB(alpha=1.0)

mlt.fit(x_train,y_train)

y_predict = mlt.predict(x_test)

print('预测文章的类别', y_predict)

#得出准确率
print('准确率为', mlt.score(x_test,y_test))

结果

预测文章的类别 [12  9  1 ... 14 13 11]
准确率为 0.857597623089983

6. 朴素贝叶斯分类优缺点

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值