机器学习-------算法(五)

分类算法----朴素贝叶斯算法

贝叶斯公式:

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

计算方法𝑃𝐹1𝐶=𝑁𝑖/𝑁方法:P(F1│C)=Ni/N  (训练文档中去计算)

       𝑁𝑖𝐹1Ni为F1词C类别所有文档中出现的次数

        N为所属类别C下的文档所有词出现的次数和

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

例如:求一篇文章是属于科技还是属于娱乐,分别求他的朴素贝叶斯值进行判别属于哪一类别:

特征\统计

科技

娱乐

汇总(求和)

影院

8

56

64

支付宝

20

15

35

云计算

63

0

63

汇总(求和)

100

121

221

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

 

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

上面显示娱乐概率为0,这显然不合理,为解决这个问题,我们需要新的方法-----拉普拉斯平滑

拉普拉斯平滑:

           P(F1│C)=(Ni+α)/(N+αm)                        

           𝛼指定系数α指定系数一般为1m为训练文档中统计出的特征词个数

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.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB


def naviebayes():
    """朴素贝叶斯"""
    # 获取数据
    news = fetch_20newsgroups(subset="all")
    # 进行数据分割  特征值 = 文章,目标值 = 文章匪类
    train_x, test_x, train_y, test_y = train_test_split(news.data, news.target, test_size=0.25)
    # 特征抽取
    tf = TfidfVectorizer()
    # 以训练集中的词的列表进行每篇文章的重要性统计
    train_x = tf.fit_transform(train_x)
    # 因为都是以训练集进行统计,所以测试集只需要统计训练集中的关键词就可以啦
    test_x = tf.transform(test_x)
    # 进行朴素贝叶斯计算
    # 实例化贝叶斯
    mlt = MultinomialNB(alpha=1.0)
    # 对训练集进行训练
    mlt.fit(train_x, train_y)
    # 测试集进行结果判断,得出预测类别
    y_predict = mlt.predict(test_x)
    print("预测类别:", y_predict)
    # 准确率,模型的准确率
    print(mlt.score(test_x, test_y))


if __name__ == '__main__':
    naviebayes()

 

优点:
朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率。

 

对缺失数据不太敏感,算法也比较简单,常用于文本分类。
分类准确度高,速度快
缺点:
需要知 道先验概率P(F1,F2,…|C),因此 在某些时候会由于假设的先验

模型的原因导致预测效果不佳。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值