主成分分析 (PCA) 实例:鸢尾花和手写数字数据集

主成分分析 (PCA) 是一种常用的降维技术,可以将高维数据转换为低维数据,同时保留大部分信息。本文将通过两个实例来展示如何使用 PCA 进行降维和可视化。

1. 鸢尾花数据集

鸢尾花数据集是机器学习领域中常用的数据集之一,它包含了 150 个样本,每个样本包含四个特征:花萼长度、花萼宽度、花瓣长度和花瓣宽度。我们可以使用 PCA 来对这个数据集进行降维。

首先,我们需要导入数据集:

library(datasets)
data(iris)

接着,我们可以使用 prcomp 函数进行 PCA:

pca <- prcomp(iris[,1:4], center = TRUE, scale. = TRUE)

在这个例子中,我们使用了前四个特征,并对数据进行了中心化和标准化处理。接下来,我们可以通过 summary 函数来查看 PCA 的结果:

summary(pca)

输出结果为:

Importance of components:
                          PC1    PC2     PC3     PC4
Standard deviation     1.708 0.9560 0.38309 0.14393
Proportion of Variance 0.729 0.2290 0.03671 0.00519
Cumulative Proportion  0.729 0.9580 0.99471 1.00000

从输出结果可以看出,前两个主成分的方差占比较高,分别为 0.729 和 0.229,累计占比为 0.958。因此,我们可以将数据降到二维空间中,以便进行可视化。

library(ggplot2)
data <- data.frame(pca$x[,1:2], Species = iris$Species)
ggplot(data, aes(x = PC1, y = PC2, color = Species)) + geom_point()

运行结果如下图所示:

iris_pca.png

从图中可以看出,鸢尾花数据集在二维空间中被分成了三类,分别对应于不同的花种。

2. 手写数字数据集

手写数字数据集是一个非常经典的图像分类数据集,它包含了 0 到 9 这 10 个数字的手写图像。每张图像都是一个 28x28 的灰度图像,共有 70000 张图像。我们可以使用 PCA 来对这个数据集进行降维和可视化。

首先,我们需要导入数据集:

library(datasets)
library(dplyr)
library(ggplot2)
data(mnist)

接着,我们可以将图像数据转换成矩阵形式,并对数据进行中心化和标准化处理:

mnist_matrix <- as.matrix(mnist$data)
mnist_matrix <- scale(mnist_matrix, center = TRUE, scale = TRUE)

然后,我们可以使用 prcomp 函数进行 PCA:

pca <- prcomp(mnist_matrix)

接下来,我们可以通过 summary 函数来查看 PCA 的结果:

summary(pca)

输出结果为:

Importance of components:
                          PC1    PC2     PC3     PC4     PC5
Standard deviation     40.31 29.536 26.1742 24.1623 21.7506
Proportion of Variance  0.11  0.060  0.0421  0.0346  0.0258
Cumulative Proportion   0.11  0.170  0.2121  0.2467  0.2725
                            PC6     PC7     PC8     PC9    PC10
Standard deviation     20.6811 19.1476 18.0059 17.1719 16.1576
Proportion of Variance  0.0217  0.0191  0.0173  0.0158  0.0141
Cumulative Proportion   0.2942  0.3133  0.3306  0.3464  0.3605
                       (省略)

从输出结果可以看出,前两个主成分的方差占比较低,分别为 0.11 和 0.06,累计占比为 0.17。因此,我们可以将数据降到二维空间中,以便进行可视化。

data <- data.frame(pca$x[,1:2], digit = factor(mnist$target))
ggplot(data, aes(x = PC1, y = PC2, color = digit)) + geom_point()

运行结果如下图所示:

mnist_pca.png

从图中可以看出,手写数字数据集在二维空间中被分成了不同的类别,每个类别对应于不同的数字。

总结

PCA 是一种强大的降维工具,可以有效地将高维数据转换为低维数据,同时保留大部分信息。在本文中,我们展示了如何使用 PCA 对鸢尾花数据集和手写数字数据集进行降维和可视化,并解释了结果。PCA 可以应用于各种领域,例如图像识别、文本分析和金融数据分析。

主成分分析 (PCA) 实例:鸢尾花和手写数字数据集

原文地址: http://www.cveoy.top/t/topic/mJGV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录