机器学习之乳腺癌预测

本文通过分析乳腺癌数据集,利用机器学习进行二分类预测,探讨了数据的描述性统计、可视化分析、预处理与特征工程,以及不同模型如决策树、线性判别分析、贝叶斯分类、逻辑回归、KNN和支持向量机的性能比较。

(一)问题分析

1.问题背景

乳腺癌是女性最常见的恶性肿瘤,占美国女性确诊癌症的近三分之一,是女性癌症死亡的第二大原因。 乳腺癌是乳房组织细胞异常生长的结果,通常称为肿瘤。 肿瘤并不意味着癌症——肿瘤可以是良性(非癌性)、恶性前(癌前)或恶性(癌性)。 MRI、乳房X光检查、超声波和活组织检查等测试通常用于诊断所进行的乳腺癌。

2.问题分析

原理:乳房细针抽吸 (FNA) 测试鉴定乳腺癌(这是一种快速且简单的程序,该程序可以从乳房病变或囊肿(肿块、溃疡或肿胀)中取出一些液体或细胞,用类似于 血样针)。
通过检测数据和标签构建模型,实现对乳腺癌肿瘤进行分类:

1 = 恶性 (癌性)
0 = 良性 (非癌性)
很明显,这是一个二分类问题。

3.题目所需的代码及数据

链接:https://pan.baidu.com/s/1UC8yFGZUk7wJtUIjTpj-Mg
提取码:0929

(二).导入数据

1. 认识数据集

数据集中的前两列分别存储样本的唯一 ID 号和相应的诊断(M=恶性,B=良性)。
第 3-32 列包含 30 个实值特征,这些特征是根据细胞核的数字化图像计算得出的,可用于构建模型来预测肿瘤是良性还是恶性。

为每个细胞核计算十个实值特征:
a) 半径(从中心到周边点的平均距离)
b) 纹理(灰度值的标准偏差)
c) 周长
d) 面积
e) 平滑度(半径长度的局部变化)
f) 紧凑性(周长^2/面积 - 1.0)
g) 凹度(轮廓凹入部分的严重程度)
h) 凹点(轮廓凹入部分的数量)
i) 对称性
j) 分形维数(“海岸线近似” - 1

2.导入数据

#load libraries
import matplotlib.pyplot
import matplotlib.pyplot as plt
import numpy as np         # linear algebra
import pandas as pd        # data processing, CSV file I/O (e.g. pd.read_csv)

data = pd.read_csv('data/data.csv', index_col=False,)
print("输出一下数据的行列数:",end="")
print(data.shape)
print("输出一下数据的信息:")
data.info()
data.dtypes.value_counts
#检查缺少的变量
data.isnull().any()
data.diagnosis.unique()
print("将修改过后的数据保存到新csv文件中(保存dataframe的更新版本以备将来分析)")
data.to_csv('data/clean-data.csv')

# 查看数据前两行
print(data.head(2))
# 对标签进行统计

#良性:恶性 大约为21. 在机器学习中最好是正负样本11,但是21也可以进行正常的分类预测。
data.diagnosis.value_counts().plot(kind = "bar")
plt.title("Show me the ratio of benign to malignant")
matplotlib.pyplot.show()

3.数据概述

总共30个特征,分别是对10个实值特征计算,mean, se, worst
diagnosis 列为标签
数据无空值

(三)EDA 数据探索性分析

探索性数据分析(EDA)是一个非常重要的步骤,应该在任何建模之前完成。这是因为数据科学家能够在不做假设的情况下理解数据的性质。数据探索主要是掌握,数据的结构,值的分布,在数据集中是否存在异常值,特征间相互关系。
主要包括:

描述性统计分析
数据可视化

1.描述性统计分析

A.查看数据维度(行列数)

输出一下数据的行列数:(569, 32)

B.数据统计描述(列名对应的信息)

输出一下数据的信息:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 569 entries, 0 to 568
Data columns (total 32 columns):
 #   Column                   Non-Null Count  Dtype  
---  ------                   --------------  -----  
 0   id                       569 non-null    int64
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值