网站怎么吸引人合肥科技职业学院网站建设与管理
news/
2025/9/23 14:16:34/
文章来源:
网站怎么吸引人,合肥科技职业学院网站建设与管理,中企动力网站建设,佛山智能模板建站系列文章目录及链接
目录
前言
一、朴素贝叶斯通俗理解及定义
二、原理理解及公式
1、概率基础
2、贝叶斯公式
3、拉普拉斯平滑系数
三、**算法实现
四、接口实现
1、新闻数据集介绍
2、API
3、流程
3.1、获取数据
3.2、数据预处理
3.3、特征工程
3.4、朴素贝叶…系列文章目录及链接
目录
前言
一、朴素贝叶斯通俗理解及定义
二、原理理解及公式
1、概率基础
2、贝叶斯公式
3、拉普拉斯平滑系数
三、**算法实现
四、接口实现
1、新闻数据集介绍
2、API
3、流程
3.1、获取数据
3.2、数据预处理
3.3、特征工程
3.4、朴素贝叶斯模型训练
3.5、模型评估
3.6、结果预测
4、优缺点 前言
tips标题前有“***”的内容为补充内容是给好奇心重的宝宝看的可自行跳过。文章内容被“文章内容”删除线标记的也可以自行跳过。“”一般需要特别注意或者容易出错的地方。
本系列文章是作者边学习边总结的内容有不对的地方还请多多指正同时本系列文章会不断完善每篇文章不定时会有修改。 一、朴素贝叶斯通俗理解及定义
1、什么叫朴素贝叶斯What
朴素贝叶斯是一种分类算法经常被用于文本分类它的输出结果是某个样本属于某个类别的概率。 朴素之所以朴素就在于假定了特征与特征相互独立。这样有些概率才有可计算性
贝叶斯数学中的贝叶斯公式。
2、朴素贝叶斯的目的Why
通过贝叶斯公式计算样本属于某个类别的概率。从而确定其分类。
3、怎么做How
通过求得先验概率得到所求概率。
二、原理理解及公式
1、概率基础
正向概率假设袋子里面有N个白球M个黑球你伸手进去摸出黑球的概率是多大
逆向概率事先不知道袋子里面黑白球的比例闭着眼睛摸出一个或者好几个球观察取出来的球的颜色后我们可以对袋子里面的黑白球的比例作出什么样的预测
---
边缘概率先验概率某个事件发生的概率。边缘分布命名原因是因为它出现在概率分布表格的边缘在联合概率中把最终结果中那些不需要的事件通过合并成它们的全概率而消去它们这称为边缘化marginalization。
联合概率含多个条件且所有条件同时成立的概率。
条件概率后验概率事件A在另一个事件B已经发生条件下的发生概率。
相互独立两事件联合概率等于两事件边缘概率之积则他们相互独立。
2、贝叶斯公式 通过案例 “ 判断女神对你的喜欢情况 ”理解 问题
被女神喜欢的概率 P(喜欢)4/7
职业是程序员并且体型匀称的概率 P(程序员匀称)1/7
在女神喜欢的条件下职业是程序员的概率 P(程序员|喜欢)2/41/2
在女神喜欢的条件下职业是程序员、体重超重的概率 P(程序员超重|喜欢)1/4小明被女神喜欢的概率 P(喜欢|产品超重)
这里就需要用到贝叶斯公式
P(喜欢|产品, 超重) P(产品超重|喜欢)P(喜欢) / P(产品超重) 计算可以发现 P(产品超重|喜欢) 和 P(产品超重) 的结果均为0导致无法计算结果。这是因为我们的样本量太少了不具有代表性。 本来现实生活中肯定是存在职业是产品经理并且体重超重的人的P(产品超重)不可能为0 而且事件职业是产品经理和事件体重超重通常被认为是相互独立的事件但是根据我们有限的7个样本计算 P(产品超重) P(产品)P(超重) 不成立。 而朴素贝叶斯可以帮助我们解决这个问题 简单理解就是假定了特征与特征之间相互独立的贝叶斯公式。 所以小明被女神喜欢的概率可以这样算
P(产品, 超重) P(产品) * P(超重) 2/7 * 3/7 6/49
p(产品, 超重|喜欢) P(产品|喜欢) * P(超重|喜欢) 1/2 * 1/4 1/8
P(喜欢|产品, 超重) P(产品, 超重|喜欢)P(喜欢)/P(产品, 超重) 1/8 * 4/7 / 6/49 7/123、拉普拉斯平滑系数
拉普拉斯平滑是为了解决零概率的问题。假定训练样本很大时每个分量x的计数加1造成的估计概率变化可以忽略不计但可以方便有效的避免零概率问题。
贝叶斯公式应用在文章分类中可以这样看 案例理解 需求通过前四个训练样本文章判断第五篇文章是否属于China类 应用贝叶斯公式计算测试集简化后应该是如下结果 当是China类的概率为3/4和不是china类的概率1/4。
当是China类和不是china类的概率是不变的分别是6/111/111/11。 所以我们需要计算的就是。且需要分别计算是China类和不是china类的概率。 # 计算是China类的概率:
P(Chinese|C) 5/8 # 是china类共8词5个Chinese
P(Tokyo|C) 0/8
P(Japan|C) 0/8# 计算不是China类的概率:
P(Chinese|C) 1/3
P(Tokyo|C) 1/3
P(Japan|C) 1/3 从上面我们可以得到 都是0这是不合理的。如果词频列表里面有很多次数都为0很可能计算结果都为0。所以需要用到拉普拉斯平滑系数。 利用拉普拉斯平滑系数 解决后
# m6训练集中特征词的个数重复不计是China类的概率:P(Chinese|C) 5/8 -- 6/14P(Tokyo|C) 0/8 -- 1/14P(Japan|C) 0/8 -- 1/14不是China类的概率: P(Chinese|C) 1/3 -- 2/9P(Tokyo|C) 1/3 -- 2/9P(Japan|C) 1/3 -- 2/9代入公式得到
[P(Chinese|C)^3 * P(Tokyo|C) * P(Japan|C) * P(C)] / [P(Chinese)^3 * P(Tokyo) * P(Japan)]# 是china类
[(6/14)^3 * (1/14) * (1/14) * (3/4)] / [(6/11)^3 * (1/11) * (1/11)]
(3*11^5)/(4*14^5)# 不是china类
[(2/9)^3 * (2/9) * (2/9) * (3/4)] / [(6/11)^3 * (1/11) * (1/11)]
(22^5)/(4*6^3*3^9)
三、**算法实现 四、接口实现
1、新闻数据集介绍
sklearn20类新闻分类20个新闻组数据集包含20个主题的18000个新闻组帖子。
from sklearn.datasets import fetch_20newsgroups# 获取数据
news fetch_20newsgroups(subsetall,data_homedata)print(新闻数据集的键,news.keys())print(len(news.data))
print(len(news.target))
print(len(news.target_names))print(news.target_names) 2、API
sklearn.naive_bayes.MultinormalNB(alpha1.0)导入
from sklearn.naive_bayes import MultinormalNB语法
mltMultinormalNB(alpha1.0)alpha拉普拉斯平滑系数mlt.fit( x_trainy_train )接收训练集特征和训练集目标
mlt.predict( x_test )接收测试集特征返回数据的类标签
mlt.score(x_test, y_test)接收测试集特征 和 测试集目标返回准确率。
mlt.get_params()获取接收的参数alpha、fit_prior这种参数
mlt.set_params()设置参数
mlt.partial_fit()增量测试用于数据量太大不能一次装入内存的情况3、流程
from sklearn.datasets import fetch_20newsgroups
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizerfrom sklearn.naive_bayes import MultinomialNB
3.1、获取数据
# 获取数据
news fetch_20newsgroups(subsetall,data_homedata)
3.2、数据预处理
# 划分数据集
x_train, x_test, y_train, y_test train_test_split(news.data, news.target, test_size0.25, random_state1473) 3.3、特征工程
# 对数据集进行特征抽取
tf TfidfVectorizer()# 以训练集当中的词的列表进行每篇文章重要性统计[a,b,c,d]
x_train tf.fit_transform(x_train)x_test tf.transform(x_test) 3.4、朴素贝叶斯模型训练
# 进行朴素贝叶斯算法的预测,alpha是拉普拉斯平滑系数
mlt MultinomialNB(alpha1.0)print(x_train.toarray())
# 训练
mlt.fit(x_train, y_train) 3.5、模型评估
y_predict mlt.predict(x_test)print(预测的文章类别为, y_predict)# 得出准确率
print(准确率为, mlt.score(x_test, y_test)) 用分类报告【详情请看机器学习四 -- 模型评估2-分类报告】 from sklearn.metrics import classification_report
print(classification_report(y_test, y_predict, target_namesnews.target_names)) 精确率precision、召回率recall、F1 值F1-score和样本数目support
用ROC曲线和AUC
from sklearn.metrics import roc_curvefpr,tpr,thresholdsroc_curve(y_test,y_predict)plt.plot(fpr, tpr)
plt.axis(square)
plt.xlabel(假正例率/False positive rate)
plt.ylabel(正正例率/True positive rate)
plt.title(ROC curve)
plt.show() from sklearn.metrics import roc_auc_score# 把0-19总计20个分类变为0和1
y_test np.where(y_test 0, 1, 0)
y_predict np.where(y_predict 0, 1, 0)
# roc_auc_score的y_test只能是二分类,针对多分类如何计算AUC
print(AUC指标, roc_auc_score(y_test, y_predict)) 3.6、结果预测
经过模型评估后通过的模型可以代入真实值进行预测。
4、优缺点
4.1、优点
朴素贝叶斯有稳定的分类效率对缺失数据不太敏感算法也比较简单常用于文本分类分类准确度高速度快
4.2、缺点
由于使用了样本属性独立性的假设所以如果特征属性有关联时其效果不好需要计算先验概率而先验概率很多时候取决于假设假设的模型可以有很多种因此在某些时候会由于假设的先验模型的原因导致预测效果不佳
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/912806.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!