Haberman癌症生存数据集分析

在本文中,将深入探讨Haberman癌症生存数据集的数据分析和探索。数据探索是理解数据并从中得出结论的首要步骤。将了解数据探索和分析的过程,以及如何根据目标进行数据探索。

数据探索的前提:数据获取

在开始数据探索之前,需要确保数据的可用性。通常情况下,数据以CSV文件格式获取,这使得数据处理变得相对容易。如果数据可用性不佳,则需要进行大量的搜索和数据清洗工作,以便开始数据探索。需要考虑数据源是否可信,以及是否需要获得使用数据的权限。

对于Haberman癌症生存数据集,可以通过以下链接下载数据集:

https://www.kaggle.com/gilsousa/habermans-survival-data-set

获取数据后,将使用以下指标来理解数据集:

  • 属性数量
  • 将数据分类为因变量/类属性和自变量/特征
  • 理解每个属性
  • 每个属性的数据类型
  • 检查是否有缺失属性
  • 评估属性在实现目标中的相关性/帮助性

可以使用Pandas库中的DataFrame对象的shape方法来计算整个实例的数量以及属性的数量。同时,可以使用columns方法来检查数据集中的列名。以下是Python代码示例:

import pandas as pd haberman = pd.read_csv("haberman.csv") print(haberman.columns) print(haberman.shape)

上述代码将提供数据集包含的信息以及其形状(即实例数量和列数量)。

类属性/因变量

数据集中的类属性/因变量决定了数据集的平衡性。实例在每个类别上的分布决定了数据集的平衡性。在这个数据集中,“生存年数”是类属性。对于所有实例,“生存年数”属性的值要么是1,要么是2。

“生存年数”属性的值如下:

  • 1表示手术后生存时间少于5年
  • 2表示手术后生存时间超过5年

在数据集中,类别1的实例数量较多,而类别2的实例数量大约是类别1的三分之一。整个实例的类别属性分布如下:

import pandas as pd haberman = pd.read_csv("haberman.csv") print(haberman["Survival years"].value_counts())

自变量用于数据分析和机器学习模型训练,以确定/预测类属性/s。数据分析可以通过绘图进一步进行。可以使用单变量/双变量和多变量分析,并从中得出结论。

单变量分析

单变量分析集中于一个变量。使用直方图和pdf曲线(连续线覆盖直方图)来查看一个自变量的范围。Distplot函数结合了seaborn模块中的kde图和rug图函数以及matplotlib模块中的hist函数。

将“手术年份”属性与类属性“生存年数”进行对比。相同的图表可以获得,并且可以理解自变量在每个实例范围的行为,如X轴上显示的,在Y轴上的类属性上。

在下面的图表中,可以看到“手术年份”属性的重叠,这可以说是一个严峻的情况,因为这使得对“手术年份”属性在类属性“生存年数”上的分类变得困难,即如果“手术年份”属性均匀分布在类属性上,那么分布范围将使分类变得容易和可用。

重叠可以通过不同颜色的区域来识别,这在图例中没有显示。以下是Python代码示例:

import pandas as pd import seaborn as sns import matplotlib.pyplot as plt import numpy as np haberman = pd.read_csv("haberman.csv") sns.FacetGrid(haberman, hue="Survival years", size=12).map(sns.distplot, "Operation Year").add_legend() plt.show()

其他两个自变量在尝试对类属性“生存年数”进行分类时,分布方式与“手术年份”属性相同。

患者年龄分布

以下是Python代码示例,展示患者年龄分布:

import pandas as pd import seaborn as sns import matplotlib.pyplot as plt import numpy as np haberman = pd.read_csv("haberman.csv") sns.set_style("whitegrid") sns.FacetGrid(haberman, hue="Survival years", size=3).map(sns.distplot, "Patient Age").add_legend() plt.show()

节点数量分布

以下是Python代码示例,展示节点数量分布:

import pandas as pd import seaborn as sns import matplotlib.pyplot as plt import numpy as np haberman = pd.read_csv("haberman.csv") sns.set_style("whitegrid") sns.FacetGrid(haberman, hue="Survival years", size=3).map(sns.distplot, "Num of nodes").add_legend() plt.show()

累积分布函数(CDF)与概率密度函数(PDF)

CDF和PDF可以帮助了解自变量在类属性范围内的分布。以下是患者年龄CDF和PDF的图表。橙色曲线是患者年龄自变量针对类属性“生存年数”的CDF,类别为1(即手术后生存时间少于5年的患者)。CDF提供了患者年龄的信息,例如所有患者年龄都大于70岁,对于所有手术后生存时间不超过5年的患者,一半患者的年龄在50到60岁之间。下图中的蓝线是PDF,显示了患者年龄在年龄范围内的分布,随着NumPy模块直方图方法中bin大小的增加,PDF可以更具体地为所有点绘制。

以下是Python代码示例,展示患者年龄CDF和PDF:

import pandas as pd import seaborn as sns import matplotlib.pyplot as plt import numpy as np haberman = pd.read_csv("haberman.csv") haberman_Survival_years = haberman.loc[haberman["Survival years"] == 1] counts, bin_edges = np.histogram(haberman_Survival_years["Patient Age"], bins=10, density=True) pdf = counts / (sum(counts)) cdf = np.cumsum(pdf) plt.plot(bin_edges[1:], pdf) plt.plot(bin_edges[1:], cdf) plt.show()

双变量分析

双变量分析通过在每个轴上绘制两个变量,并使用颜色对数据点进行分类,以对类属性进行分类。双变量图是一种数据可视化技术,用颜色对类属性进行分类,并绘制所有可能的两个自变量组合。

import pandas as pd import seaborn as sns import matplotlib.pyplot as plt import numpy as np haberman = pd.read_csv("haberman.csv") sns.pairplot(haberman, hue="Survival years", size=3).add_legend() plt.show() https://plotly.com/python/3d-scatter-plots/
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485