'''贝努利朴素贝叶斯适合二项式分布的数据集,多项式朴素贝叶斯适合计数类型的数据集(非负,离散数值的数据集),高斯朴素贝叶斯适合任何连续型连续性数值的数据集'''
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()
运行结果: