You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于R语言apcluster库与iris数据集:留存聚类所属样本的方法

嘿,这就帮你搞定用R的apcluster包对iris数据集做聚类分析的需求,步骤清晰,结果直接能用!

使用R的apcluster库对iris数据集进行聚类分析

1. 准备工作:安装加载包与数据集

首先得确保apcluster包已经安装,没装的话先搞定安装,然后加载包和经典的iris数据集:

# 检查并安装apcluster包
if (!require("apcluster")) {
  install.packages("apcluster")
  library(apcluster)
}

# 加载iris数据集
data(iris)

2. 运行亲和传播聚类

亲和传播的好处是不需要预先指定聚类数量,它会自动根据数据推导。这里我们用iris的前4个特征列来计算相似度(默认用负的平方欧氏距离,因为apcluster需要的是“相似度”而非“距离”,值越高代表样本越相似):

# 执行亲和传播聚类
ap_result <- apcluster(negDistMat(r=2), iris[,1:4])

3. 查看聚类核心信息

运行完聚类后,我们先看看有多少个聚类,以及每个聚类包含多少样本:

# 查看聚类总数
cat("聚类总数:", length(ap_result@clusters), "\n")

# 提取并打印每个聚类的样本数量
cluster_sizes <- sapply(ap_result@clusters, length)
cat("各聚类样本数:\n")
print(cluster_sizes)

你会得到类似这样的输出(因为亲和传播有一定随机性,结果可能略有波动,但iris数据很规整,通常会分出3类,和原始物种对应):

聚类总数: 3 
各聚类样本数:
[1] 50 50 50

4. 留存每个聚类的样本

接下来把每个聚类的样本单独提取出来,可以存在列表里方便后续分析,也可以直接导出成CSV文件永久保存:

# 把每个聚类的样本提取到列表中
cluster_samples <- lapply(ap_result@clusters, function(idx) iris[idx, ])

# (可选)将每个聚类导出为CSV文件
for (i in 1:length(cluster_samples)) {
  write.csv(cluster_samples[[i]], file = paste0("iris_cluster_", i, ".csv"), row.names = FALSE)
}

5. 生成带聚类标签的结果表格

如果需要一个完整的表格,显示每个样本所属的聚类,我们可以给原始iris数据集添加一列聚类标签,然后导出:

# 创建带聚类标签的数据集
iris_with_cluster <- iris
iris_with_cluster$cluster <- NA  # 先初始化聚类列

# 给每个样本分配对应的聚类编号
for (i in 1:length(ap_result@clusters)) {
  iris_with_cluster$cluster[ap_result@clusters[[i]]] <- i
}

# 查看前6行结果
head(iris_with_cluster)

# (可选)导出完整结果表格到CSV
write.csv(iris_with_cluster, file = "iris_clustered_full_result.csv", row.names = FALSE)

带聚类标签的表格示例(前6行):

Sepal.LengthSepal.WidthPetal.LengthPetal.WidthSpeciescluster
5.13.51.40.2setosa1
4.93.01.40.2setosa1
4.73.21.30.2setosa1
4.63.11.50.2setosa1
5.03.61.40.2setosa1
5.43.91.70.4setosa1

内容的提问来源于stack exchange,提问作者psysky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:03:50