探索性数据分析(EDA)是识别异常数据点、理解不同属性间关系和数据结构、识别重要变量的重要步骤。它有助于提出问题、可视化结果,并为手头的问题选择合适的机器学习算法。在进行EDA时,应始终牢记目标:绘制复杂的图表不是目的,获取有用的洞察才是关键。本文将通过Kaggle上可用的Haberman生存数据集的实例,展示如何进行EDA,以预测接受乳腺癌手术患者的存活率。
该数据集包含了1958年至1970年间在芝加哥大学Billings医院进行的研究案例,研究对象是接受乳腺癌手术的患者的存活情况。数据属性包括:患者手术时的年龄(数值型)、患者手术的年份(年份—1900,数值型)、检测到的阳性腋窝淋巴结数量(数值型)、存活状态(分类属性)1=患者存活5年或更长时间,2=患者在5年内死亡。
首先将数据加载到数据框中:
df = pd.read_csv("/kaggle/input/habermans-survival-data-set/haberman.csv")
df.shape
df.info()
数据包含305行和4列,没有空值。列没有标题,因此为数据集中的列提供有意义的标题:
df.columns = ["age",'year','nodes','status']
df.describe()
观察结果表明,数据中包括年龄在30至83岁之间的患者。手术年份为1958年至1969年。数据集中淋巴结的最大数量为52,平均值约为4。
快速查看“年龄”和“年份”(手术年份)属性的记录计数,得到以下洞察。存活状态为1(存活超过5年或更长时间)的患者比存活状态为2(5年内死亡)的患者多。由于两种存活率的记录数量差异较大,数据是不平衡的。
print(df["status"].value_counts())
print(df["year"].value_counts())
单变量分析是最简单的数据分析形式,它只使用一个变量,因此得名单变量。将使用概率密度函数、累积分布函数、箱线图和小提琴图进行分析。
概率密度函数(PDF)提供了随机变量落在一系列值范围内的概率。绘制了年龄的PDF,并观察到30-34岁的患者存活了5年或更长时间。超过75岁的患者在接受手术的5年内死亡。40-50岁年龄组中,状态2(即在5年内死亡)的患者数量更多。35-40岁年龄组中,状态1(即存活5年或更长时间)的患者数量更多,这个年龄组的患者在接受手术后有较好的存活机会。
还绘制了淋巴结数量的PDF,并观察到数据重叠,但可以注意到0-2个淋巴结的患者存活率较好,随着淋巴结数量的增加,存活率下降。
累积分布函数(CDF)描述了随机变量在CDF计算点的值小于或等于该点的概率。CDF曲线高度重叠,但可以看到,20%的存活患者大约在38岁,而20%未能存活的患者大约在45岁。
箱线图帮助根据四分位数可视化数据分布,并提供数据对称性和偏斜的一些指示。与许多其他数据展示方法不同,箱线图显示了异常值。
在年龄的箱线图中,观察到存活患者的25百分位数大约在42岁,死亡患者的25百分位数大约在46岁。存活患者的中位数大约在52岁,死亡患者的中位数大约在55岁。存活患者的75百分位数大约在60岁,死亡患者的75百分位数大约在61岁。由于数据高度重叠,不能仅根据患者的年龄做出准确结论。
在淋巴结的箱线图中,可以看到一些异常点。存活患者的75百分位数少于4个淋巴结,而未能存活患者的50百分位数有5个淋巴结。淋巴结数量少显然是患者存活的一个贡献因素。
双变量分析旨在使用两个属性在数据集中找到模式/关系。它有助于测试简单的关联。
成对图是一种用于分析的图表,它是一种简单的方法,用于可视化数据之间的关系。为分析产生每个变量与其他变量相关的矩阵。
在成对图中,观察到年龄和年份的点重叠,使得所有点在图表上不清晰可见,这使得难以得出结论。然而,可以看到,年龄较大且淋巴结数量较多的患者通常是状态2(未能存活)的患者。
在多变量分析中,等高线图可以用来表示三维表面在二维平面上的表示。一个变量在水平轴上表示,第二个变量在垂直轴上表示。第三个变量由颜色梯度表示。
在等高线图中,年龄在Y轴上,年份在X轴上,第三个变量是状态=1(手术后5年内成功存活)。观察到,存活的患者大多在1962-1964年间,年龄组在45-55岁之间。
在等高线图中,年龄在Y轴上,年份在X轴上,第三个变量是状态=2(未能存活)。观察到,未能存活的患者大多在1962-1965年间,年龄组在45-50岁之间。