之前在一次跟“某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)相关推荐

  1. 朴素贝叶斯模型(naive bayes)

    朴素贝叶斯模型(naive bayes) 注:本博客为周志华老师<机器学习>的读书笔记,但同时也参考了李航老师的<统计学习>方法,以及其他资料(见参考文献),虽有自己的理解,但 ...

  2. 机器学习之朴素贝叶斯方法(Naive Bayes)原理和实现

    目录 一.贝叶斯理论 二.实战朴素贝叶斯 实战朴素贝叶斯1 实战朴素贝叶斯3 三.scikit-learn中朴素贝叶斯的分类算法的适用 四.贝叶斯算法的优缺点 一.贝叶斯理论 贝叶斯模型 现在我们来看 ...

  3. 朴素贝叶斯模型(NAIVE BAYESIAN MODEL)

    朴素贝叶斯方法是在贝叶斯算法的基础上进行了相应的简化,即假定给定目标值时属性之间相互条件独立.也就是说没有哪个属性变量对于决策结果来说占有着较大的比重,也没有哪个属性变量对于决策结果占有着较小的比重. ...

  4. 朴素贝叶斯法(Naive Bayes,NB)(结合例子推公式,通俗易懂)

    整合一下学习NB的思路与代码,仅代表个人思想. 目录 算法思想 公式推导 1.问题陈述 2.先验概率分布 3.条件概率分布 4.输入为x的概率 5.用贝叶斯定理求后验概率 7.得到答案 8.简化计算 ...

  5. 朴素贝叶斯法(Naive Bayes,NB)

    文章目录 1. 朴素贝叶斯法的学习与分类 1.1 基本方法 2. 参数估计 2.1 极大似然估计 2.2 学习与分类算法 2.2.1 例题 2.2.2 例题代码 2.3 贝叶斯估计(平滑) 2.3.1 ...

  6. 机器学习实战(三)朴素贝叶斯NB(Naive Bayes)

    目录 0. 前言 1. 条件概率 2. 朴素贝叶斯(Naive Bayes) 3. 朴素贝叶斯应用于文本分类 4. 实战案例 4.1. 垃圾邮件分类案例 学习完机器学习实战的朴素贝叶斯,简单的做个笔记 ...

  7. 朴素贝叶斯方法(Naive Bayes)原理和实现

    模型概述 朴素贝叶斯方法,是指 朴素:特征条件独立 贝叶斯:基于贝叶斯定理 根据贝叶斯定理,对一个分类问题,给定样本特征x,样本属于类别y的概率是 p(y|x)=p(x|y)p(y)p(x)..... ...

  8. java naive方法_朴素贝叶斯方法(Naive Bayes Method)

    朴素贝叶斯是一种很简单的分类方法,之所以称之为朴素,是因为它有着非常强的前提条件-其所有特征都是相互独立的,是一种典型的生成学习算法.所谓生成学习算法,是指由训练数据学习联合概率分布P(X,Y),然后 ...

  9. 机器学习笔记:朴素贝叶斯方法(Naive Bayes)原理和实现

    本文主要描述了朴素贝叶斯分类方法,包括模型导出和学习描述.实例部分总结了<machine learning in action>一书中展示的一个该方法用于句子感情色彩分类的程序.1 方法概 ...

最新文章

  1. qgridlayout 动态刷新
  2. Sphinx 的介绍和原理探索——不存储原始数据,原始数据来源于SQL,而生成索引放在内存或者磁盘中...
  3. #舍得Share#Flash Media Server4.5迅雷高速下载地址by lwxshow
  4. 太阳光是平行光吗_阳光照耀,万物生长——神奇的太阳光,到底是什么?
  5. CodeForces - 1480C Searching Local Minimum(交互+二分)
  6. 组合数(Lucas定理) + 快速幂 --- HDU 5226 Tom and matrix
  7. ExtJS入门(08)窗口,按钮,输入框,
  8. PL/SQL Developer使用技巧总结
  9. nssl1460-逛机房【bfs】
  10. 字符设备驱动基础篇1——简单的驱动源码分析
  11. pytorch报错RuntimeError: error in LoadLibraryA
  12. linux将字符串转小写_小猿圈总结Linux常见命令(一)
  13. layui自定义ajax左侧三级菜单
  14. 查找系列合集-二分查找
  15. Java 开发人员必备的开发工具,这些没用进BAT想都别想
  16. 永磁同步电机最大转矩电流比(PMSM-MTPA)Simulink仿真教程
  17. 苹果手机安装火狐xpi_为Firefox扩展安装添加XPI MIME类型
  18. python写入文件到docx_从python中的txt文件写入docx文件
  19. pygame实现找方块(色彩敏感度测试)游戏
  20. 可复制的领导力(来自樊登读书会)

热门文章

  1. 通信系统中dB、dBm、dBFS、dBi的含义
  2. ART-PI平台移植Touchgfx 驱动gt9147 触摸屏幕点亮LED
  3. 点对点协议PPP(Point-to-Point Protocol)
  4. 基于雷达-非接触式传感器的高次谐波峰值选择方法的准确心率和呼吸率检测
  5. rvo动态避障算法源码分析
  6. flask+Vue基于web的旅游信息管理系统python django
  7. 小波分析加密 matlab,基于小波变换的数字图像加密算法
  8. 提倡DNS过滤,减少URL过滤
  9. sso单点登录的原理详解
  10. 书讯--Microsoft Windows Communication Foundation Step by Step