机器学习框架sklearn之朴素贝叶斯算法
创始人
2025-05-30 06:13:21

概念

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

贝叶斯公式:通常,事件 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-idftransfer=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

相关内容

热门资讯

全市唯一!潍坊1532文化产业... 近日,山东省文化和旅游厅公布第四批省级旅游休闲街区名单,全省共17家。潍坊1532旅游休闲街区凭借其...
宁德福安:教育关怀,从农村娃的... 甘棠第二中心小学的“寄午生”享用午餐 12月22日上午11时,宁德福安市甘棠镇第二中心小学的校园厨房...
全网热议!2025年三亚湘菜T... 2025年,三亚湘菜的美食盛宴带来了全新的体验。各大餐饮品牌争相推出创新菜肴,满足食客的需求。这些品...
视频丨《疯狂动物城2》近半票房... 近期,好莱坞动画电影《疯狂动物城2》在中国市场持续热映。据统计,该片近一半的全球票房收入来自中国。美...
街谈巷议丨从旅交会看旅游的“N... 从旅交会看旅游的“N种打开方式” □吴翠霞 12月19日至21日,以“你好!中国”为主题的2025中...