欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 数据分析与可视化实战:从鸢尾花到乳腺癌数据集

数据分析与可视化实战:从鸢尾花到乳腺癌数据集

2025/5/4 6:51:20 来源:https://blog.csdn.net/loopdeloop/article/details/147686326  浏览:    关键词:数据分析与可视化实战:从鸢尾花到乳腺癌数据集

数据分析是现代数据科学中不可或缺的一部分,它帮助我们理解数据、发现模式并做出明智的决策。本文将分享两个实战案例:鸢尾花数据集分析和乳腺癌数据集预处理,展示如何使用Python进行数据探索和可视化。

鸢尾花数据集分析

数据加载与基本统计

我们首先从UCI机器学习库加载著名的鸢尾花数据集:

data = pd.read_csv('http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data', header=None)
data.columns = ['花萼长度', '花萼宽度', '花瓣长度', '花瓣宽度', '类别']

数据集包含150个样本,每个样本有4个特征(花萼长度、花萼宽度、花瓣长度、花瓣宽度)和1个类别标签(3种鸢尾花)。

我们对数值型特征进行基本统计:

for col in data.columns:if is_numeric_dtype(data[col]):print('%s:' % (col))print('\t 平均值 = %.2f' % data[col].mean())print('\t 标准差 = %.2f' % data[col].std())print('\t 最小值 = %.2f' % data[col].min())print('\t 最大值 = %.2f' % data[col].max())

数据可视化

  1. ​直方图​​:展示花萼长度的分布
data['花萼长度'].hist(bins=8)
plt.title('花萼长度分布直方图')
  1. ​箱线图​​:比较四个特征的分布
numeric_data.boxplot()
plt.title('鸢尾花数据箱线图')
  1. ​散点图矩阵​​:展示特征间的关系
fig, axes = plt.subplots(3, 2, figsize=(12, 12))
# 绘制所有两两特征的散点图
  1. ​平行坐标图​​:展示多变量数据
parallel_coordinates(data_zh, '类别')
plt.title('鸢尾花数据平行坐标图')

乳腺癌数据集预处理

数据加载与初步探索

data = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data', header=None)
data.columns = ['Sample code', 'Clump Thickness', 'Uniformity of Cell Size', 'Uniformity of Cell Shape','Marginal Adhesion', 'Single Epithelial Cell Size', 'Bare Nuclei', 'Bland Chromatin','Normal Nucleoli', 'Mitoses','Class']

数据清洗

  1. ​处理缺失值​​:
data = data.replace('?',np.NaN)
print('Number of missing values:')
for col in data.columns:print('\t%s: %d' % (col,data[col].isna().sum()))
  1. ​填充缺失值​​:
data2 = data2.fillna(pd.to_numeric(data2, errors='coerce').median())
  1. ​处理离群值​​:
Z = (data2-data2.mean())/data2.std()
Z2 = Z.loc[((Z > -3).sum(axis=1)==9) & ((Z <= 3).sum(axis=1)==9),:]
  1. ​处理重复值​​:
dups = data.duplicated()
data2 = data.drop_duplicates()

数据采样与分箱

  1. ​随机采样​​:
sample = data.sample(n=3)  # 简单随机采样
sample = data.sample(frac=0.01, random_state=1)  # 按比例采样
sample = data.sample(frac=0.01, replace=True, random_state=1)  # 有放回采样
  1. ​数据分箱​​:
bins = pd.cut(data['Clump Thickness'],4)  # 等宽分箱
bins = pd.qcut(data['Clump Thickness'],4)  # 等频分箱

图像数据降维

我们尝试对食物图片进行PCA降维:

numComponents = 2
pca = PCA(n_components=numComponents)
pca.fit(imgData)
projected = pca.transform(imgData)

通过散点图可视化降维结果,可以看到不同类别食物在PCA空间中的分布。

在数据科学和机器学习的世界中,数据预处理和可视化是构建有效模型的基础步骤。本文将通过实例,深入探讨数据预处理的关键技术和强大的可视化方法,帮助您更好地理解和处理数据。

1. 数据预处理:解决数据质量问题

1.1 处理缺失值

在真实数据集中,缺失值是一个常见问题。以乳腺癌威斯康星数据集为例,我们可以看到"Bare Nuclei"属性中存在缺失值(用问号表示)。

处理缺失值的常见方法:

  • 中位数/均值替换:用属性的中位数或均值替换缺失值
  • 丢弃记录:删除包含缺失值的整条记录
# 将'?'替换为NaNdata = data.replace('?', np.NaN)# 使用中位数替换缺失值data['Bare Nuclei'] = data['Bare Nuclei'].fillna(pd.to_numeric(data['Bare Nuclei'], errors='coerce').median())# 或者丢弃缺失值记录data_no_na = data.dropna()

1.2 识别和处理异常值

# 使用Z分数识别异常值Z = (data_numeric - data_numeric.mean()) / data_numeric.std()# 移除Z分数绝对值大于3的异常值data_clean = Z.loc[((Z > -3).sum(axis=1) == 9) & ((Z <= 3).sum(axis=1) == 9), :]

异常值会显著影响统计分析和模型性能。使用箱线图和Z分数是检测异常值的有效方法。

1.3 处理重复数据

数据集中的重复记录会导致模型过拟合特定实例,影响泛化能力

# 检测重复行dups = data.duplicated()print('重复行数 = %d' % (dups.sum()))# 移除重复行data_unique = data.drop_duplicates()

2. 数据转换与采样技术

2.1 数据聚合

数据聚合可以减少数据波动,提供更清晰的趋势视图。以底特律降水量数据为例,我们可以从每日数据聚合到月度或年度视图。

# 按月聚合monthly = daily.groupby(pd.Grouper(freq='M')).sum()# 按年聚合annual = daily.groupby(pd.Grouper(freq='Y')).sum()

每个级别的聚合都显示不同波动程度的趋势,年度数据的方差显著小于每日数据。

2.2 数据采样

在处理大型数据集时,采样可以减少计算负担:

# 不放回采样sample = data.sample(frac=0.01, random_state=1)# 放回采样sample = data.sample(frac=0.01, replace=True, random_state=1)

2.3 数据离散化

将连续属性转换为离散值有助于减少过拟合并提高模型解释性:

# 等宽离散化bins = pd.cut(data['Clump Thickness'], 4)# 等频离散化bins = pd.qcut(data['Clump Thickness'], 4)

3. 数据降维技术

3.1 主成分分析(PCA)

PCA是降低数据维度的强大工具,特别适用于高维数据如图像:

numComponents = 2pca = PCA(n_components=numComponents)pca.fit(imgData)projected = pca.transform(imgData)

通过降维,我们可以在低维空间中识别不同类别的项目,如食物图像分类中的汉堡、饮料、意大利面和鸡肉。

4. 数据可视化技术

在探索鸢尾花数据集时,我们使用了多种可视化技术:

4.1 单变量可视化

直方图和箱线图展示单个属性的分布:

# 直方图data['花萼长度'].hist(bins=8)# 箱线图numeric_data.boxplot()

4.2 多变量可视化

散点图和平行坐标图帮助理解属性间的关系:

·

# 不同类别的散点图for cls in data['类别'].unique():subset = data[data['类别'] == cls]plt.scatter(subset[data.columns[i]], subset[data.columns[j]], label=cls)# 平行坐标图parallel_coordinates(data_zh, '类别')

这些可视化方法揭示了鸢尾花品种间的差异和属性间的相关性。例如,花瓣长度和宽度在区分品种上比花萼尺寸更有效。

5. 实践应用案例

5.1 气候数据分析

通过底特律机场的降水数据(DTW_prec.csv),我们可以观察不同时间尺度的气候模式:

  • 日降水量显示高度变异性
  • 月度和年度聚合展示更清晰的季节性和年度趋势

5.2 鸢尾花分类

鸢尾花数据集分析显示:

  • 三个品种在花瓣尺寸上有明显区别
  • 平行坐标图清晰展示了各属性在品种间的变化
  • 散点图矩阵揭示了哪些属性组合最有效区分品种

总结

数据预处理和可视化是数据科学工作流中不可或缺的环节。通过适当的预处理技术,我们可以处理现实数据中的各种问题;通过有效的可视化方法,我们能更深入地理解数据结构和模式。这些基础技能不仅对数据分析至关重要,也是构建可靠机器学习模型的前提条件。

总结

本文通过两个经典数据集展示了数据分析的全流程:

  1. ​数据探索​​:了解数据结构和基本统计量
  2. ​数据清洗​​:处理缺失值、离群值和重复值
  3. ​数据可视化​​:使用多种图表揭示数据特征
  4. ​数据预处理​​:采样、分箱和降维

这些技术是数据科学项目的基础,掌握它们将帮助你更好地理解和处理各种数据集。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词