实验内容:肿瘤分类与预测(朴素贝叶斯)
采用朴素贝叶斯方法,对美国威斯康星州的乳腺癌诊断数据集进行分类,实现针对乳腺癌检测的分类器,以判断一个患者的肿瘤是良性还是恶性。
实验要求
1.导入sklearn自带的数据集:威斯康星乳腺肿瘤数据集(load_breast_cancer)。
2.打印数据集键值(keys),查看数据集包含的信息。
3.打印查看数据集中标注好的肿瘤分类(target_names)、肿瘤特征名称(feature_names)。
4.将数据集拆分为训练集和测试集,打印查看训练集和测试集的数据形态(shape)。
5.配置高斯朴素贝叶斯模型。
6.训练模型。
7.评估模型,打印查看模型评分(分别打印训练集和测试集的评分)。
8.模型预测:选取某一样本进行预测。(可以进行多次不同样本的预测)
【数据集】:威斯康星乳腺肿瘤数据集
该数据集中肿瘤是一个非常经典的用于医疗病情分析的数据集,包括569个病例的数据样本,每个样本具有30个特征。
样本共分为两类:恶性(Malignant)和良性(Benign)。
该数据集的特征是从一个乳腺肿块的细针抽吸(FNA)的数字化图像计算出来的。它们描述了图像中细胞核的特征。
完整代码
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.metrics import classification_report
from sklearn.naive_bayes import GaussianNB
from sklearn.naive_bayes import MultinomialNB
from sklearn.naive_bayes import BernoulliNB
breast_cancer=load_breast_cancer()
print(breast_cancer.keys())
print(breast_cancer.target_names)
print(breast_cancer.feature_names)
data=pd.DataFrame(breast_cancer.data)
target=pd.DataFrame(breast_cancer.target)
X=np.array(data.values)
y=np.array(target.values)
train_X,test_X,train_y,test_y=train_test_split(X,y,test_size=0.2)
print(train_X.shape,test_X.shape)
model=GaussianNB()
model.fit(train_X,train_y)
sorce=cross_val_score(model,train_X,train_y,cv=10,scoring='accuracy')
print("高斯朴素贝叶斯模型的准确率:",sorce.mean())
print("高斯朴素贝叶斯模型训练集的评分:",model.score(train_X,train_y))
print("高斯朴素贝叶斯模型测试集的评分:",model.score(test_X,test_y))
pre_y=model.predict(test_X)
print(classification_report(test_y,pre_y))
|