机器学习学习笔记(六)之朴素贝叶斯算法

一、贝叶斯公式(不赘述)

在这里插入图片描述

在这里插入图片描述

二、何为朴素?

  • 假设:特征与特征之间相互独立

三、应用场景

  • 文本分类,单词作为特征

在这里插入图片描述

四、拉普拉斯平滑系数

在这里插入图片描述
五、API

  • sklearn.naive_bayes.MultinomialNB(alpha = 1.0)
    • 朴素贝叶斯分类
    • alpha:拉普拉斯平滑系数

六、案例

  1. 获取数据
  2. 划分数据集
  3. 特征工程—文本特征抽取
  4. 朴素贝叶斯预估器流程
  5. 模型评估
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 nb_news():
    '''
    用朴素贝叶斯算法对新闻进行分类
    :return:
    '''
    # 1、获取数据
    news = fetch_20newsgroups(subset='all')

    # 2、划分数据集
    x_train, x_test, y_train, y_test = train_test_split(news.data,news.target)
    # 训练集的特征值x_train 测试集的特征值 x_test 训练集的目标值y_train 测试集的目标值y_test

    # 3、特征工程:文本特征抽取-tfidf
    transfer = TfidfVectorizer()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test) #对数据预处理时,测试集要以训练集的统计特征进行标准化

    # 4、朴素贝叶斯算法预估器流程
    estimator = MultinomialNB()
    estimator.fit(x_train,y_train)

    # 5、模型评估
    # 方法1:直接比对真实值和预测值
    y_predict = estimator.predict(x_test)
    print('y_predict:\n',y_predict)
    print('直接比对真实值和预测值:\n',y_test==y_predict)

    #方法2:计算准确率
    score = estimator.score(x_test,y_test)
    print('准确率为:\n',score)
    return None

if __name__=='__main__':
    nb_news()


运行结果:
y_predict:
 [7 14 17 ..., 8 7 0]
直接比对真实值和预测值:
 [True True True ..., True True False]
准确率为:
0.841256366723

七、朴素贝叶斯算法总结

  • 优点:
    • 朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率。
    • 对缺失数据不太敏感,算法也比较简单,常用于文本分类。
    • 分类准确度高,速度快。
  • 缺点:
    • 由于使用了样本属性独立性的假设,所以如果特征属性有关联时其效果不好。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值