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

你可能感兴趣的文章
mysql5.7性能调优my.ini
查看>>
MySQL5.7新增Performance Schema表
查看>>
Mysql5.7深入学习 1.MySQL 5.7 中的新增功能
查看>>
Webpack 之 basic chunk graph
查看>>
Mysql5.7版本单机版my.cnf配置文件
查看>>
mysql5.7的安装和Navicat的安装
查看>>
mysql5.7示例数据库_Linux MySQL5.7多实例数据库配置
查看>>
Mysql8 数据库安装及主从配置 | Spring Cloud 2
查看>>
mysql8 配置文件配置group 问题 sql语句group不能使用报错解决 mysql8.X版本的my.cnf配置文件 my.cnf文件 能够使用的my.cnf配置文件
查看>>
MySQL8.0.29启动报错Different lower_case_table_names settings for server (‘0‘) and data dictionary (‘1‘)
查看>>
MYSQL8.0以上忘记root密码
查看>>
Mysql8.0以上重置初始密码的方法
查看>>
mysql8.0新特性-自增变量的持久化
查看>>
Mysql8.0注意url变更写法
查看>>
Mysql8.0的特性
查看>>
MySQL8修改密码报错ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
查看>>
MySQL8修改密码的方法
查看>>
Mysql8在Centos上安装后忘记root密码如何重新设置
查看>>
Mysql8在Windows上离线安装时忘记root密码
查看>>
MySQL8找不到my.ini配置文件以及报sql_mode=only_full_group_by解决方案
查看>>