用高斯贝叶斯对肿瘤数据集进行训练并建立学习曲线

'''贝努利朴素贝叶斯适合二项式分布的数据集,多项式朴素贝叶斯适合计数类型的数据集(非负,离散数值的数据集),高斯朴素贝叶斯适合任何连续型连续性数值的数据集'''

def b2():
    '''贝努利朴素贝叶斯适合二项式分布的数据集,多项式朴素贝叶斯适合计数类型的数据集(非负,离散数值的数据集),高斯朴素贝叶斯适合任何连续型连续性数值的数据集'''
    #用朴素贝叶斯数据集对肿瘤数据集进行建模,判断肿瘤数据集是良性或恶性
    from sklearn.datasets import load_breast_cancer
    cancer=load_breast_cancer()
    #打印出数据集里面的键值
    print(cancer.keys())
    #打印数据集的肿瘤分类名称
    print(cancer.target_names)
    #打印数据集的肿瘤特征名称
    print(cancer.feature_names)
    #查看数据集的数据种类,大概有569个样本,30个特征值
    print(cancer.data.shape)
    from sklearn.model_selection import train_test_split
    from sklearn.naive_bayes import GaussianNB
    #将数据集中数据值特征数据和分类值
    x,y=cancer.data,cancer.target
    x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=38)
    #打印训练集和测试集的数据形态
    print('训练集的数据形态:',x_train.shape)
    print('测试集的数据形态:',x_test.shape)
    gauss=GaussianNB()
    gauss.fit(x_train,y_train)
    #查看模型的评分
    print('训练集得分:','%.3f'%gauss.score(x_train,y_train))
    print('test  score:','%.3f'%gauss.score(x_test,y_test))
    #随便对模型进行一个运算分类
    print('模型预测分类:',gauss.predict([x[223]]))
    print('样本的正确分类:',y[223])
    '''我们绘制贝叶斯模型在数据集中的学习曲线'''
    from sklearn.model_selection import learning_curve#导入学习曲线库
    from sklearn.model_selection import ShuffleSplit#导入随机拆分工具
    #定义一个函数绘制学习曲线
    def plot_learning_curve(estimator,title,x,y,ylim=None,cv=None,n_jobs=1,train_sizes=np.linspace(.1,1.0,5)):
        plt.figure()
        plt.title(title)
        if ylim is not None:
            plt.ylim(*ylim)
        #设置横轴标签
        plt.xlabel('Training examples')
        #设定纵轴标签
        plt.ylabel('Score')
        train_sizes,train_scores,test_scores=learning_curve(estimator,x,y,cv=cv,n_jobs=n_jobs,train_sizes=train_sizes)
        train_scores_mean=np.mean(train_scores,axis=1)
        test_scores_mean=np.mean(test_scores,axis=1)
        plt.grid()
        plt.plot(train_sizes,train_scores_mean,'o-',color='r',label='Training score')
        plt.plot(train_sizes,test_scores_mean,'o-',color='g',label='CROSS SCORE')
        plt.legend(loc='lower right')
        return plt
    #指定题目
    title='Learining curves---Naive Bayes'
    #设定拆分数量
    cv=ShuffleSplit(n_splits=100,test_size=0.2,random_state=0)
    #设定模型为高斯朴素贝叶斯
    estimator=GaussianNB()
    #调用我们定义好的函数
    plot_learning_curve(estimator,title,x,y,ylim=(0.9,1.01),cv=cv,n_jobs=4)
    plt.show()
b2()

运行结果:

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值