【发布时间】:2020-06-28 21:05:25
【问题描述】:
菜鸟在这里寻求帮助。
所以我正在使用 Affinity 传播 APcluster 对数据集进行一些聚类。 现在我有几个问题想要解决:
1:可视化,显然 Plot() 函数不喜欢我的表,当有超过 15 个特征时。有什么方法可以绕过吗?
2:与1相关,所以我想我可以通过使用PCA来减少表中的特征,或者检查相关性。前者会给我 2-3 个关键组件来使用,后者应该允许我消除多余的组件。但是,PCA 做得并不好,PCA1 和 2 只占 22%……
所以有没有机会构建一个循环,在这个循环中我可以从表中随机选择一个特征并将其删除,使用剩余的特征运行 APcluster,并为所有特征迭代这个过程。并比较得到的聚类结果,看看哪些特征是冗余的,哪些特征是关键角色。
显然,这需要知道什么是好的结果。这个问题 2 部分是我不知道如何在编码和聚类知识方面实现的地方。真的很感激一些指导。
下面是最小的模拟数据和我的 APcluster 代码:
#minimum dataset
Id <- c(1:30)
timestamp <- rep(c("20200512","20180212","20181204" ),10)
f_1 <- runif (30, 0.0, 20)
f_2 <- runif (30, 0.0, 500)
f_3 <- runif (30, 0.0, 15)
f_4 <- runif (30, 0.0, 8.6)
f_5 <- runif (30, 0.0, 200)
f_6 <- runif (30, 0.0, 250)
f_7 <- runif (30, 0.0, 2000)
f_8 <- runif (30, 0.0, 35)
f_9 <- runif (30, 0.0, 20)
f_10 <- runif (30, 0.0, 14)
f_11 <- runif (30, 0.0, 10)
f_12 <- runif (30, 0.0, 89)
df <- data.frame(Id,timestamp,f_1,f_2,f_3,f_4,f_5,f_6,f_7,f_8,f_9,f_10,f_11,f_12)
#drop labels
sampleID <- df$Id
Time <- df$timestamp
sampleID <-NULL
Time <- NULL
#scale numerical data
scaled_df <- scale(df[,3:14])
#APcluster
library(apcluster)
apres <- apcluster(negDistMat(r=2), scaled_df, details=TRUE)
show(apres)
plot(apres, df)
【问题讨论】:
标签: r cluster-analysis feature-selection