博客
关于我
补集朴素贝叶斯--能够很好的捕捉少数类样本
阅读量: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/

你可能感兴趣的文章
ms sql server 2008 sp2更新异常
查看>>
MS UC 2013-0-Prepare Tool
查看>>
MSBuild 教程(2)
查看>>
msbuild发布web应用程序
查看>>
MSB与LSB
查看>>
MSCRM调用外部JS文件
查看>>
MSCRM调用外部JS文件
查看>>
MSEdgeDriver (Chromium) 不适用于版本 >= 79.0.313 (Canary)
查看>>
MsEdgeTTS开源项目使用教程
查看>>
msf
查看>>
MSSQL数据库查询优化(一)
查看>>
MSSQL数据库迁移到Oracle(二)
查看>>
MSSQL日期格式转换函数(使用CONVERT)
查看>>
MSTP多生成树协议(第二课)
查看>>
MSTP是什么?有哪些专有名词?
查看>>
Mstsc 远程桌面链接 And 网络映射
查看>>
Myeclipse常用快捷键
查看>>
MyEclipse更改项目名web发布名字不改问题
查看>>
MyEclipse用(JDBC)连接SQL出现的问题~
查看>>
mt-datetime-picker type="date" 时间格式 bug
查看>>