机器学习框架sklearn之朴素贝叶斯算法

概念

朴素:假设特征和特征之间是相互独立的

贝叶斯公式:通常,事件 A 在事件 B 发生的条件下与事件 B 在事件 A 发生的条件下,它们两者的概率并不相同,但是它们两者之间存在一定的相关性,并具有以下公式(称之为“贝叶斯公式”)
在这里插入图片描述

朴素贝叶斯算法:朴素+贝叶斯公式

应用场景:文本分类(单词作为特征)

公式

在这里插入图片描述
在文章分类中,各部分理解如下:

  • P( C ):每个文档类别的概率(某文档类别数/总文档数量)

  • P(F/C):给定类别下特征(被预测文档中出现的词)的概率

    • 计算方法:P(Fi|C)=Ni/N(训练文档中去计算)
      • Ni为该Fi词在C类别所有文档中出现的次数
      • N为所属类别C下的文档所有词出现的次数和
    • P(F1,F2,…)预测文档每个词的概率

拉普拉斯平滑系数

目的:防止计算出的分类概率为0

P(Fi|C)=(Ni+a)/(N+a*m)

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

API

sklearn.naive_bayes.MultinomiaINB(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 nb_demo():
    # 1.获取数据
    news=fetch_20newsgroups(subset="all")
    # 2.划分数据集
    x_train,x_test,y_train,y_test=train_test_split(news.data,news.target)
    # 3.特征工程:文本特征抽取tf-idf
    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.模型评估
    # 方法一
    y_predict = estimator.predict(x_test)
    print("直接比对真实值和预测值:\n", y_test == y_predict)
    # 方法二
    score = estimator.score(x_test, y_test)
    print("准确率为:\n", score)
    # 最佳参数:best_params_
    print("最佳参数:\n", estimator.best_params_)
    # 最佳结果:best_score_
    print("最佳结果:\n", estimator.best_score_)
    # 最佳估计器:best_estimator_
    print("最佳估计器:\n", estimator.best_estimator_)
    # 交叉验证结果:cv_results_
    print("交叉验证结果:\n", estimator.cv_results_)
    return None
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂的小强呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值