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

你可能感兴趣的文章
mysqldump 参数--lock-tables浅析
查看>>
mysqldump 导出中文乱码
查看>>
mysqldump 导出数据库中每张表的前n条
查看>>
mysqldump: Got error: 1044: Access denied for user ‘xx’@’xx’ to database ‘xx’ when using LOCK TABLES
查看>>
Mysqldump参数大全(参数来源于mysql5.5.19源码)
查看>>
mysqldump备份时忽略某些表
查看>>
mysqldump实现数据备份及灾难恢复
查看>>
mysqldump数据库备份无法进行操作只能查询 --single-transaction
查看>>
mysqldump的一些用法
查看>>
mysqli
查看>>
MySQLIntegrityConstraintViolationException异常处理
查看>>
mysqlreport分析工具详解
查看>>
MySQLSyntaxErrorException: Unknown error 1146和SQLSyntaxErrorException: Unknown error 1146
查看>>
Mysql_Postgresql中_geometry数据操作_st_astext_GeomFromEWKT函数_在java中转换geometry的16进制数据---PostgreSQL工作笔记007
查看>>
mysql_real_connect 参数注意
查看>>
mysql_secure_installation初始化数据库报Access denied
查看>>
MySQL_西安11月销售昨日未上架的产品_20161212
查看>>
Mysql——深入浅出InnoDB底层原理
查看>>
MySQL“被动”性能优化汇总
查看>>
MySQL、HBase 和 Elasticsearch:特点与区别详解
查看>>