【问题标题】:Optimal cutree for partially matching string部分匹配字符串的最佳cutree
【发布时间】:2017-03-28 15:16:37
【问题描述】:

我正在比较字符串,并试图确定最佳的集群数量。我有以下数据集:

d <- structure(list(Fund = structure(c(8L, 9L, 11L, 10L, 2L, 3L, 1L, 
4L, 5L, 7L, 6L), .Label = c("Branch April China", "Branch April Europe", 
"Branch April US", "Branch Emerging Markets EUR", "Branch Emerging Markets GBP", 
"Branch Emerging Markets JPY", "Branch Emerging Markets USD", 
"Branch EUR", "Branch GBP", "Branch JPY", "Branch USD"), class = "factor")), .Names = "Fund", class = "data.frame", row.names = c(NA, 
-11L)) 

我按如下方式计算了 Levenshtein 距离并执行了层次聚类

  dist <- adist(d$Fund)
  rownames(dist) <- d$Fund
  colnames(dist) <- d$Fund
  hc <- hclust(as.dist(dist))

现在,我想使用以下命令确定最佳集群数量:

df <- data.frame(d$Fund,cutree(hc,2))

我已经阅读了一些关于找到最佳集群数量的信息,但它与kmeans 命令更相关。在我的示例中,如何找到最佳集群数?非常感谢您的宝贵帮助

【问题讨论】:

  • 看看包 NbClust。
  • 谢谢,你知道如何使用字符串实现它

标签: r machine-learning tree


【解决方案1】:

我从 NbClust 包中获取了这个。我查看了帮助页面并深入研究了示例。在您的情况下,您有一个相异矩阵(距离),因此我采用了以下代码:

library(NbClust)

# for reproducibility
set.seed(1)

# create some data
x<-rbind(matrix(rnorm(150,sd=0.3),ncol=3),
     matrix(rnorm(150,mean=3,sd=0.2),ncol=3),
     matrix(rnorm(150,mean=5,sd=0.3),ncol=3))

# produce dissimilarity matrix of the data
diss_matrix<- dist(x, method = "euclidean", diag=FALSE)
res<-NbClust(x, diss=diss_matrix, distance = NULL, min.nc=2, max.nc=6, 
         method = "ward.D", index = "ch")  
res$All.index
res$Best.nc
res$Best.partition

您可以在安装包后复制并运行代码。最佳集群数由res$Best.nc 给出,集群索引由res$Best.partition 给出。

您需要阅读的信息比我在这里给您的信息要多得多。阅读 NbClust pamflet 似乎是一个好的开始。祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-15
    • 2019-10-18
    • 2016-07-01
    • 2023-03-29
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多