博客
关于我
补集朴素贝叶斯--能够很好的捕捉少数类样本
阅读量:687 次
发布时间:2019-03-15

本文共 1700 字,大约阅读时间需要 5 分钟。

#补集朴素贝叶斯-多项式朴素贝叶斯的补充,所以也是要求特征是离散的,非连续型from sklearn.naive_bayes import ComplementNBfrom time import timeimport datetime#探索补集朴素贝叶斯在不平衡数据中的处理#探索样本不均衡问题from sklearn.preprocessing import KBinsDiscretizerfrom sklearn.datasets import make_blobsfrom sklearn.naive_bayes import GaussianNB,MultinomialNB,BernoulliNBfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import brier_score_loss as bs,recall_score,roc_auc_score as auc#创建数据集class1=50000class2=500centers=[[0.0,0.0],[5.0,5.0]]std=[3,1]X,y=make_blobs(n_samples=[class1,class2names=["Multinomial","Gaussian","Bernoulli","Complement"]models=[MultinomialNB(),GaussianNB(),BernoulliNB(),ComplementNB()]for clf,name in zip(models,names):    times=time()    Xtrain,Xtest,ytrain,ytest=train_test_split(X,y,test_size=0.3,random_state=420)    if name!="Gaussian":        kbs=KBinsDiscretizer(n_bins=10,encode="onehot").fit(Xtrain)        Xtrain=kbs.transform(Xtrain)        Xtest=kbs.transform(Xtest)    clf.fit(Xtrain,ytrain)    y_pred=clf.predict(Xtest)    proba=clf.predict_proba(Xtest)[:,1]    score=clf.score(Xtest,ytest)    print(name)    print("\tBrier:{:.3f}".format(bs(ytest,proba,pos_label=1)))    print("\tAccuracy:{:.3f}".format(score))    print("\tRecall:{:.3f}".format(recall_score(ytest,y_pred)))    print("\tAUC:{:.3f}".format(auc(ytest,proba)))    print(datetime.datetime.fromtimestamp(time()-times).strftime("%M:%S:%f"))],              centers=centers,              cluster_std=std,              random_state=0,              shuffle=False)
在这里插入代码片

在这里插入图片描述

在这里插入图片描述
可以发现,补集朴素贝叶斯牺牲了部分整体的精确度和布里尔指数,但是得到了十分高的召回率Recall,捕捉出了
98.7%的少数类,并且在此基础上维持了和原本的多项式朴素贝叶斯一致的AUC分数。和其他的贝叶斯算法比起来,
我们的补集朴素贝叶斯的运行速度也十分优秀。如果我们的目标是捕捉少数类,那我们毫无疑问会希望选择补集朴素
贝叶斯作为我们的算法

转载地址:http://ptrmz.baihongyu.com/

你可能感兴趣的文章
myeclipse的新建severlet不见解决方法
查看>>
MyEclipse设置当前行背景颜色、选中单词前景色、背景色
查看>>
Mtab书签导航程序 LinkStore/getIcon SQL注入漏洞复现
查看>>
myeclipse配置springmvc教程
查看>>
MyEclipse配置SVN
查看>>
MTCNN 人脸检测
查看>>
MyEcplise中SpringBoot怎样定制启动banner?
查看>>
MyPython
查看>>
MTD技术介绍
查看>>
MySQL
查看>>
MySQL
查看>>
mysql
查看>>
MTK Android 如何获取系统权限
查看>>
MySQL - 4种基本索引、聚簇索引和非聚索引、索引失效情况、SQL 优化
查看>>
MySQL - ERROR 1406
查看>>
mysql - 视图
查看>>
MySQL - 解读MySQL事务与锁机制
查看>>
MTTR、MTBF、MTTF的大白话理解
查看>>
mt_rand
查看>>
mysql -存储过程
查看>>