鸢尾花数据集的聚类、降维与可视化分析

作者:十万个为什么2024.02.16 16:43浏览量:27

简介:本文将使用R语言对鸢尾花数据集进行k-means聚类、层次聚类、主成分分析(PCA)降维以及可视化分析,以探索鸢尾花的分类和特征。

千帆应用开发平台“智能体Pro”全新上线 限时免费体验

面向慢思考场景,支持低代码配置的方式创建“智能体Pro”应用

立即体验

在R语言中,我们将使用鸢尾花数据集进行聚类、降维和可视化分析。鸢尾花数据集是一个常用的多变量数据集,包含了150个样本,每个样本有4个特征:花萼长度、花萼宽度、花瓣长度和花瓣宽度。目标是将这150个样本分成三类,并了解其特征。

一、加载数据
首先,我们需要加载R语言的tidyverse包,其中包含了我们需要的所有函数。

  1. library(tidyverse)

二、数据预处理
接下来,我们将加载鸢尾花数据集,并进行一些预处理。

  1. data <- read_csv('iris.csv')

三、k-means聚类分析
我们将使用k-means算法对鸢尾花数据进行聚类。k-means是一种无监督学习方法,它将数据分成k个集群。

  1. k <- 3
  2. set.seed(123) # 为了结果可复现
  3. cluster_result <- kmeans(data[,1:4], centers = k)

我们可以使用summary函数查看聚类结果:

  1. summary(cluster_result)

四、层次聚类分析
接下来,我们将使用层次聚类对数据进行聚类。层次聚类是一种自底向上的方法,它首先将每个样本作为一个集群,然后不断合并最接近的集群,直到达到预设的集群数量。

  1. hclust_result <- hclust(dist(data[,1:4]), method = 'average')

我们可以使用plot函数对层次聚类结果进行可视化:

  1. plot(hclust_result)

五、主成分分析(PCA)降维
主成分分析(PCA)是一种常用的降维方法。它通过找到数据中的主要变化方向,将高维数据投影到低维空间。

我们将使用R语言的prcomp函数进行PCA分析:

  1. pca_result <- prcomp(data[,1:4], scale. = TRUE)

我们可以查看PCA结果中的主成分:

  1. summary(pca_result)

六、可视化分析
为了可视化聚类和降维结果,我们可以使用R语言的ggplot2包。首先,我们将绘制一个散点图,其中x轴表示第一主成分,y轴表示第二主成分:

```r
library(ggplot2)
ggplot(data, aes(x = PC1, y = PC2)) +
geom_point(alpha = 0.5, size = 3) +
theme_minimal() +
labs(title = ‘PCA降维可视化’, x = ‘PC1’, y = ‘PC2’) +
geom_hline(yintercept = mean(PC2), color = ‘red’, linetype = ‘dashed’) +
geom_vline(xintercept = mean(PC1), color = ‘red’, linetype = ‘dashed’) +
scale_color_discrete(labels = c(‘Cluster 1’, ‘Cluster 2’, ‘Cluster 3’)) +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
theme(axis.text.y = element_text(angle = 0)) +
theme(axis.ticks.x = element_blank()) +
theme(axis.ticks.y = element_blank()) +
theme(panel.grid.major = element_blank()) +
theme(panel.grid.minor = element_blank()) +
theme(legend.position = ‘none’) +
theme(plot.title = element_text(size = 18)) +
theme(axis.title.x = element_text(size = 14)) +
theme(axis.title.y = element_text(size = 14)) +
geom_label_repel(data = data %>% filter(!is.na(PC1)), aes(label = Species), nudge_x = -0.5) +

article bottom image

相关文章推荐

发表评论

图片