在所有的机器学习分类算法中,朴素贝叶斯和其他绝大多数的分类算法都不同。 对于大多数的分类算法,比如决策树,KNN,逻辑回归,支持向量机等,他们都是判别方法,也就是直接学习出特征输出Y和特征X之间的关系,要么是决策函数Y=f(X),要么是条件分布P(Y|X)。 朴素贝叶斯方法是基于贝叶斯定理的一组有监督学习算法,即“简单”地假设每对特征之间相互独立,也就是直接找出特征输出Y和特征X的联合分布P(X,Y),然后用P(Y|X)=P(X,Y)/P(X)得出。 朴素贝叶斯很直观,计算量也不大,在很多领域有广泛的应用 在scikit-learn中,一共有3个朴素贝叶斯的分类算法类。 分别是GaussianNB,MultinomialNB和BernoulliNB。 其中GaussianNB就是先验为高斯分布的朴素贝叶斯, MultinomialNB就是先验为多项式分布的朴素贝叶斯, 而BernoulliNB就是先验为伯努利分布的朴素贝叶斯。 就鸢尾花例子而言,高斯朴素贝叶斯的准确率>多项分布朴素贝叶斯准确率>伯努利朴素贝叶斯准确率,大概和数据的分布情况有关,后续专门再针对性的评估和学习一下 如下:

# 在所有的机器学习分类算法中,朴素贝叶斯和其他绝大多数的分类算法都不同。

# 对于大多数的分类算法,比如决策树,KNN,逻辑回归,支持向量机等,他们都是判别方法,也就是直接学习出特征输出Y和特征X之间的关系,要么是决策函数Y=f(X),要么是条件分布P(Y|X)。

# 朴素贝叶斯方法是基于贝叶斯定理的一组有监督学习算法,即“简单”地假设每对特征之间相互独立,也就是直接找出特征输出Y和特征X的联合分布P(X,Y),然后用P(Y|X)=P(X,Y)/P(X)得出。

# 朴素贝叶斯很直观,计算量也不大,在很多领域有广泛的应用

# 在scikit-learn中,一共有3个朴素贝叶斯的分类算法类。

# 分别是GaussianNB,MultinomialNB和BernoulliNB。

#     其中GaussianNB就是先验为高斯分布的朴素贝叶斯,

#     MultinomialNB就是先验为多项式分布的朴素贝叶斯,

#     而BernoulliNB就是先验为伯努利分布的朴素贝叶斯。

# GaussianNB类参数

#     GaussianNB类的主要参数仅有一个,即先验概率priors,对应Y的各个类别的先验概率P(Y=Ck)。

#         这个值默认不给出,如果不给出此时P(Y=Ck)=mk/m。

#         其中m为训练集样本总数量,mk为输出为第k类别的训练集样本数。

#         如果给出的话就以priors 为准。

#     在使用GaussianNB的fit方法拟合数据后,我们可以进行预测。

#         此时预测有三种方法,包括predict,predict_log_proba和predict_proba。

#         GaussianNB一个重要的功能是有 partial_fit方法,这个方法的一般用在如果训练集数据量非常大,一次不能全部载入内存的时候。

#         这时我们可以把训练集分成若干等分,重复调用partial_fit来一步步的学习训练集

# MultinomialNB类参数

#     MultinomialNB参数比GaussianNB多,但是一共也只有仅仅3个。

#         其中,参数alpha即为上面的常数λ,如果你没有特别的需要,用默认的1即可。

#         如果发现拟合的不好,需要调优时,可以选择稍大于1或者稍小于1的数。

#         布尔参数fit_prior表示是否要考虑先验概率,如果是false,则所有的样本类别输出都有相同的类别先验概率。

#         否则可以自己用第三个参数class_prior输入先验概率,或者不输入第三个参数class_prior让MultinomialNB自己从训练集样本来计算先验概率,此时的先验概率为P(Y=Ck)=mk/m。

#         其中m为训练集样本总数量,mk为输出为第k类别的训练集样本数。

# BernoulliNB类参数

#     BernoulliNB一共有4个参数,其中3个参数的名字和意义和MultinomialNB完全相同。

#         唯一增加的一个参数是binarize。

#         这个参数主要是用来帮BernoulliNB处理二项分布的,可以是数值或者不输入。

#         如果不输入,则BernoulliNB认为每个数据特征都已经是二元的。

#         否则的话,小于binarize的会归为一类,大于binarize的会归为另外一类。

from sklearn.naive_bayes import GaussianNB,MultinomialNB,BernoulliNB

def test_naive_bayes(X_train, X_test, y_train, y_test,X,y):

# 训练数据和测试数据进行标准化

# sc = StandardScaler()

# X_train = sc.fit_transform(X_train)

# X_test = sc.transform(X_test)

scores_train=[]

scores_test=[]

names= ['GaussianNB', 'MultinomialNB', 'BernoulliNB' ]

classifiers = [

GaussianNB(),

MultinomialNB(),

BernoulliNB()

]

h=0.02

X= X[:,:2]

#X = StandardScaler().fit_transform(X)

# X_train = StandardScaler().fit_transform(X_train)

# X_test = StandardScaler().fit_transform(X_test)

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.4, random_state=42)

x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5

y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5

xx, yy = np.meshgrid(np.arange(x_min, x_max, h),

np.arange(y_min, y_max, h))

# just plot the dataset first

#cmap_light = ListedColormap(['#AAAAFF', '#AAFFAA', '#FFAAAA'])  # 给不同区域赋以颜色

#cmap_bold = ListedColormap(['#FF0000', '#003300', '#0000FF'])  # 给不同属性的点赋以颜色

cmap_bold = ListedColormap(['#AAAAFF', '#AAFFAA', '#FFAAAA'])  # 给不同区域赋以颜色

cmap_light = ListedColormap(['#FF0000', '#00FF00', '#0000FF'])  # 给不同属性的点赋以颜色

plt.figure(figsize=(10,6))

plt.title("Input data")

plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train, cmap=cmap_light,edgecolors='k')

# Plot the testing points

plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap=cmap_light, alpha=0.5,edgecolors='k')

plt.xlim(xx.min(), xx.max())

plt.ylim(yy.min(), yy.max())

plt.xticks(())

plt.yticks(())

plt.show()

i=1

figure = plt.figure(figsize=(10, 6))

for name, clf in zip(names, classifiers):

ax = plt.subplot(2, 2, i)

clf.fit(X_train, y_train)

score = clf.score(X_test, y_test)

print('模型名称:{},得分={}'.format(name,score))

# 模型名称:GaussianNB,得分=0.8333333333333334

# 模型名称:MultinomialNB,得分=0.4666666666666667

# 模型名称:BernoulliNB,得分=0.3

#Z = clf.predict_proba(np.c_[xx.ravel(), yy.ravel()])[:, 1]

Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])

Z = Z.reshape(xx.shape)

ax.contourf(xx, yy, Z, cmap=cmap_bold, alpha=.6)

#plt.pcolormesh(xx, yy, Z, cmap=cmap_bold, alpha=.6)

# Plot the training points

ax.scatter(X_train[:, 0], X_train[:, 1], c=y_train, cmap=cmap_light,edgecolors='k')

# Plot the testing points

ax.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap=cmap_light,edgecolors='k', alpha=0.6)

ax.set_xlim(xx.min(), xx.max())

ax.set_ylim(yy.min(), yy.max())

ax.set_xticks(())

ax.set_yticks(())

ax.set_title(name)

ax.text(xx.max() - .3, yy.min() + .3, ('%.2f' % score).lstrip('0'), size=15, horizontalalignment='right')

i=i+1

plt.show()

if __name__=='__main__':

X_train,X_test,y_train,y_test,X,y=load_data(iris)

# -----------------------逻辑回归--------------------------------

# test_LogisticRegression(X_train,X_test,y_train,y_test)

# test_LogisticRegression_C(X_train, X_test, y_train, y_test)

# test_LogisticRegression_Cpenaltyssolvers(X_train, X_test, y_train, y_test)

# test_LogisticRegression_Cmulti_classsolvers(X_train, X_test, y_train, y_test)

# test_LogisticRegression_penaltyssolvers(X_train, X_test, y_train, y_test)

# test_LogisticRegression_multi_classssolvers(X_train, X_test, y_train, y_test)

# test_LogisticRegression_best(X_train, X_test, y_train, y_test)

# ---------------------K近邻算法-----------------------

#test_KNeighborsClassifier(X_train, X_test, y_train, y_test, X, y)

# ------------------朴素贝叶斯-----------------------

# 高斯朴素贝叶斯

# 多项分布朴素贝叶斯

# 伯努利朴素贝叶斯

test_naive_bayes(X_train, X_test, y_train, y_test, X, y)

# ---------------------决策树-----------------------

# ---------------------K Means聚类-----------------------

# ------------------高斯混合模型聚类-----------------------

# -------------------SVM支撑向量机-----------------------

鸢尾花python贝叶斯分类_机器学习之鸢尾花-朴素贝叶斯方法相关推荐

  1. 实现贝叶斯分类器_机器学习实战项目-朴素贝叶斯

    朴素贝叶斯 概述 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类.本章首先介绍贝叶斯分类算法的基础--贝叶斯定理.最后,我们通过实例来讨论贝叶斯分类的中最简单的一种: ...

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

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

  3. 鸢尾花python贝叶斯分类_机器学习-利用三种分类器实现鸢尾花分类

    利用决策树,KNN和朴素贝叶斯三种分类器,对鸢尾花数据集进行分类.下面是具体的流程和代码: 1. 数据读取: 实验数据是直接加载的sklearn内置的鸢尾花数据集,共150条数据,包含4个特征,而且是 ...

  4. 机器学习朴素贝叶斯算法_机器学习中的朴素贝叶斯算法

    机器学习朴素贝叶斯算法 朴素贝叶斯算法 (Naive Bayes Algorithm) Naive Bayes is basically used for text learning. Using t ...

  5. python 食品_[准确率:98%] 改进朴素贝叶斯自动分类食品安全新闻

    这是本系列第二篇文章,位于源代码的 2. NB_Weights 中: https://github.com/Ckend/NLP_DeepLearning_CN_Tutorial 前一篇文章中,我们学习 ...

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

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

  7. 04机器学习实战之朴素贝叶斯

    朴素贝叶斯 概述 贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类.本章首先介绍贝叶斯分类算法的基础--贝叶斯定理.最后,我们通过实例来讨论贝叶斯分类的中最简单的一种: ...

  8. 垃圾邮件分类快速理解机器学习中的朴素贝叶斯(Naive Bayes)

    贝叶斯方法是一个历史悠久,有着坚实的理论基础的方法,同时处理很多问题时直接而又高效,很多高级自然语言处理模型也可以从它演化而来.因此,学习贝叶斯方法,是研究自然语言处理问题的一个非常好的切入口. 其实 ...

  9. 机器学习实战之朴素贝叶斯

    机器学习实战之朴素贝叶斯 一.朴素贝叶斯算法概述 1.贝叶斯决策理论 2.条件概率 3.全概率公式 4.贝叶斯推断 5.朴素贝叶斯推断 二.实战 三.总结 1.朴素贝叶斯推断的一些优点: 2.朴素贝叶 ...

最新文章

  1. 线程 、进程、协程 三者区别
  2. C/C++练习题(一)
  3. JVM GC性能方面的考虑(吞吐量和STW)
  4. Juniper Firewall多进单出配制实例
  5. 没有内存条电脑能开机吗_换内存加固态,老电脑也能快到起飞,附纯国产内存条雷赤测评...
  6. codevs1521 华丽的吊灯
  7. 简历javaweb项目描述怎么写_硬件工程师简历-项目经验怎么写【范文】
  8. 让visio保存背景透明的图片。
  9. linux ubuntn j经验
  10. III.Data Modeling and Aggregation(数据模型和整合)
  11. STM32和51系列单片机编程的区别
  12. 7. 生信技能树——TCGA癌症数据2
  13. win10开机密码忘记怎么办|win10登陆密码忘记解决方法
  14. 如何删除剽悍的应用软件
  15. 解决Xcode报错“The certificate used to sign “xxxxxx” has either expired or has been revoked“
  16. 电容式咪头气动感应开关工作原理及优点
  17. QT QColor颜色选择器并获取rgb值
  18. kotlin的入口函数
  19. Java闲杂笔记摘抄
  20. 涂鸦智能宠物喂食器(鱼缸投食器)

热门文章

  1. 【产业互联网周报】蚂蚁集团CEO胡晓明辞职;旷视科技科创板IPO申请获受理;“混合云第一股”青云科技下周登陆科创板...
  2. Jmeter书中不会教你的(68)——jdbc request详解
  3. 如鹏网学习笔记(十三)EasyUI
  4. HP DL580 G8 使用光盘安装redhat 6.5系统方法
  5. MS5611大气压强传感器驱动代码(基于GD32F103)
  6. Sublist3r使用教程-子域名扫描工具
  7. 惠普战66指纹识别突然无法添加,点击添加弹窗闪退解决
  8. WinCE系统深度定制汇总
  9. 关于mmdetection3d
  10. allegro导出3D文件