机器学习之分类算法Naive Bayes(朴素贝叶斯)

Naive Bayes(朴素贝叶斯)算法

什么是Navi Bayesian?

朴素贝叶斯是基于贝叶斯定理并假设预测变量之间具有独立性的最简单,最强大的分类算法之一。

举例

在这里插入图片描述
1、女神喜欢的概率? 4/7
2、职业是程序员并且体型匀称的概率? (3/7) * (4/7)=12/49
3、在女神喜欢的条件下,职业是程序员的概率? 1/2
4、在女神喜欢的条件下,职业是产品,体重是超重的概率? (1/2)*(1/4)=1/8

对于这几个问题,读者朋友的答案是否正确呢。如果不知道或者错了,不必灰心,请继续往下阅读。

联合概率和条件概率

联合概率:包含多个条件,且所有条件同时成立的概率
记作:𝑃(𝐴,𝐵)
条件概率:就是事件A在另外一个事件B已经发生条件下的发生概率
记作:𝑃(𝐴|𝐵)
特性:P(A1,A2|B) = P(A1|B)P(A2|B)

注意:此条件概率的成立,是由于A1,A2相互独立的结果

由此我们可以看出,朴素贝叶斯的最佳使用场景是特征独立时,多用于文档分类。

朴素贝叶斯-贝叶斯公式

在这里插入图片描述

注:w为给定文档的特征值(频数统计,预测文档提供),c为文档类别

公式可以理解为:
在这里插入图片描述

  • 𝑃(𝐶):每个文档类别的概率(某文档类别词数/总文档词数)
  • 𝑃(𝑊│𝐶):给定类别下特征(被预测文档中出现的词)的概率

计算方法:𝑃(𝐹1│𝐶)=𝑁𝑖/𝑁 (训练文档中去计算)
𝑁𝑖为该𝐹1词在C类别所有文档中出现的次数
N为所属类别C下的文档所有词出现的次数和

  • 𝑃(𝐹1,𝐹2,…) 预测文档中每个词的概率

其中c可以是不同类别。

举例

从诸多文档中统计出重要的词的列表
在这里插入图片描述
现有一篇被预测文档:出现了影院,支付宝,云计算,计算属于科技、娱乐的类别概率?

科技:𝑃(影院,支付宝,云计算 │科技)∗P(科技)=8/100∗20/100∗63/100∗(100/221) =0.00456109

娱乐:𝑃(影院,支付宝,云计算│娱乐)∗P(娱乐)=56/121∗15/121∗0/121∗(121/221)=0

存在一个类别的概率为0,这样合理吗?

解决方法:采用拉普达斯平滑系数

在这里插入图片描述

知识储备:

sklearn朴素贝叶斯实现API

sklearn.naive_bayes.MultinomialNB(alpha = 1.0)

  • alpha:拉普拉斯平滑系数

代码演示

一个简单的新闻分类流程

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

def navibayes():
    '''
    朴素贝叶斯文本分类
    :return: None
    '''
    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()

    #以训练集中的词的列表进行重要性统计
    x_train = tf.fit_transform(x_train)

    print(tf.get_feature_names())

    x_test = tf.transform(x_test)

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

    print(x_train)

    mlt.fit(x_train,y_train)

    y_predict = mlt.predict(x_test)

    print("预测的文章类别为:",y_predict)

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

    return None


if __name__ == "__main__":
    navibayes()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值