问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

主成分分析中的数据标准化处理与可视化

创作时间:
作者:
@小白创作中心

主成分分析中的数据标准化处理与可视化

引用
CSDN
1.
https://m.blog.csdn.net/2301_79425796/article/details/142710843

主成分分析(PCA)是一种常用的数据降维技术,广泛应用于数据科学和统计学领域。在进行PCA之前,对原始数据进行标准化处理是非常重要的一步。本文将详细介绍为什么需要对数据进行标准化处理,以及如何使用R语言实现这一过程,并通过可视化手段展示标准化后的数据分布情况。

为什么需要对数据进行标准化处理?

在进行主成分分析时,不同变量的量纲不同可能会导致方差较大的变量对结果产生更大的影响。例如,100米赛跑时间的单位为秒,而跳远成绩的单位为米。如果直接将这些变量放入PCA模型中,方差较大的变量可能会主导分析结果,从而影响模型的准确性和可靠性。

为了避免这种情况,我们需要对数据进行标准化处理,使每个变量的平均值为0,标准差为1。这样可以确保所有变量在同一个量级上,具有可比性。

如何使用R语言进行数据标准化处理?

在R语言中,可以使用scale()函数对数据进行标准化处理。下面是一个具体的示例:

# 使用scale()函数对data.decathlon数据集进行标准化处理,生成新的标准化数据集sac.decathlon
sac.decathlon <- scale(data.decathlon, center = TRUE, scale = TRUE)
# 参数center = TRUE表示对每个变量进行去中心化处理,即每个变量的每个值减去该变量的均值,使数据的均值为0
# 参数scale = TRUE表示对每个变量按标准差进行缩放处理,即将每个变量的每个值除以该变量的标准差,使数据的标准差为1
# 这样处理的目的是消除不同量纲之间的差异,使各个变量在相同的尺度上,便于后续的主成分分析

标准化处理后的数据可以通过head()函数查看前10行的情况:

head(sac.decathlon,10)

结果如下:

                X100m  Long.jump    Shot.put  High.jump       X400m X110m.hurdle      Discus  Pole.vault
SEBRLE     0.16961999  0.7309898  0.34273202  0.7516136  0.51314871   0.41119004 -0.31969777  0.70789965
CLAY      -0.82443206  0.1195250 -0.33874677 -1.4451128  0.06291188  -0.94999079  1.70943959  0.32409863
BERNARD    0.09861628 -0.4579695 -0.35070253 -0.8174767 -0.38732495   1.04924356 -1.15813616  1.85930269
YURKOV     1.23467576 -0.9335532  0.77313968  1.0654317  1.13734067   1.72983397  0.41102458 -0.44350339
ZSIVOCZKY  0.48913672 -0.2201776 -1.27129669  0.1239775 -0.70453726  -0.69476938  0.23926116 -1.59490643
McMULLEN  -0.57591905 -0.1862074 -0.93653518  1.3792498  0.61547526  -0.24813192 -0.12755563 -1.59490643
MARTINEAU  2.29973153 -1.8847206  0.03188205 -0.5036586  0.85082633   0.92163285  0.80113133  0.32409863
HERNU      1.34118134  0.6630493 -0.15941024 -1.4451128  1.83316122   1.19812271  0.04129654 -0.05970238
BARRAS     1.19917390 -1.3411964 -0.54199483 -0.5036586  0.17547109  -0.03544742 -0.80005309 -0.44350339
NOOL       1.19917390 -0.3220884 -2.22775815 -0.1898406 -0.11104326   1.68729707 -2.01695326 -0.82730441
            Javeline     X1500m
SEBRLE     0.9313823  1.2914594
CLAY       0.3502507  2.2516981
BERNARD    0.8510944  0.1548503
YURKOV     0.9791728 -0.2076888
ZSIVOCZKY -0.5635022 -1.0307506
McMULLEN  -0.3723405  0.6447680
MARTINEAU -1.1446338 -1.6088535
HERNU     -0.2155879  0.6447680
BARRAS    -0.5577674  0.3410190
NOOL      -0.1677975 -1.1679275  

如何可视化标准化后的数据分布?

为了更好地了解标准化后的数据分布,我们可以使用plot()函数结合density()函数来呈现数据的密度分布:

plot(density(sac.decathlon))

上述代码将生成标准化后的数据密度图。以下是密度图的解读:

  • 横轴 (X 轴) 表示标准化后的数据值。标准化后的数据均值为 0,标准差为 1,因此横轴上显示的是标准化后的标准分数 (z-scores),范围大致在 -3 到 3 之间。这些分数表示标准化后各变量相对于其均值的偏离程度,例如,-1 表示数据点比均值低一个标准差,而 2 表示数据点比均值高两个标准差。
  • 纵轴 (Y 轴) 表示密度 (Density),表示每个标准化值附近的概率密度。这个密度的目的是描述数据在各个标准化值区域的分布情况。纵轴的数值可以理解为某个标准化值的频率的相对比例,但不是绝对频率。
  • 曲线的形状 图中的密度曲线呈现出一个单峰的钟形,类似于标准正态分布。这表明标准化后的数据大致符合正态分布,数据集中大多数标准化值集中在 0 附近,表示大部分运动员的表现接近平均水平。两侧逐渐下降的曲线则代表有较少的运动员表现明显优于或低于平均水平。
  • 峰值 密度曲线的峰值位于接近 0 的位置,表示大多数数据点集中在标准化后的均值附近。这符合标准化处理的预期,说明数据的中心位置在 0,且经过缩放后,变量的分布较为对称。
  • 宽度 曲线的宽度表示数据的离散程度,数据分布越宽,表明标准化后的数据离散程度越大;越窄则表明数据的集中程度更高。从图中可以看到,数据集中约 95% 的值位于 -2 和 2 之间,这也符合标准正态分布的 95% 范围。

此外,图中还显示了以下信息:

  • **N = 270 **表示数据集中总共有 270 个观测值(27 个运动员 × 10 个变量)。
  • Bandwidth = 0.2821: 表示密度估计时使用的带宽 (bandwidth) 参数。带宽控制了密度曲线的平滑程度,值越小曲线越细致,值越大曲线越平滑。在此图中,带宽的值为 0.2821,说明曲线是经过适度平滑处理的,以便更好地显示数据的整体趋势。

这张密度图用于直观地检查数据标准化后的分布情况。标准化的目标是消除不同量纲的影响,使得各变量在同一尺度上进行比较。图中呈现出的接近正态分布的形状,表明标准化处理有效地将数据平衡在了同一个尺度上,便于后续进行主成分分析等进一步的多变量分析。

通过观察该密度图,我们可以验证标准化的效果是否符合预期,并为后续的分析提供基础。如果密度分布明显偏斜或有多个峰值,这可能提示我们数据中存在异常值或不同类别的样本,这需要进一步的处理或分类分析。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号