【问题标题】:k-medoids: control same agreement on class labelk-medoids:控制类标签上的相同协议
【发布时间】:2022-01-06 19:52:12
【问题描述】:

我在控制两个类标签(1 和 2)的模式时遇到问题,导致使用 k-medoids 进行分类任务。我想在两个区域 (ID) g2g3 应用 cluster::clara,并为这两个区域应用相同的分类标签,在我的示例中:

# Packages
library(cluster)
library(ggplot2)

my_ds <-read.csv("https://raw.githubusercontent.com/Leprechault/trash/main/class_areas_ds.csv")
str(my_ds)
# 'data.frame': 194789 obs. of  5 variables:
#  $ x  : num  426060 426060 426060 426060 426060 ...
#  $ y  : num  8217410 8217410 8217410 8217410 8217410 ...
#  $ ID : chr  "g2" "g2" "g2" "g2" ...
#  $ R  : num  0.455 0.427 0.373 0.463 0.529 ...
#  $ HUE: num  -0.00397 -0.00384 -0.0028 -0.00369 -0.00352 ..

# Classification based in `R` and `HUE` variables
res<-NULL
areas<-unique(my_ds$ID)
for(i in 1:length(areas)){
  my_ds_split<-my_ds[my_ds$ID==areas[i],]
  k.medoids.res<-cluster::clara(my_ds_split[,4:ncol(my_ds_split)], 2, metric ="manhattan")
  my_ds_split.F<-cbind(my_ds_split, class = k.medoids.res$clustering)
  my_ds_split.F$class<-ifelse(my_ds_split.F$class==1,0,1)
  res<-rbind(res,cbind(my_ds_split.F))
}
res<-as.data.frame(res)

# Plot the results
plots <- list()
for (g in 1:length(areas)) {
  my_ds_split_class<-res[res$ID==areas[g],]
plots[[g]] <- ggplot() +
  geom_point(data=my_ds_split_class, 
  aes(x=x, y=y, color=class)) +
  theme_void()
} 
plots[[1]]

plots[[2]] 

在图中,区域g2 的分类与g3 的分类相反,并且仅将g2g3 数据集放在一起进行分类不是一种选择,因为我是我的原始人数据集我有 9 万个区域,我的 RAM 内存只有 64GB。

请帮助我找到在多个区域之间创建相同分类协议的方法?

【问题讨论】:

    标签: r cluster-analysis k-means unsupervised-learning


    【解决方案1】:

    有一个窍门!您需要始终从数据集的较高或较低值开始,只需在分类之后放置和删除然后效果很好,在这种情况下使用变量R中的较低值:

    library(dplyr)
      my_ds_split<-my_ds[my_ds$ID==areas[i],]
      min.start.value <- my_ds_split %>% 
        slice(which.min(R))
      my_ds_split <- rbind(min.start.value,my_ds_split)
      k.medoids.res<-cluster::clara(my_ds_split[,4:ncol(my_ds_split)], 2, metric ="manhattan")
      my_ds_split.F<-cbind(my_ds_split, class = k.medoids.res$clustering)
      my_ds_split.F<-my_ds_split.F[-c(1),]
    

    【讨论】:

      猜你喜欢
      • 2018-01-20
      • 2017-05-12
      • 2014-02-28
      • 2021-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多