初试多项贝叶斯模型(Multinomial Naive Bayes)
之前在一次跟“某Fish”客户进行交谈时,我在的需求下学习了多项贝叶斯(Multinomial Naive Bayes)这个模型。
在了解多项贝叶斯模型之前,我们首先来了解一下朴素贝叶斯(Naive Bayes)模型。
贝叶斯定理所描述的,即为一个抽象事件A在抽象事件B发生的前提下,有多大概率会发生抽象事件A,其概率记为:
其中`P(B)`记为抽象事件B本身发生的概率,因此贝叶斯定理正好计算的是`抽象事件AB同时发生`概率与抽象事件B单独发生的概率之比,这也能证明其抽象事件发生的先后顺序。
文字太过生涩难懂?我这里有一张图可以供大家参考:
可以通过上述流程我们看到:事件A为确定发生的事件,在A事件发生后,其有可能诱导了事件B的发生,也可能诱导失败了。
抛开诱导失败的情况,我们只谈及诱导成功的情况。虽然我们这里说事件A成功诱导了事件B,但是作为一个独立的实体,事件B本身发生的概率也是一个不确定值,因此这里需要贝叶斯模型进行自动推理,去计算前置的因素是否有可能诱导了后一事件的发生。
我们来看例子,这里我有一个数据框,我们来展示一下的现有列
ModelData.columnsIndex(['全局水平', '大气温度 [℃]', '风冷温度 [℃]', '露点温度 [℃]', '相对湿度 [%]', '平均十米内风速 [m/s]','站点压力 [mBar]', '降水量 [mm]', '定点角度 [°]', '方位角度 [°]', '气团大小', '气团变化'],dtype='object')
在这份模型数据。我们需要对气团变化进行研究,其中我使用cuDF内置的.to_pandas()函数将GPU数据框转换为Pandas数据框,并使用.apply()+lambda隐函数对气团大小的变化进行类分类,
这里因为使用了DecisionTree决策树来训练第二个模型,因此数据被命名为了df_train_Tree,最终模型仍然为多项贝叶斯模型。
# 使用.apply()函数来实现来为气团变化进行标签化处理
df_train_Tree['气团变化'] = df_train_Tree['气团大小'].to_pandas().apply(lambda x:0 if x == 0 else 1 if x < 0 else 2 if x > 0 else None)
对数据进行处理,并使用cuML继承自sklearn的train_test_split()函数对数据进行分割
# 进行绝对值翻转处理,以防止存在负值无法训练模型
ModelData = df_train_Tree.iloc[:,2:].to_pandas().apply(lambda x: x.abs())
ModelData = cf.DataFrame(ModelData)
# 构建训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(ModelData,ModelData['气团变化'], test_size=0.2, random_state=42)
通过sklearn.metrics下的plot_roc_curve()函数绘制的ROC曲线和roc_auc_score()函数我们发现,此时的决策树模型处于了过拟合的情况,在树中我没有指定明确的二值化数据(即树判断需要的最基本的真和假),因此使得树在判断时全部当成了真的条件,所以树已经严重过拟合了。
通过之前的一些列的线性校验,我们也得知了:前置的一切属性均为`可能`诱导气团大小的`诱因`
因此在完全不确定的情况下,我们将使用全部属性进行模型的初步测试。
因此我们最终需要使用多项贝叶斯模型来进行模型构建,以下是多项贝叶斯在GPU环境上的实现
# 因为属性众多,因此我们需要引入多项分布朴素贝叶斯(Multinomial NB)
from sklearn.naive_bayes import MultinomialNB
clf = MultinomialNB()
# 将训练集进行训练
clf.fit(X_train.to_pandas(), y_train.to_numpy())
MultinomialNB()
# 绘制ROC曲线以验证预测结果
plot_roc_curve(clf, X_test.to_pandas(), y_test.to_numpy())
plt.title('ROC Curve')
plt.plot([0, 1], [0, 1], '--',color='orange')
plt.text(0.5, 0.5, 'ROC = %.2f' % roc_auc_score(y_test.to_pandas(),cp.asnumpy(y_pred)), ha='center', va='center', fontsize=14)
可以看到,在多项贝叶斯模型下,我们的成绩表现已经非常不错了,roc_auc_score分数表现为:0.92,这也得以证明我们之前训练过的模型它是一个显著过拟合的模型。
总结:
在皮尔森系数过低,但又存在微弱线性相关的分类问题,我们可以尝试使用推测的手段:即贝叶斯类模型,在我们能够肯定前置因素可能会诱导后一事件的这一前提下,我们就可以进行贝叶斯魔性的尝试了
初试多项贝叶斯模型(Multinomial Naive Bayes)相关推荐
- 朴素贝叶斯模型(naive bayes)
朴素贝叶斯模型(naive bayes) 注:本博客为周志华老师<机器学习>的读书笔记,但同时也参考了李航老师的<统计学习>方法,以及其他资料(见参考文献),虽有自己的理解,但 ...
- 机器学习之朴素贝叶斯方法(Naive Bayes)原理和实现
目录 一.贝叶斯理论 二.实战朴素贝叶斯 实战朴素贝叶斯1 实战朴素贝叶斯3 三.scikit-learn中朴素贝叶斯的分类算法的适用 四.贝叶斯算法的优缺点 一.贝叶斯理论 贝叶斯模型 现在我们来看 ...
- 朴素贝叶斯模型(NAIVE BAYESIAN MODEL)
朴素贝叶斯方法是在贝叶斯算法的基础上进行了相应的简化,即假定给定目标值时属性之间相互条件独立.也就是说没有哪个属性变量对于决策结果来说占有着较大的比重,也没有哪个属性变量对于决策结果占有着较小的比重. ...
- 朴素贝叶斯法(Naive Bayes,NB)(结合例子推公式,通俗易懂)
整合一下学习NB的思路与代码,仅代表个人思想. 目录 算法思想 公式推导 1.问题陈述 2.先验概率分布 3.条件概率分布 4.输入为x的概率 5.用贝叶斯定理求后验概率 7.得到答案 8.简化计算 ...
- 朴素贝叶斯法(Naive Bayes,NB)
文章目录 1. 朴素贝叶斯法的学习与分类 1.1 基本方法 2. 参数估计 2.1 极大似然估计 2.2 学习与分类算法 2.2.1 例题 2.2.2 例题代码 2.3 贝叶斯估计(平滑) 2.3.1 ...
- 机器学习实战(三)朴素贝叶斯NB(Naive Bayes)
目录 0. 前言 1. 条件概率 2. 朴素贝叶斯(Naive Bayes) 3. 朴素贝叶斯应用于文本分类 4. 实战案例 4.1. 垃圾邮件分类案例 学习完机器学习实战的朴素贝叶斯,简单的做个笔记 ...
- 朴素贝叶斯方法(Naive Bayes)原理和实现
模型概述 朴素贝叶斯方法,是指 朴素:特征条件独立 贝叶斯:基于贝叶斯定理 根据贝叶斯定理,对一个分类问题,给定样本特征x,样本属于类别y的概率是 p(y|x)=p(x|y)p(y)p(x)..... ...
- java naive方法_朴素贝叶斯方法(Naive Bayes Method)
朴素贝叶斯是一种很简单的分类方法,之所以称之为朴素,是因为它有着非常强的前提条件-其所有特征都是相互独立的,是一种典型的生成学习算法.所谓生成学习算法,是指由训练数据学习联合概率分布P(X,Y),然后 ...
- 机器学习笔记:朴素贝叶斯方法(Naive Bayes)原理和实现
本文主要描述了朴素贝叶斯分类方法,包括模型导出和学习描述.实例部分总结了<machine learning in action>一书中展示的一个该方法用于句子感情色彩分类的程序.1 方法概 ...
最新文章
- qgridlayout 动态刷新
- Sphinx 的介绍和原理探索——不存储原始数据,原始数据来源于SQL,而生成索引放在内存或者磁盘中...
- #舍得Share#Flash Media Server4.5迅雷高速下载地址by lwxshow
- 太阳光是平行光吗_阳光照耀,万物生长——神奇的太阳光,到底是什么?
- CodeForces - 1480C Searching Local Minimum(交互+二分)
- 组合数(Lucas定理) + 快速幂 --- HDU 5226 Tom and matrix
- ExtJS入门(08)窗口,按钮,输入框,
- PL/SQL Developer使用技巧总结
- nssl1460-逛机房【bfs】
- 字符设备驱动基础篇1——简单的驱动源码分析
- pytorch报错RuntimeError: error in LoadLibraryA
- linux将字符串转小写_小猿圈总结Linux常见命令(一)
- layui自定义ajax左侧三级菜单
- 查找系列合集-二分查找
- Java 开发人员必备的开发工具,这些没用进BAT想都别想
- 永磁同步电机最大转矩电流比(PMSM-MTPA)Simulink仿真教程
- 苹果手机安装火狐xpi_为Firefox扩展安装添加XPI MIME类型
- python写入文件到docx_从python中的txt文件写入docx文件
- pygame实现找方块(色彩敏感度测试)游戏
- 可复制的领导力(来自樊登读书会)
热门文章
- 通信系统中dB、dBm、dBFS、dBi的含义
- ART-PI平台移植Touchgfx 驱动gt9147 触摸屏幕点亮LED
- 点对点协议PPP(Point-to-Point Protocol)
- 基于雷达-非接触式传感器的高次谐波峰值选择方法的准确心率和呼吸率检测
- rvo动态避障算法源码分析
- flask+Vue基于web的旅游信息管理系统python django
- 小波分析加密 matlab,基于小波变换的数字图像加密算法
- 提倡DNS过滤,减少URL过滤
- sso单点登录的原理详解
- 书讯--Microsoft Windows Communication Foundation Step by Step