数据分析之乳腺癌预测

2023-05-16

零、定义问题

1.1 数据介绍

http://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.names

#属性域


1.示例代码号码

2.块厚度1 - 10

3.细胞大小的一致性1 - 10

4.电池形状的均匀性1 - 10

5.边缘附着力1 - 10

6.单个上皮细胞大小1 - 10

7.裸核1 - 10

8.平淡的染色质1 - 10

9.正常核仁1 - 10

10.有丝分裂1 - 10

11.分类:(2为良性,4为恶性)

1.2 问题定义

     这是一个乳腺癌的数据集,主要通过训练来分出是否患有乳腺癌

一、导入数据

     1.1 导入类库

In [2]:

# 导入类库
from pandas import read_csv
import pandas as pd
from sklearn import datasets
from pandas.plotting import scatter_matrix
from matplotlib import pyplot
from sklearn.model_selection import train_test_split
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.neighbors import KNeighborsClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC
from sklearn.preprocessing import LabelEncoder
from sklearn.linear_model import LogisticRegression

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns #要注意的是一旦导入了seaborn,matplotlib的默认作图风格就会被覆盖成seaborn的格式
%matplotlib notebook
  

     1.2 导入数据集


  1. Sample code number id number
  2. Clump Thickness 1 - 10
  3. Uniformity of Cell Size 1 - 10
  4. Uniformity of Cell Shape 1 - 10
  5. Marginal Adhesion 1 - 10
  6. Single Epithelial Cell Size 1 - 10
  7. Bare Nuclei 1 - 10
  8. Bland Chromatin 1 - 10
  9. Normal Nucleoli 1 - 10
    1. Mitoses 1 - 10
    2. Class: (2 for benign, 4 for malignant)
In [3]:

# 导入数据
breast_cancer_data =pd.read_csv('http://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data',header=None
                               ,names = ['C_D','C_T','U_C_Si','U_C_Sh','M_A','S_E_C_S'
                                        ,'B_N','B_C','N_N','M','Class'])
  

二、数据概述

     2.1 查看数据维度

In [4]:

#显示数据维度
print (breast_cancer_data.shape)
  

(699, 11)
  

     2.2 查看数据

In [5]:

breast_cancer_data.info()
  

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 699 entries, 0 to 698
Data columns (total 11 columns):
C_D        699 non-null int64
C_T        699 non-null int64
U_C_Si     699 non-null int64
U_C_Sh     699 non-null int64
M_A        699 non-null int64
S_E_C_S    699 non-null int64
B_N        699 non-null object
B_C        699 non-null int64
N_N        699 non-null int64
M          699 non-null int64
Class      699 non-null int64
dtypes: int64(10), object(1)
memory usage: 57.4+ KB
  
In [6]:

breast_cancer_data.head(25)  # 这里注意id 1057013 的B_N为空值,用?代替。
  
Out[6]:
C_DC_TU_C_SiU_C_ShM_AS_E_C_SB_NB_CN_NMClass
010000255111213112
1100294554457103212
210154253111223112
310162776881343712
410170234113213112
510171228101087109714
6101809911112103112
710185612121213112
810330782111211152
910330784211212112
1010352831111113112
1110361722111212112
1210418015333234414
1310439991111233112
14104457287510795544
1510476307464614314
1610486724111212112
1710498154111213112
181050670107764104124
1910507186111213112
201054590732105105444
211054593105536771014
2210567843111212112
23105701384512?7314
2410595521111213112

     2.2 数据统计描述

In [8]:

print(breast_cancer_data.describe())
  

                C_D         C_T      U_C_Si      U_C_Sh         M_A  \
count  6.990000e+02  699.000000  699.000000  699.000000  699.000000   
mean   1.071704e+06    4.417740    3.134478    3.207439    2.806867   
std    6.170957e+05    2.815741    3.051459    2.971913    2.855379   
min    6.163400e+04    1.000000    1.000000    1.000000    1.000000   
25%    8.706885e+05    2.000000    1.000000    1.000000    1.000000   
50%    1.171710e+06    4.000000    1.000000    1.000000    1.000000   
75%    1.238298e+06    6.000000    5.000000    5.000000    4.000000   
max    1.345435e+07   10.000000   10.000000   10.000000   10.000000   

          S_E_C_S         B_C         N_N           M       Class  
count  699.000000  699.000000  699.000000  699.000000  699.000000  
mean     3.216023    3.437768    2.866953    1.589413    2.689557  
std      2.214300    2.438364    3.053634    1.715078    0.951273  
min      1.000000    1.000000    1.000000    1.000000    2.000000  
25%      2.000000    2.000000    1.000000    1.000000    2.000000  
50%      2.000000    3.000000    1.000000    1.000000    2.000000  
75%      4.000000    5.000000    4.000000    1.000000    4.000000  
max     10.000000   10.000000   10.000000   10.000000    4.000000  
  

     2.2 数据分布情况

In [9]:

print(breast_cancer_data.groupby('Class').size())
  

Class
2    458
4    241
dtype: int64
  

     2.3 缺失数据处理

In [11]:

mean_value = breast_cancer_data[breast_cancer_data["B_N"] != "?"]["B_N"].astype(np.int).mean() # 计算异常值列的平均值
  
In [12]:

breast_cancer_data = breast_cancer_data.replace('?',mean_value) # na替换?
  
In [13]:

breast_cancer_data["B_N"] = breast_cancer_data["B_N"].astype(np.int64)
  

三、数据可视化

3.1单变量图表

In [16]:

# 箱线图
breast_cancer_data.plot(kind='box', subplots=True, layout=(3,4), sharex=False, sharey=False)
pyplot.show()
  
In [17]:

# 直方图
breast_cancer_data.hist()
pyplot.show()
  

3.1多变量图表

In [19]:

# 散点矩阵图
scatter_matrix(breast_cancer_data)
pyplot.show()
  

四、评估算法

      4.1分离数据集

In [52]:

# 分离数据集
array = breast_cancer_data.values
X = array[:, 1:9] # C_D为编号,与Y无相关性,过滤掉
Y = array[:, 10]


validation_size = 0.2
seed = 7
X_train, X_validation, Y_train, Y_validation = train_test_split(X, Y, test_size=validation_size, random_state=seed)
  

      4.2评估算法

In [55]:

# 算法审查
models = {}
models['LR'] = LogisticRegression()
models['LDA'] = LinearDiscriminantAnalysis()
models['KNN'] = KNeighborsClassifier()
models['CART'] = DecisionTreeClassifier()
models['NB'] = GaussianNB()
models['SVM'] = SVC()

num_folds = 10
seed = 7
kfold = KFold(n_splits=num_folds, random_state=seed)
# 评估算法
results = []
for name in models:
    result = cross_val_score(models[name], X_train, Y_train, cv=kfold, scoring='accuracy')
    results.append(result)
    msg = '%s: %.3f (%.3f)' % (name, result.mean(), result.std())
    print(msg)
    
# 图表显示
fig = pyplot.figure()
fig.suptitle('Algorithm Comparison')
ax = fig.add_subplot(111)
pyplot.boxplot(results)
ax.set_xticklabels(models.keys())
pyplot.show()
  

KNN: 0.973 (0.018)
LDA: 0.959 (0.030)
SVM: 0.953 (0.036)
NB: 0.962 (0.031)
CART: 0.941 (0.033)
LR: 0.961 (0.026)
  

五、实施预测

In [75]:

#使用评估数据集评估算法
knn = KNeighborsClassifier()
knn.fit(X=X_train, y=Y_train)
predictions = knn.predict(X_validation)
print(accuracy_score(Y_validation, predictions))
print(confusion_matrix(Y_validation, predictions))
print(classification_report(Y_validation, predictions))
  

0.971428571429
[[89  2]
 [ 2 47]]
             precision    recall  f1-score   support

          2       0.98      0.98      0.98        91
          4       0.96      0.96      0.96        49

avg / total       0.97      0.97      0.97       140

  

六、git与参考

git :若云机器学习公开仓库

参考:机器学习之Python - 魏贞原 - 科技科普 - 原创 | 豆瓣阅读

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据分析之乳腺癌预测 的相关文章

  • WebRTC-集成qsv硬解码实现

    1 Window下QSV硬解码配置 在libavcodec codec list c下添加 amp ff h264 qsv decoder 在ffmpeg generate gni下加入 34 libavcodec h264idct c 3
  • ijkplayer-添加播放截图功能

    应用播放的时候需要截图 xff0c 可以在上层使用TexturView来使用截图 xff0c 不过太具有局限性呢 xff0c 还是在底层处理比较好 那么先分析下可以在哪里加截图呢 xff1f 看到网上很多做的都不能支持硬解截图 xff0c
  • avformat_seek_file及其flag含义

    我们从ijk中seek的处理流程来看ffmpeg的这个问题 int ffp seek to l FFPlayer ffp long msec assert ffp VideoState is 61 ffp gt is int64 t sta
  • 单例模式

    单例模式 xff1a include lt iostream gt using namespace std class Singleton public Singleton cout lt lt 34 Singleton虚构函数 34 lt
  • ffmpeg系列-解决ffmpeg获取aac音频文件duration不准

    这个问题是这样产生的 xff0c 一同事反应会随机出现ijk获取到的aac文件的duration不准 xff0c 发来一看 xff0c 确实不准 xff0c 在AE或者系统mediaplayer中得到的都是8 4秒 xff08 准确时间是M
  • 基于librtmp的推流实现

    1 推流 配置好rtmpdump库后 xff0c 我们可以先用命令行来推流看下效果 2 流程图 使用librtmp发布RTMP流的可以使用两种API xff1a RTMP SendPacket 和RTMP Write 使用RTMP Send
  • ijkplayer-音视频变速播放实现

    本文主要分析变速播放框架实现细节 xff0c 不分析sonic以及soundtouch变速算法 在我的sonic变速变调原理一文中会详细讲解基于基音周期来实现变速变调的原理 1 变速入口分析 从jni层的 setPropertyFloat函
  • 提升树,bagging与随机森林

    提升树是一种以分类树或者回归树为基本分类器的提升方法 对于分类树只需将adaboost算法中的基函数设置为二分类二叉树即可 而回归树则是根据残差来训练下一个分类器的回归二叉树 下面主要介绍一下回归提升树的算法 回归提升树 回忆一下 xff0
  • Android_WakeLock使用

    1 前言与WakeLock简介 1 1 前言 一些手机app xff08 如微信 QQ等 xff09 有新消息来到达 xff0c 手机屏幕即使在锁屏状态下也会亮起 xff0c 并提示用户有新消息 但是 xff0c 一般情况下手机锁屏后 xf
  • ContentResolver.query详解

    1 查询手机的联系人 public void getContacts ContentResolver contentResolver 61 this getContentResolver Cursor cursor 61 contentRe
  • jni开发-GetMethodID与CallObjectMethod的坑

    在java层中声明一个方法用于创建一个audiotrack xff0c 在C层中调用这个方法并获取audiotrack对象 先看下面的代码 xff1a SuPlayer java public AudioTrack createAudioT
  • docker启动rabbitMQ访问不了管理界面-问题解决

    rabbitMQ可以在docker上面去安装启动 xff0c 这样快捷方便 xff0c 也利于本地开发的调试 先在docker下去拉取docker docker pull rabbitmq 这样拉取了rabbitMQ最新的版本后 xff0c
  • Royal TSX 从入门到高效使用

    Royal TSX 是一款 macOS 下可用的远程连接软件 xff0c 类似于 Windows 系统的 XShell 免费版最多支持 10 个连接 xff0c 对于个人开发而言 xff0c 已经足够了 目录 引言 一 下载安装 二 基础配
  • PIP升级错误解决方法

    pip span class token function install span upgrade pip 执行后报如下错误 Looking span class token keyword in span indexes https p
  • 使用自定义菜单等接口类功能出现“SSL connect error”的错误原因及解决方案

    这种情况很少出现 xff0c 但是出现了很难排查 xff0c 因为环境检测结果就是curl openssl都开启了 xff0c 为什么还是不行呢 xff1f 通过技术人员耐心的排查发现是CURL中SSL的版本太低 xff0c 不支持CURL
  • 删除数组中的某个数字

    span class hljs comment 这个程序是今天多益网络的编程题 xff0c 很简单的删除一个数组中值为2的元素 span span class hljs comment 看着很简单 xff0c 但是我没有做出来 xff0c
  • 强化学习和控制

    马尔科夫决策过程MDP值迭代和政策迭代 值迭代政策迭代比较 MDP模型无限状态的MDPs 离散化值函数估计 使用一个模型或模拟器适应值迭代 在强化学习中 xff0c 我们将提供一个奖赏函数 xff0c 当目标完成的好时 xff0c 便奖赏
  • Centos7——防火墙(Firewall)开启常见端口命令

    Centos7 默认安装了 firewalld xff0c 如果没有安装的话 xff0c 则需要YUM命令安装 xff1b firewalld真的用不习惯 xff0c 与之前的iptable防火墙区别太大 安装Firewall命令 xff1

随机推荐

  • FTP服务器下载视频,自定义保存路径

    FTP服务器下载视频 xff0c 自定义保存路径 controller层方法 当前使用 xff0c 浏览器自动弹框 Description 从FTP服务器下载文件 64 param host FTP服务器hostname 64 param
  • OEPNCV_摄像头采集显示

    span class token macro property span class token directive keyword include span span class token string lt stdio h gt sp
  • ArchLinux系统安装(BIOS)

    一 简介 Arch linux 是朝向轻量 xff08 lightweight xff09 以及简单 xff08 simple xff09 的 Linux 发行版 其中 简单 xff08 Simplicity xff09 被定义为 避免不必
  • Android 常见的抓log方法总结

    1 kernel log 1 adb shell dmesg gt c log dmesg txt 2 adb shell cat proc kmsg gt c log kmsg 3 findstr xx 只看xx相关的log 4 查看特定
  • 工作纪实_24-使用@Sl4j注解但是确无法使用log.info打印日志

    如果出现这种情况 xff0c 第一时间先执行打包mvn clean package命令 xff0c 这么做是为了检查log日志包是否齐全 xff0c 此次我打包报错是找不到org slf4j包 xff0c 很明显 xff0c 我们检查一下相
  • gradle-wrapper.properties中各属性的含义

    gradle wrapper properties中各属性的含义 1 gradle wrapper properties 每一个用gradle编译的工程 xff0c 都会有一个gradle wrapper目录 该目录下有2个文件 xff1a
  • cordova 打包步骤

    年底了 xff0c 好多资料都在整理 xff0c 为了避免遗忘 xff0c 也为了利益他人吧 直接上步骤吧 xff1a 增加运行环境的模板 cordova platform add android 编译android的程序 cordova
  • 视图绑定

    视图的绑定从另一个角度看就是implicit的转换 主要用在两个场合 1 当一个T类型的变量t要装换成A类型时 2 当一个类型T的变量t无法拥有A类型的a方法或变量时 其实视图的绑定是为了更方便的使用隐式装换 如果我们不用视图绑定看看 这个
  • 【Settings随记:二】一级菜单,二级菜单的添加与隐藏,添加辅助功能

    我们可以先从Settings的启动来看 先进入到AndroidManifest xml 找到启动的Activity span class token tag span class token tag span class token pun
  • 新加装的硬盘,装上系统后发现EFI分区没有被创建,还是用旧硬盘的EFI分区

    引发问题 xff1a 如果没有旧硬盘就没法引导系统 xff0c 没法开机 解决办法 xff1a 在新硬盘增加一个EFI分区 目前情况大概就是这个样子 xff1a xff08 本人忘了截图 xff0c 用别人的 xff09 可见 xff0c
  • 信息安全重点知识

    一 信息安全概述 网络空间安全的重要性 xff1a 没有网络安全就没有国家安全信息安全 xff1a 防止数据未授权的访问 xff0c 数据有意和物一的威胁 网络安全是信息安全的子集 信息安全的三要素 xff08 CIA xff09 xff1
  • 线程同步的四种方式

    一 xff0c 什么是线程同步和互斥 同步就是协同步调 xff0c 按预定的先后次序进行运行 如 xff1a 你说完 xff0c 我再说 这里的同步千万不要理解成那个同时进行 xff0c 应是指协同 协助 互相配合 线程同步是指多线程通过特
  • 海天注塑机KEBA系统数据采集

    本文章只针对海天注塑机的KEBA系统 xff0c 因为其他注塑机厂家也用KEBA系统 xff0c 他们的采集方式可能不太一样 xff0c 所以后续有时间我将写其他文章来解释 xff08 默认你已经向海天采购了OPC组件 xff09 一 采集
  • Axure基础:事件和动态面板

    这一篇文章我们主要是将如何做系统左侧的导航 xff0c 并且告诉大家如何动态的切换各个页面 一 事件 1 事件基础 事件的核心就是什么时候做什么事 其中的什么时候可以是如下 xff1a 能做的事情如下 xff1a 2 远程监控云中的事件 监
  • 设备联网调试三板斧

    在实际的工业互联网项目中 xff0c 设备联网所占的比重越来越大 有的一期项目为了简单快速上线 xff0c 让客户直观体会到工业互联网的效果 xff0c 直接会把设备联网放在一期项目的重点 那么在做此类项目时 xff0c 设备联网调试就显得
  • 光立方完全解析

    转载请注明出处 xff1a http blog csdn net ruoyunliufeng article details 37903899 这个4 4 4的三色光立方是我在初学单片机的时候做的一个小项目 很适合给初学单片机和C语言的同学
  • 远程视频监控之应用篇(mjpg-streamer)

    转载请注明出处 xff1a http blog csdn net ruoyunliufeng article details 38515311 这篇文章将主要结合源码介绍mjpg streamer xff0c 使小伙伴们了解视频监控的实现
  • Matplotlib 入门(三):多图合并

    一 多合一显示 1 subplot方法 xff1a 设置行 列和起始点 plt subplot 2 1 1 分成两行一列 xff0c 起始点为1 2 代码 coding utf 8 34 34 34 Created on Sun Sep 2
  • python毫秒级延时

    一 毫秒延时 近期有一个ms级别延时的需求 xff0c 实际测试了一下 xff0c 环境 xff1a win7 64位 xff0c python2 7 13 结果 xff1a 毫秒级别的延时是能够支持的 xff0c 微妙是不支持的 二 de
  • 数据分析之乳腺癌预测

    零 定义问题 1 1 数据介绍 http archive ics uci edu ml machine learning databases breast cancer wisconsin breast cancer wisconsin n