文章目录

  • 肿瘤分类与预测(朴素贝叶斯)
    • 【实验内容】
    • 【实验要求】
      • **【数据集】:威斯康星乳腺肿瘤数据集**
    • 导入sklearn自带的数据集:威斯康星乳腺肿瘤数据集(load_breast_cancer)
    • 打印数据集键值(keys),查看数据集包含的信息
    • 打印查看数据集中标注好的肿瘤分类(target_names)、肿瘤特征名称(feature_names)
    • 将数据集拆分为训练集和测试集,打印查看训练集和测试集的数据形态(shape)
    • 配置高斯朴素贝叶斯模型
    • 训练模型
    • 评估模型,打印查看模型评分(分别打印训练集和测试集的评分)
    • 模型预测:选取某一样本进行预测。(可以进行多次不同样本的预测)
    • 扩展(选做):绘制高斯朴素贝叶斯在威斯康星乳腺肿瘤数据集中的学习曲线

肿瘤分类与预测(朴素贝叶斯)

【实验内容】

采用朴素贝叶斯方法,对美国威斯康星州的乳腺癌诊断数据集进行分类,实现针对乳腺癌检测的分类器,以判断一个患者的肿瘤是良性还是恶性。

【实验要求】

1.导入sklearn自带的数据集:威斯康星乳腺肿瘤数据集(load_breast_cancer)。

2.打印数据集键值(keys),查看数据集包含的信息。

3.打印查看数据集中标注好的肿瘤分类(target_names)、肿瘤特征名称(feature_names)。

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

5.配置高斯朴素贝叶斯模型。

6.训练模型。

7.评估模型,打印查看模型评分(分别打印训练集和测试集的评分)。

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

参考方法:可以打印模型预测的分类和真实的分类,进行对比,看是否一致,如果一致,判断这个样本的肿瘤是一个良性的肿瘤,否则结果相反。
也可以用其他方法进行预测。

9.扩展(选做):绘制高斯朴素贝叶斯在威斯康星乳腺肿瘤数据集中的学习曲线。

【数据集】:威斯康星乳腺肿瘤数据集

该数据集中肿瘤是一个非常经典的用于医疗病情分析的数据集,包括569个病例的数据样本,每个样本具有30个特征。

样本共分为两类:恶性(Malignant)和良性(Benign)。

该数据集的特征是从一个乳腺肿块的细针抽吸(FNA)的数字化图像计算出来的。它们描述了图像中细胞核的特征。

特征值很多,涉及一定的医学知识。(具体特征及含义见此节实验指导书)

from sklearn.datasets import load_breast_cancer
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
import numpy as np
from sklearn.model_selection import cross_val_score
from sklearn.naive_bayes import GaussianNB  # 导入先验概率为高斯分布的朴素贝叶斯
from jupyterthemes import jtplot
jtplot.style(theme='monokai')  # 选择一个绘图主题

导入sklearn自带的数据集:威斯康星乳腺肿瘤数据集(load_breast_cancer)

cancers = load_breast_cancer()
cancers.data
array([[1.799e+01, 1.038e+01, 1.228e+02, ..., 2.654e-01, 4.601e-01,1.189e-01],[2.057e+01, 1.777e+01, 1.329e+02, ..., 1.860e-01, 2.750e-01,8.902e-02],[1.969e+01, 2.125e+01, 1.300e+02, ..., 2.430e-01, 3.613e-01,8.758e-02],...,[1.660e+01, 2.808e+01, 1.083e+02, ..., 1.418e-01, 2.218e-01,7.820e-02],[2.060e+01, 2.933e+01, 1.401e+02, ..., 2.650e-01, 4.087e-01,1.240e-01],[7.760e+00, 2.454e+01, 4.792e+01, ..., 0.000e+00, 2.871e-01,7.039e-02]])

打印数据集键值(keys),查看数据集包含的信息

print(cancers.keys())
dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename', 'data_module'])

打印查看数据集中标注好的肿瘤分类(target_names)、肿瘤特征名称(feature_names)

print("target_names:", cancers.target_names)
print("feature_names:", cancers.feature_names)
target_names: ['malignant' 'benign']
feature_names: ['mean radius' 'mean texture' 'mean perimeter' 'mean area''mean smoothness' 'mean compactness' 'mean concavity''mean concave points' 'mean symmetry' 'mean fractal dimension''radius error' 'texture error' 'perimeter error' 'area error''smoothness error' 'compactness error' 'concavity error''concave points error' 'symmetry error' 'fractal dimension error''worst radius' 'worst texture' 'worst perimeter' 'worst area''worst smoothness' 'worst compactness' 'worst concavity''worst concave points' 'worst symmetry' 'worst fractal dimension']

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

x_train, x_test, y_train, y_test = train_test_split(cancers.data, cancers.target, test_size=0.30)
print("y_train.shape:", y_train.shape)
print("y_train.shape:", y_train.shape)
print("x_test.shape:", x_test.shape)
print("y_test.shape:", y_test.shape)
y_train.shape: (398,)
y_train.shape: (398,)
x_test.shape: (171, 30)
y_test.shape: (171,)

配置高斯朴素贝叶斯模型

model = GaussianNB()  # 高斯朴素贝叶斯

训练模型

model.fit(x_train, y_train)  # 训练高斯朴素贝叶斯算法模型
GaussianNB()

评估模型,打印查看模型评分(分别打印训练集和测试集的评分)

sorcel = cross_val_score(model, x_train, y_train, cv=10,scoring='accuracy')  # 计算高斯朴素贝叶斯算法模型的准确率
print('训练集的得分为:', model.score(x_train, y_train))
print('测试集的得分为:', model.score(x_test, y_test))
print("高斯朴素贝叶斯模型的准确率为:", sorcel.mean())
训练集的得分为: 0.9296482412060302
测试集的得分为: 0.9649122807017544
高斯朴素贝叶斯模型的准确率为: 0.9296153846153846

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

print('模型预测的分类:{}'.format(model.predict([cancers.data[150]])))
print('样本的正确分类是:', cancers.target[150])
模型预测的分类:[1]
样本的正确分类是: 1
from sklearn.metrics import classification_report  # 导入分类报告模板
# sklearn中的classification_report函数用于显示主要分类指标的文本报告.在报告中显示每个类的精确度,召回率,F1值等信息。
print(classification_report(y_test, y_predict))
              precision    recall  f1-score   support0       0.98      0.92      0.95        651       0.95      0.99      0.97       106accuracy                           0.96       171macro avg       0.97      0.96      0.96       171
weighted avg       0.97      0.96      0.96       171

扩展(选做):绘制高斯朴素贝叶斯在威斯康星乳腺肿瘤数据集中的学习曲线

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(.05, 1., 20), verbose=0, plot=True):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-valldation score")plt.legend(loc="lower right")return plt# 设定图题
title = "Learning Curves (Naive Bayes)"
# 设定拆分数量
cv = ShuffleSplit(n_splits=100, test_size=0.2, random_state=0)
# 设定模型为高斯朴素贝叶斯
estimator = GaussianNB()
# 调用我们定义好的函数
plot_learning_curve(estimator, title, cancers.data, cancers.target)
# 显示图片
plt.show()

机器学习实验之肿瘤分类与预测(朴素贝叶斯)相关推荐

  1. 机器学习实验之肿瘤分类与预测(SVM)

    文章目录 肿瘤分类与预测(SVM) [实验内容] [实验要求] **[数据集]:威斯康星乳腺肿瘤数据集** 加载data文件夹里的数据集:威斯康星乳腺肿瘤数据集 查看样本特征和特征值,查看样本特征值的 ...

  2. 机器学习(十)分类算法之朴素贝叶斯(Naive Bayes)算法

    贝叶斯定理 首先我们来了解一下贝叶斯定理: 贝叶斯定理是用来做什么的?简单说,概率预测:某个条件下,一件事发生的概率是多大? 了解一下公式 事件B发生的条件下,事件A发生的概率为: 这里写图片描述 同 ...

  3. 机器学习中的不平衡分类方法(part4)--朴素贝叶斯分类器

    学习笔记,仅供参考,有错必纠 文章目录 朴素贝叶斯分类器 贝叶斯理论 条件概率和乘法公式 全概率公式和贝叶斯公式 极大后验假设与极大似然假设 事件的独立性 朴素贝叶斯分类器 NBC特征分析 朴素贝叶斯 ...

  4. 机器学习实战之基于概率论的分类方法:朴素贝叶斯

    基于概率论的分类方法:朴素贝叶斯 引入 1 基于贝叶斯决策理论的分类方法 1.1 条件概率 1.2 使用条件概率来分类 1.3 使用朴素贝叶斯进行文档分类 2 使用Python进行文本分类 2.1 准 ...

  5. 机器学习(八)KNN,SVM,朴素贝叶斯,决策树与随机森林

    机器学习(八)KNN,SVM,朴素贝叶斯,决策树与随机森林 参考: https://zhuanlan.zhihu.com/p/61341071 1.KNN-K最近邻(K-Nearest Neighbo ...

  6. 【数据科学系统学习】机器学习算法 # 西瓜书学习记录 [6] 朴素贝叶斯实践

    本篇内容为<机器学习实战>第 4 章 基于概率论的分类方法:朴素贝叶斯程序清单.所用代码为 python3. 朴素贝叶斯 优点:在数据较少的情况下仍然有效,可以处理多类别问题. 缺点:对于 ...

  7. Machine Learning in Action 读书笔记---第4章 基于概率论的分类方法:朴素贝叶斯

    Machine Learning in Action 读书笔记 第4章 基于概率论的分类方法:朴素贝叶斯 文章目录 Machine Learning in Action 读书笔记 一.基于贝叶斯决策理 ...

  8. ML算法基础——分类算法(朴素贝叶斯)

    文章目录 朴素贝叶斯算法 1.概率基础 2.朴素贝叶斯介绍 3.朴素贝叶斯算法案例 3.1 sklearn朴素贝叶斯实现API 3.2 sklearn-20类新闻分类 3.3 朴素贝叶斯案例流程 4. ...

  9. [分类算法] :朴素贝叶斯 NaiveBayes

    [分类算法] :朴素贝叶斯 NaiveBayes 1. 原理和理论基础(参考) 2. Spark代码实例: 1)windows 单机 import org.apache.spark.mllib.cla ...

最新文章

  1. vc++向txt文件中写入数据,追加数据
  2. 域名CNAME 概念
  3. layer output 激活函数_一文彻底搞懂BP算法:原理推导+数据演示+项目实战(下篇)...
  4. anaconda程序组中的各个组件都是做什么用的
  5. openface 和openpose(pytorch)剪枝之路
  6. proDAD Erazr
  7. 磁盘调度算法java代码
  8. OpenGL之深入解析渲染架构和数据传递
  9. JavaFX官方教程(十一)之动画基础
  10. ABAP:从例子学习ABAP
  11. c++11 std::bind与std::function
  12. phper需要掌握的技能(简)
  13. 批量替换_【脚本】AE照片墙模板图片批量替换脚本Multi Replacer
  14. c++ 写x64汇编 5参数_自己动手写操作系统 8086sos
  15. 华为机试高频题目(Java实现)
  16. Good Numbers 暴力/进制
  17. JS中window的onload和ready方法的区别
  18. 菜谱分享网站微信小程序开发说明(2)-数据库
  19. 【Linux】Linux 磁盘与文件系统管理命令
  20. 日语流行口语极短句2

热门文章

  1. 【win7如何正确设置麦克风】
  2. java 10进制转64进制_JAVA中实现十进制与其它自定义进制进行相互转换。 - yz124的日志 - 网易博客...
  3. Python的matplotlib库学习笔记第一篇
  4. 京东案例-快递查询单号(当我们输入单号时,文本框上面自动显示大字号的内容)
  5. 港口计算机,工业计算机在智慧港口AGV中的应用
  6. java并发学习03---CountDownLatch 和 CyclicBarrier
  7. fatal error LNK1201
  8. 使用java操作ES
  9. 705页PPT|智慧金融大数据可视化展示平台建设方案(附PDF下载)
  10. 云计算论文读书笔记1