终于明白:PCA才是离群点的终极克星!
本期主角-PCA图。
主成分分析方法 (Principal Component Analysis, PCA) 是一种使用广泛的机器学习数据降维算法,其将高维数据投影到低维空间(通常是二维或三维),但保留数据的主要特征。PCA图所做的事就是对二维或三维数据绘图,以展示数据的分布。
通过“1.4.8 iris数据集”,用人话来说PCA:
通过PCA“压缩”4列数值变量(以上前4列:花萼长度、宽度,花瓣长度、宽度)到 ;
2 列数值变量(PC1和PC2得分),即2维,新数据为150行、3列(species数据不变); 3 列数值变量(PC1、PC2和PC3得分),即3维,新数据为150行、4列(species数据不变);
PCA“压缩”方法R或Python中都有现成的轮子!
下面使用R简单实现PCA 2维和3维结果数据可视化。
PCA 2维结果数据可视化
这里使用ggpca实现,mode = "pca"则完成了PCA“压缩”原始iris_data数据,
## 24.1_01
# 未经过允许禁止转载!
# @Author : 公众号:pythonic生物人
# @Desc : 24.1 2D PCA图
ggpca(iris_data,
metadata_cols = "species", # 指定元数据列为物种
mode = "pca", # 使用 PCA 模式
color_var = "species", # 按物种设置颜色
ellipse = TRUE# 显示分组椭圆
) +
geom_point(
aes(color = species, fill = species), # 确保颜色和填充由物种控制
shape = 21, size = 3, stroke = 0.5, alpha = 0.8, color = "black"
)
每个点代表一个样本,点之间的距离反映它们在降维空间中的相似性或差异性,同时添加了分组椭圆。
样本落在椭圆之外太远,暗示该点可能是个离群点,通常只有在严重离群(例如,为了圈某一个样本点,椭圆都拉成三角形了)才会考虑删掉该样本。
PCA 3维结果数据可视化
这里使用scatterplot3d实现,prcomp(iris_data[, 1:4], scale. = TRUE) 则完成了PCA“压缩”原始iris_data数据,
## 24.2_01
# 未经过允许禁止转载!
# @Author : 公众号:pythonic生物人
# @Desc : 24.2 3D PCA图
pca_res <- prcomp(iris_data[, 1:4], scale. = TRUE) # 计算 PCA,标准化数据
# 绘制 3D PCA 图
scatterplot3d(
pca_res$x[, 1:3], # 使用前三个主成分(PC1, PC2, PC3)
color = "black", # 点轮廓颜色
bg = colors, # 背景填充颜色
pch = 21, # 使用带边框的圆点
cex.symbols = 1.5, # 点大小
lwd = 0.5, # 边框线宽
xlab = "PC1", ylab = "PC2", zlab = "PC3"# 轴标签
)
相比于2维PCA图,3D图只是多了一个PC3组分,效果类似。
获取绘图代码+测试数据+数据处理方法+依赖包安装方法,
👇加入学习(备注:071)