机器学习实验二:朴素贝叶斯和SVM——肿瘤分类与预测(朴素贝叶斯)

实操项目 1——肿瘤分类与预测(朴素贝叶斯)

实验要求

采用朴素贝叶斯方法,对美国威斯康星州的乳腺癌诊断数据集进行分类,实现针对乳腺癌检测的分类器,以判断一个患者的肿瘤是良性还是恶性。
【实验要求】
1.导入 sklearn 自带的数据集:威斯康星乳腺肿瘤数据集(load_breast_cancer)。
2.打印数据集键值(keys),查看数据集包含的信息。
3.打印查看数据集中标注好的肿瘤分类(target_names)、肿瘤特征名称(feature_names)。
4.将数据集拆分为训练集和测试集,打印查看训练集和测试集的数据形态(shape)。
5.配置高斯朴素贝叶斯模型。
6.训练模型。
7.评估模型,打印查看模型评分(分别打印训练集和测试集的评分)。
8.模型预测:选取某一样本进行预测。(可以进行多次不同样本的预测)
        参考方法:可以打印模型预测的分类和真实的分类,进行对比,看是否一致,如果一致,判断预测结果准确,否则结果相反。也可以用其他方法进行预测。
9.扩展(选做):绘制高斯朴素贝叶斯在威斯康星乳腺肿瘤数据集中的学习曲线。

实验过程

1.对该题目的理解

        本项目是对美国威斯康星州的乳腺癌诊断数据集进行分类,该数据集包括569个病例的数据样本,每个样本具有30个特征值,而样本共分为两类:分别是恶性和良性,我们要利用高斯朴素贝叶斯算法来训练模型,并对该模型进行评估和预测。

2.实现过程

(1)导入包

代码如下:

import numpy as np  
import pandas as pd  
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#导入先验概率的高斯朴素贝叶斯模型  

(2)导入 sklearn 自带的数据集并输出一些数据

代码如下:

breast_cancer=load_breast_cancer()#导入 sklearn 自带的数据集  
print("数据集的主要内容",breast_cancer.keys())#打印数据集键值(keys),查看数据集包含的信息  
 
print("数据集的标签名",breast_cancer.target_names)  
print("数据集的特征名",breast_cancer.feature_names)#打印查看数据集中标注好的肿瘤分类(target_names)、肿瘤特征名称 (feature_names) 

(3)将数据集拆分为训练集和测试集

代码如下:

#划分数据集
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)

(4)配置高斯朴素贝叶斯模型并训练模型

代码如下:

model=GaussianNB()#配置高斯朴素贝叶斯模型  
model.fit(train_X,train_y)#训练模型  

(5)评估模型,打印查看模型评分

代码如下:

#7.评估模型,打印查看模型评分(分别打印训练集和测试集的评分)。  
#打印训练集和测试集的评分  
print("高斯朴素贝叶斯模型训练集的评分:",model.score(train_X,train_y))  
print("高斯朴素贝叶斯模型测试集的评分:",model.score(test_X,test_y))  

(6)模型预测:选取某一样本进行预测。(可以进行多次不同样本的预测)

代码如下:

#8.模型预测:选取某一样本进行预测。(可以进行多次不同样本的预测)  
pre_y=model.predict(test_X)  
# sklearn中的classification_report函数用于显示主要分类指标的文本报告.在报告中显示每个类的精确度,召回率,F1值等信息。  
print(classification_report(test_y,pre_y)) 

3.遇到的问题及解决办法

(1)问题:如何进行模型评估

我习惯用F1分数来评估模型的好坏,它同时兼顾了分类模型的精确率和召回率F1分数可以看作是模型精确率和召回率的一种调和平均。

实验结果

1.打印数据集键值(keys)以及打印查看数据集中标注好的肿瘤分类(target_names)、肿瘤特征名称(feature_names

机器学习实验二:朴素贝叶斯和SVM——肿瘤分类与预测(朴素贝叶斯)_第1张图片

2.将数据集拆分为训练集和测试集,打印查看训练集和测试集的数据形态(shape)。

 

3.评估模型,打印查看模型评分。

4.模型预测:选取某一样本进行预测

机器学习实验二:朴素贝叶斯和SVM——肿瘤分类与预测(朴素贝叶斯)_第2张图片 

实验总结 

1.通过此实验了解了朴素贝叶斯中的高斯朴素贝叶斯算法,学会了如何构建模型,训练模型,评估模型和模型预测

2.我发现了相比于线性模型算法,朴素贝叶斯算法的效率要高一些,这是因为朴素贝叶斯算法会把数据集中的各个特征看作完全独立的,而不考虑特征之间的关联关系。

 

你可能感兴趣的:(机器学习实验,分类)