sklearn学习之贝叶斯分类
来源:互联网 发布:凡科建站怎么监测数据 编辑:程序博客网 时间:2024/06/15 04:58
主要是介绍贝叶斯分类器
1.高斯贝叶斯分类器
class sklearn.naive_bayes.GaussianNB
高斯贝叶斯分类器没有参数
2.多项式贝叶斯分类器
class sklearn.naive_bayes.MultinomialNB(alpha=1.0,fit_prior=True,class_prior=None)
参数含义如下:
alpha:一个浮点数,指定alpha的值
fit_prior:布尔值,如果为Ture,则不用去学习P(y=ck),以均匀分布替代,否则则去学习P(y=ck)
class_prior:一个数组。它指定了每个分类的先验概率P(y=c1),P(y=c2)…..,若指定了该参数
则每个分类的先验概率无需学习
伯努利贝叶斯分类器
class sklearn.naive_bayes.BernoulliNB(alpha=1.0,binarize=0.0,fit_prior=Ture,
class_prior=None)
参数含义如下:
alpha:一个浮点数,指定alpha的值
binarize:一个浮点数或者None
如果为浮点数则以该数值为界,特征值大于它的取1,小于的为0
如果为None,假定原始数据已经二值化
fit_prior:布尔值,如果为Ture,则不用去学习P(y=ck),以均匀分布替代,否则则去学习P(y=ck)
class_prior:一个数组。它指定了每个分类的先验概率P(y=c1),P(y=c2)…..,若指定了该参数
则每个分类的先验概率无需学习
from sklearn import datasets,cross_validation,naive_bayesimport numpy as npimport matplotlib.pyplot as pltdef show_digits(): digits=datasets.load_digits() fig=plt.figure() print('vector from image 0:',digits.data[0]) for i in range(25): ax=fig.add_subplot(5,5,i+1) ax.imshow(digits.images[i],cmap=plt.cm.gray_r,interpolation='nearest') plt.show()def load_data(): digits=datasets.load_digits() return cross_validation.train_test_split(digits.data,digits.target,test_size=0.25, random_state=0)#用高斯分类器来查看效果def test_GaussianNB(*data): X_train,X_test,y_train,y_test=data cls=naive_bayes.GaussianNB() cls.fit(X_train,y_train) print("training score:%.2f"%(cls.score(X_train,y_train))) print("testing score:%.2f"%(cls.score(X_test,y_test)))#测试多项式贝叶斯分类器def test_MultinomialNB(*data): X_train,X_test,y_train,y_test=data cls=naive_bayes.MultinomialNB() cls.fit(X_train,y_train) print("training score:%.2f"%(cls.score(X_train,y_train))) print("testing score:%.2f"%(cls.score(X_test,y_test)))#检验不同alpha值对于分类结果的影响def test_MultinomialNB_alpha(*data): X_train,X_test,y_train,y_test=data alphas=np.logspace(-2,5,num=200) training_score=[] testing_score=[] for alpha in alphas: cls=naive_bayes.MultinomialNB(alpha=alpha) cls.fit(X_train,y_train) training_score.append(cls.score(X_train,y_train)) testing_score.append(cls.score(X_test,y_test)) #绘图 fig=plt.figure() ax=fig.add_subplot(1,1,1) ax.plot(alphas,training_score,label="training score") ax.plot(alphas,testing_score,label="testing score") ax.set_xlabel('alpha') ax.set_ylabel('score') ax.set_title("MultinomoalNB") ax.set_xscale("log") plt.show() #查看伯努利分类器效果 def test_BernoulliNB(*data): X_train,X_test,y_train,y_test=data cls=naive_bayes.BernoulliNB() cls.fit(X_train,y_train) print("training score:%.2f"%(cls.score(X_train,y_train))) print("testing score:%.2f"%(cls.score(X_test,y_test)))## 查看不同alpha值的影响def test_BernoulliNB_alpha(*data): X_train,X_test,y_train,y_test=data alphas=np.logspace(-2,5,num=200) training_score=[] testing_score=[] for alpha in alphas: cls=naive_bayes.BernoulliNB(alpha=alpha) cls.fit(X_train,y_train) training_score.append(cls.score(X_train,y_train)) testing_score.append(cls.score(X_test,y_test)) #绘图 fig=plt.figure() ax=fig.add_subplot(1,1,1) ax.plot(alphas,training_score,label="training score") ax.plot(alphas,testing_score,label="testing score") ax.set_xlabel('alpha') ax.set_ylabel('score') ax.set_title("BerbuonlliNB") ax.set_xscale("log") plt.show() ##查看不同阙值的影响def test_BernoulliNB_binarize(*data): X_train,X_test,y_train,y_test=data min_x=min(np.min(X_train.ravel()),np.min(X_test.ravel()))-0.1 max_x=max(np.max(X_train.ravel()),np.max(X_test.ravel()))-0.1 binarizes=np.linspace(min_x,max_x,endpoint=True,num=100) training_score=[] testing_score=[] for binarize in binarizes: cls=naive_bayes.BernoulliNB(binarize=binarize) cls.fit(X_train,y_train) training_score.append(cls.score(X_train,y_train)) testing_score.append(cls.score(X_test,y_test)) ##绘图 fig=plt.figure() ax=fig.add_subplot(1,1,1) ax.plot(binarizes,training_score,label="training score") ax.plot(binarizes,testing_score,label="testing score") ax.set_xlabel('binarize') ax.set_ylabel('score') ax.set_title("BerbuonlliNB") plt.show()if __name__=="__main__": #show_digits() X_train,X_test,y_train,y_test=load_data() #test_GaussianNB(X_train,X_test,y_train,y_test) #test_MultinomialNB(X_train,X_test,y_train,y_test) #test_MultinomialNB_alpha(X_train,X_test,y_train,y_test) #test_BernoulliNB_alpha(X_train,X_test,y_train,y_test) test_BernoulliNB_binarize(X_train,X_test,y_train,y_test)
这里是我代码所产生的一些图片,可以参考一下!
这是关于alpha值对于多项贝叶斯分类的影响,可以看出随着取值过大,效果明显降低,这是英文在多项式贝叶斯分类里面:
P(X=asi/y=ck)=N+a/(N+na)
当n趋于无穷大时,所有概率均为1/n
同理对于伯努利贝叶斯方程也一样
- sklearn学习之贝叶斯分类
- Python机器学习库SKLearn分类算法之朴素贝叶斯
- sklearn之分类决策树
- 调用sklearn库分类学习
- sklearn之SVM二分类
- 机器学习分类之结合实际应用介绍KNN算法原理以及利用sklearn进行分类预测
- sklearn之svm学习
- sklearn之DTS学习
- sklearn 朴素贝叶斯 分类器
- Sklearn,xgboost机器学习多分类实验
- LDA and QDA 分类:机器学习 Sklearn
- 机器学习决策树:sklearn分类和回归
- 《机器学习实战》学习笔记(三)之朴素贝叶斯(下)过滤垃圾邮件、获取区域倾向、新浪新闻分类 (sklearn)
- python之sklearn学习笔记
- 从sklearn.preprocessing, sklearn.feature_selection学习特征工程之预处理
- sklearn学习笔记(二)——最近邻分类
- 『sklearn学习』不同的 SVM 分类器
- scikit-learn 回归基础 分类:机器学习Sklearn
- 关于KEIL5打开KEIL4工程之后工程后缀变为uvprojx
- Git(分布式版本控制系统)——操作篇(二)
- SQL 快速参考
- PAT a1004题解
- js domcontentloader
- sklearn学习之贝叶斯分类
- mysql安装--windows下
- 关于mono dll和native dll在unity使用
- GreenPlum之数组合并取交集及行变列、列变行函数
- zxing二维码不可以多次扫描
- 三分法求函数最大值(求导求极值)
- 713总结
- 写了一个PHP智能标签输入效果
- jquery