MultinomialNB是高斯贝叶斯分类器,它假设特征的条件分布概率满足高斯分布。

其原型为:

class sklearn.naive_bayes.MultinomialNB(alpha=1.0, fit_prior=True, class_prior=None)

参数说明:

alpha:一个浮点数,指定a值;

fit_prior:布尔值,如果为Ture,咋不去学习P(Y=Ck),替代以均匀分布;如果为False,则去学习P(Y=Ck)。

class_prior:一个数组,指定每个分类的先验概率P(y=c1),P(y=c2),...p(y=ck)。如果制定了该参数,则每个分类的先验概率不再从数据集中学得。

属性说明:

class_log_prior:一个数组对象,形式为(n_class,),给出了每个类别调整后的经验概率分布对数值。

feature_log_prob_:一个数组对象,形状为(n_class,n_feature),给出了P(X(j)/y=Ck)的经验概率分布的对数值

feature_count_:一个数组,形式为(n_class,n_feature),训练过程中,每个类每个特征遇到的样本数。

class_count_:一个数组,形状为(n_class,),是每个类别包含的训练样本数量

方法说明

fit(x, y[,sample_weight):训练模型。

partial_fit(x,y[, classes,sample_weight):` 追加训练模型。该方法主要用于大规模数据集的训练。这个时候可以将大数据集划分成若干个小数据集,然后在这些小数据集上连续调用partial_fit方法来训练模型。

predict(x):用模型进行预测,返回预测值

predict_log_proba(x):返回一个数组,数组的元素依次是x预测为各个类别的概率的对数值。

predict_proba(x):返回一个数值,数组元素依次是x预测为各个类别的概率值。

score(x, y[,sample_weight]):返回测试性能得分(测试分数不超过1,但是可能为负数(当预测效果太差的时候),score值越接近1,说明预测效果越好)。

代码示例说明(代码接上节内容):

def test_MultinomialNB(*data):

x_train, x_test, y_train, y_test = data

cls = naive_bayes.MultinomialNB()

cls.fit(x_train, y_train)

print("MultinomialNB training score set is: {:.3f}".format(cls.score(x_train, y_train)))

print("MultinomialNB test score set is: {:.3f}".format(cls.score(x_test, y_test)))

x_train, x_test, y_train, y_test = load_digits_data()

test_MultinomialNB(x_train, x_test, y_train, y_test)

运行上述代码结果为

MultinomialNB training score set is: 0.908

MultinomialNB test score set is: 0.906

由上述运行结果可知,对训练集的预测分数为0.908,对测试机的预测结果为0.906,接下来我们看一下调节alpha参数的值,给出函数如下

def test_MultinomialNB_alpha(*data):

#alpha对预测性能的影响

x_train,x_test,y_train,y_test=data

alphas = np.logspace(-2,5,num=200)

training_scores=[]

testing_scores=[]

for alpha in alphas:

cls = naive_bayes.MultinomialNB(alpha=alpha)

cls.fit(x_train, y_train)

training_scores.append(cls.score(x_train,y_train))

testing_scores.append(cls.score(x_test,y_test))

## 将对应的结果可视化

fig=plt.figure()

ax=fig.add_subplot(1,1,1)

ax.plot(alphas,training_scores,label="traing score")

ax.plot(alphas,testing_scores,label="testing score")

ax.set_xlabel("alphas value")

ax.set_ylabel("score value")

ax.set_ylim(0,1.0)

ax.set_title("MultinomialNB")

ax.set_xscale("log")

plt.show()

x_train, x_test, y_train, y_test = load_digits_data()

test_MultinomialNB_alpha(x_train, x_test, y_train, y_test)

运行后其结果如图

多项式贝叶斯在不同alpha值时对应的训练和测试分数

这里为了便于观察,我们将x轴设置为对数坐标,由此可以看出,当alpha>100后,随着alpha值的增长,其预测值在下降,这是由多项式贝叶斯本身的函数决定的。

贝叶斯分类器_python机器学习API介绍10:多项式贝叶斯分类器相关推荐

  1. python朴素贝叶斯分类器实现_用scikit-learn实现朴素贝叶斯分类器

    朴素贝叶斯(Naive Bayes Classifier)是一种「天真」的算法(假定所有特征发生概率是独立的),同时也是一种简单有效的常用分类算法.关于它的原理,参见朴素贝叶斯分类器的应用. scik ...

  2. 吴裕雄 python 机器学习——多项式贝叶斯分类器MultinomialNB模型

    import numpy as np import matplotlib.pyplot as pltfrom sklearn import datasets,naive_bayes from skle ...

  3. sklearn朴素贝叶斯分类器_python机器学习:方法链和朴素贝叶斯分类器

    今天我们在学习朴素贝叶斯分类器之前,我们先来总结下前面经常用到的内容,方法链:在scikit-learn中所有模型的fit方法返回的都是self.我们用一行代码初始化模型并拟合,对应代码如下:logr ...

  4. thinkcmf5调用指定分类的二级_python机器学习API介绍11: 伯努利贝叶斯分类器

    BernoulliNB是伯努利贝叶斯分类器,它是假设模型的条件概率分布满足对应的二次项分布,其原型为: class sklearn.naive_bayes.BernoulliNB(alpha=1.0, ...

  5. 【机器学习算法介绍】朴素贝叶斯

    文章目录 1 概述 2 原理 2.1 贝叶斯定理 2.2 属性条件独立假设 2.3 高斯朴素贝叶斯 2.3.1 计算方法 2.3.2 API调用 2.4 Multinomial Naive Bayes ...

  6. 机器学习与R之朴素贝叶斯分类器

    朴素贝叶斯 1联合概率分布 p(x,y)=p(y)P(x|y)  或者p(A交B)=p(A)xp(B)  p(A交B)不容易求,假设条件独立拆分成两个事件的乘积 2基本假设条件独立性 3利用贝叶斯定理 ...

  7. 对pca降维后的手写体数字图片数据分类_python机器学习API介绍13: 数据降维及主成分分析...

    数据降维概述:数据降维是机器学习领域中重要的内容,所谓的降维就是采用某种映射方法,将高维空间中的数据点映射到低维的空间中.其本质是学习一个映射函数f: x->y.其中x是原始数据点的表述,目前多 ...

  8. python图像压缩主成分分析实例_python机器学习API介绍13: 数据降维及主成分分析...

    数据降维概述:数据降维是机器学习领域中重要的内容,所谓的降维就是采用某种映射方法,将高维空间中的数据点映射到低维的空间中.其本质是学习一个映射函数f: x->y.其中x是原始数据点的表述,目前多 ...

  9. 【一起入门MachineLearning】中科院机器学习第3课-朴素贝叶斯分类器

    专栏介绍:本栏目为 "2021秋季中国科学院大学周晓飞老师的机器学习" 课程记录,不仅仅是课程笔记噢- 每周上两小节课,每周更新两篇博客,如果感兴趣的话,就和我一起入门Machin ...

最新文章

  1. poj 1185 NYOJ 85 炮兵阵地(状态压缩dp)
  2. centos7安装uwsgi报错_如何将CentOS 7升级到CentOS 8
  3. linux mysql 主从数据库_linux mysql数据库的主从配置
  4. 【渝粤教育】国家开放大学2018年秋季 0273-22T中国现代文学 参考试题
  5. signature=1982ab87dc2679ab32a4cc77dcd4ace3,Spin phonon coupling in frustrated magnet CdCr$_2$O$_4$
  6. android 线性布局
  7. 一起谈.NET技术,asp.net控件开发基础(17)
  8. 白话java_白话Java
  9. 计算机键盘最小化,电脑最小化键盘怎么按
  10. 三星手机android版本怎么升级,如何在三星Galaxy手机上更新软件
  11. 29岁程序员,该怎么在写作、沟通、能力方面提升自己?
  12. 我的冷笑话20100125
  13. MySQL 不等于的三种表示及区别
  14. 重磅!我组问卷调查结果公布
  15. Zabbix监控web基本配置
  16. 很久未使用计算机会怎样,很久没用,电脑为什么不能启动?
  17. 微信小程序-view(视图容器)
  18. 关于使用腾讯云HiFlow场景连接器每天提醒签到打卡
  19. mssql和mysql注入区别_Mssql手工注入小结
  20. 手机浏览器能接收彩信,还hold住吗?

热门文章

  1. Employee Assign Organization unit
  2. 得到application server上所有的logon user
  3. 如何设置search parameter的默认operator
  4. 在BAdI definition PRODUCT_R3_ADAPTER的implementation里获得download type
  5. One order search dynamic SQL build logic
  6. 增强现实和3D渲染技术是如何应用在SAP产品里的
  7. 使用ABAP代码提交SAP CRM Survey调查问卷
  8. android decorview动画,Android窗口机制(二)Window,PhoneWindow,DecorView,setContentView源码理解...
  9. 画箱线图_箱线图的N种画法
  10. 使用 stm32实现锂电充电_实现高负载锂电池的超快速充电需要哪些要求?