朴素贝叶斯分类器(伯努利贝叶斯+高斯贝叶斯+多项式贝叶斯)

1 from sklearn.datasets import load_diabetes
2 X,y=load_diabetes().data,load_diabetes().target
3 X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=8)
4 lr=LinearRegression().fit(X_train,y_train)
5 print("the coefficient:{}".format(lr.coef_))
6 print(‘the intercept:{}‘.format(lr.intercept_))
7 print("the score of this model:{:.3f}".format(lr.score(X_test,y_test)))
1 import matplotlib.pyplot as plt
2 plt.scatter(X[:,0],X[:,1],c=y,cmap=plt.cm.spring,edgecolors=‘k‘)
3 plt.show()
1 #伯努利贝叶斯分类器
2 from sklearn.naive_bayes import BernoulliNB
3 bnb=BernoulliNB()
4 bnb.fit(X_train,y_train)
5 print("the score of this model:{}".format(bnb.score(X_test,y_test)))
 1 import numpy as np
 2 x_min=X[:,0].min()-0.5
 3 x_max=X[:,0].max()+0.5
 4 y_min=X[:,1].min()-0.5
 5 y_max=X[:,1].max()+0.5
 6 xx,yy=np.meshgrid(np.arange(x_min,x_max,.02),
 7                   np.arange(y_min,y_max,.02))
 8 z=bnb.predict(np.c_[(xx.ravel(),yy.ravel())])
 9 z=z.reshape(xx.shape)
10 plt.pcolormesh(xx,yy,z,cmap=plt.cm.Pastel1)
11 plt.scatter(X_train[:,0],X_train[:,1],c=y_train,cmap=plt.cm.spring,edgecolors=‘k‘)
12 plt.scatter(X_test[:,0],X_test[:,1],c=y_test,cmap=plt.cm.spring,edgecolors=‘k‘,marker=‘*‘)
13 plt.xlim(xx.min(),xx.max())
14 plt.ylim(yy.min(),yy.max())
15 plt.title("Classifier:BernoulliNB")
16 plt.show()
1 #高斯贝叶斯分类器
2 from sklearn.naive_bayes import GaussianNB
3 gnb=GaussianNB()
4 gnb.fit(X_train,y_train)
5 print("the score of this model:{}".format(gnb.score(X_test,y_test)))
 1 import numpy as np
 2 x_min=X[:,0].min()-0.5
 3 x_max=X[:,0].max()+0.5
 4 y_min=X[:,1].min()-0.5
 5 y_max=X[:,1].max()+0.5
 6 xx,yy=np.meshgrid(np.arange(x_min,x_max,.02),
 7                   np.arange(y_min,y_max,.02))
 8 z=gnb.predict(np.c_[(xx.ravel(),yy.ravel())])
 9 z=z.reshape(xx.shape)
10 plt.pcolormesh(xx,yy,z,cmap=plt.cm.Pastel1)
11 plt.scatter(X_train[:,0],X_train[:,1],c=y_train,cmap=plt.cm.spring,edgecolors=‘k‘)
12 plt.scatter(X_test[:,0],X_test[:,1],c=y_test,cmap=plt.cm.spring,edgecolors=‘k‘,marker=‘*‘)
13 plt.xlim(xx.min(),xx.max())
14 plt.ylim(yy.min(),yy.max())
15 plt.title("Classifier:GaussianNB")
16 plt.show()
 1 #最大最小预处理,处理非负数据
 2 from sklearn.preprocessing import MinMaxScaler
 3 scaler=MinMaxScaler()
 4 scaler.fit(X_train)
 5 X_train_scaled=scaler.transform(X_train)
 6 X_test_scaled=scaler.transform(X_test)
 7 #多项式朴素贝叶斯
 8 from sklearn.naive_bayes import MultinomialNB
 9 mnb=MultinomialNB()
10 mnb.fit(X_train_scaled,y_train)
11 print("the score of this model:{}".format(mnb.score(X_test_scaled,y_test)))
 1 import numpy as np
 2 x_min=X[:,0].min()-0.5
 3 x_max=X[:,0].max()+0.5
 4 y_min=X[:,1].min()-0.5
 5 y_max=X[:,1].max()+0.5
 6 xx,yy=np.meshgrid(np.arange(x_min,x_max,.02),
 7                   np.arange(y_min,y_max,.02))
 8 z=mnb.predict(np.c_[(xx.ravel(),yy.ravel())])
 9 z=z.reshape(xx.shape)
10 plt.pcolormesh(xx,yy,z,cmap=plt.cm.Pastel1)
11 plt.scatter(X_train[:,0],X_train[:,1],c=y_train,cmap=plt.cm.spring,edgecolors=‘k‘)
12 plt.scatter(X_test[:,0],X_test[:,1],c=y_test,cmap=plt.cm.spring,edgecolors=‘k‘,marker=‘*‘)
13 plt.xlim(xx.min(),xx.max())
14 plt.ylim(yy.min(),yy.max())
15 plt.title("Classifier:MultinomialNB")
16 plt.show()

以上三个分类器均是二维可视化的。

原文地址:https://www.cnblogs.com/St-Lovaer/p/12245939.html

时间: 2024-10-03 03:46:41

朴素贝叶斯分类器(伯努利贝叶斯+高斯贝叶斯+多项式贝叶斯)的相关文章

stick-learn朴素贝叶斯的三个常用模型:高斯、多项式、伯努利

朴素贝叶斯是一个很不错的分类器,在使用朴素贝叶斯分类器划分邮件有关于朴素贝叶斯的简单介绍. 若一个样本有n个特征,分别用x1,x2,...,xn表示,将其划分到类yk的可能性P(yk|x1,x2,...,xn)为: P(yk|x1,x2,...,xn)=P(yk)∏ni=1P(xi|yk) 上式中等号右侧的各个值可以通过训练得到.根据上面的公式可以求的某个数据属于各个分类的可能性(这些可能性之和不一定是1),该数据应该属于具有最大可能性的分类中. 一般来说,如果一个样本没有特征xi,那么P(xi

概率图形模型(PGM)学习笔记(四)-贝叶斯网络-伯努利贝叶斯-贝叶斯多项式

之前忘记强调重要的差异:链式法则的条件概率和贝叶斯网络的链式法则之间的差异 条件概率链式法则 P\left({D,I,G,S,L} \right) = P\left( D \right)P\left( {I\left| D \right.}\right)P\left( {G\left| {D,I} \right.} \right)P\left( {S\left| {D,I,G} \right.}\right)P\left( {L\left| {D,I,G,S} \right.} \right)"

从朴素贝叶斯分类器到贝叶斯网络(下)

书接上文 :从朴素贝叶斯分类器到贝叶斯网络(上) 三.贝叶斯网络 贝叶斯网络(Bayesian Network)是一种用于表示变量间依赖关系的数据结构.有时它又被称为信念网络(Belief Network)或概率网络(Probability Network).在统计学习领域.概率图模型(PGM,Probabilistic Graphical Models)经常使用来指代包括贝叶斯网络在内的更加宽泛的一类机器学习模型.比如隐马尔可夫模型(HMM,Hidden Markov Model)也是一种PG

从朴素贝叶斯分类器到贝叶斯网络(上)

一.贝叶斯公式(一些必备的数学基础) 贝叶斯(Thomas Bayes)是生活在十八世纪的一名英国牧师和数学家.因为历史久远,加之他没有太多的著述留存,今天的人们对贝叶斯的研究所知甚少.唯一知道的是,他提出了概率论中的贝叶斯公式.但从他曾经当选英国皇家科学学会会员(类似于院士)来看,他的研究工作在当时的英国学术界已然受到了普遍的认可. 事实上,在很长一段时间里,人们都没有注意到贝叶斯公式所潜藏的巨大价值.直到二十世纪人工智能.机器学习等崭新学术领域的出现,人们才从一堆早已蒙灰的数学公式中发现了贝

概率图模型(PGM)学习笔记(四)-贝叶斯网络-伯努利贝叶斯-多项式贝叶斯

指针悬空 指针悬空在我们使用指针的时候很容易被忽视,主要的表现是:指针所指向的内存 释放,指针并没有置为NULL,致使一个不可控制的指针. #include<stdio.h> #include<stdlib.h> int *pointer; void func() { int n=8; pointer=&n; printf("pointer point data is %d\n",*pointer); // pointer=NULL; } int mai

机器学习:贝叶斯分类器(二)——高斯朴素贝叶斯分类器代码实现

一 高斯朴素贝叶斯分类器代码实现 网上搜索不调用sklearn实现的朴素贝叶斯分类器基本很少,即使有也是结合文本分类的多项式或伯努利类型,因此自己写了一遍能直接封装的高斯类型NB分类器,当然与真正的源码相比少了很多属性和方法,有兴趣的可以自己添加.代码如下(有详细注释): class NaiveBayes(): '''高斯朴素贝叶斯分类器''' def __init__(self): self._X_train = None self._y_train = None self._classes

机器学习---朴素贝叶斯分类器(Machine Learning Naive Bayes Classifier)

朴素贝叶斯分类器是一组简单快速的分类算法.网上已经有很多文章介绍,比如这篇写得比较好:https://blog.csdn.net/sinat_36246371/article/details/60140664.在这里,我按自己的理解再整理一遍. 在机器学习中,我们有时需要解决分类问题.也就是说,给定一个样本的特征值(feature1,feature2,...feauren),我们想知道该样本属于哪个分类标签(label1,label2,...labeln).即:我们想要知道该样本各个标签的条件概

数据挖掘十大经典算法(9) 朴素贝叶斯分类器 Naive Bayes

贝叶斯分类器 贝叶斯分类器的分类原理是通过某对象的先验概率,利用贝叶斯公式计算出其后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类.眼下研究较多的贝叶斯分类器主要有四种,各自是:Naive Bayes.TAN.BAN和GBN. 贝叶斯网络是一个带有概率凝视的有向无环图,图中的每个结点均表示一个随机变量,图中两结点 间若存在着一条弧,则表示这两结点相相应的随机变量是概率相依的,反之则说明这两个随机变量是条件独立的.网络中随意一个结点X 均有一个对应的条件概率表(Con

朴素贝叶斯分类器的应用 Naive Bayes classifier

一.病人分类的例子 让我从一个例子开始讲起,你会看到贝叶斯分类器很好懂,一点都不难. 某个医院早上收了六个门诊病人,如下表. 症状 职业 疾病 打喷嚏 护士 感冒  打喷嚏 农夫 过敏  头痛 建筑工人 脑震荡  头痛 建筑工人 感冒  打喷嚏 教师 感冒  头痛 教师 脑震荡 现在又来了第七个病人,是一个打喷嚏的建筑工人.请问他患上感冒的概率有多大? 根据贝叶斯定理: P(A|B) = P(B|A) P(A) / P(B) 可得 P(感冒|打喷嚏x建筑工人)  = P(打喷嚏x建筑工人|感冒)