相关疑难解决方法(0)

R中的聚类分析:确定最佳聚类数

作为R的新手,我不太确定如何选择最佳数量的聚类来进行k均值分析.绘制下面数据的子集后,适合多少个群集?如何进行聚类dendro分析?

n = 1000
kk = 10    
x1 = runif(kk)
y1 = runif(kk)
z1 = runif(kk)    
x4 = sample(x1,length(x1))
y4 = sample(y1,length(y1)) 
randObs <- function()
{
  ix = sample( 1:length(x4), 1 )
  iy = sample( 1:length(y4), 1 )
  rx = rnorm( 1, x4[ix], runif(1)/8 )
  ry = rnorm( 1, y4[ix], runif(1)/8 )
  return( c(rx,ry) )
}  
x = c()
y = c()
for ( k in 1:n )
{
  rPair  =  randObs()
  x  =  c( x, rPair[1] )
  y  = …
Run Code Online (Sandbox Code Playgroud)

r cluster-analysis k-means

422
推荐指数
6
解决办法
24万
查看次数

使用Levenshtein距离进行文本聚类

我有一组(2k - 4k)的小字符串(3-6个字符),我想将它们聚类.由于我使用字符串,以前的答案关于如何进行聚类(尤其是字符串聚类)?,告诉我,Levenshtein距离很适合用作弦乐的距离函数.此外,由于我事先并不知道群集的数量,因此分层聚类是要走的路而不是k-means.

虽然我以抽象的形式得到问题,但我不知道实际做什么的简单方法.例如,MATLAB或R是使用自定义函数(Levenshtein距离)实际实现层次聚类的更好选择.对于这两种软件,人们可以很容易地找到Levenshtein距离实现.聚类部分似乎更难.例如,MATLAB中的聚类文本计算所有字符串的距离数组,但我无法理解如何使用距离数组来实际获得聚类.你能不能向大家们展示如何在MATLAB或R中使用自定义函数实现层次聚类的方法?

matlab r cluster-analysis hierarchical-clustering levenshtein-distance

31
推荐指数
1
解决办法
2万
查看次数

agrep:只返回最佳匹配

我在R中使用'agrep'函数,它返回一个匹配向量.我想要一个类似于agrep的函数,它只返回最佳匹配,或者如果有关系则返回最佳匹配.目前,我正在使用包'cba'中的'sdist()'函数对结果向量的每个元素执行此操作,但这似乎非常多余.

/ edit:这是我目前正在使用的功能.我想加快速度,因为计算距离两次似乎是多余的.

library(cba)
word <- 'test'
words <- c('Teest','teeeest','New York City','yeast','text','Test')
ClosestMatch <- function(string,StringVector) {
  matches <- agrep(string,StringVector,value=TRUE)
  distance <- sdists(string,matches,method = "ow",weight = c(1, 0, 2))
  matches <- data.frame(matches,as.numeric(distance))
  matches <- subset(matches,distance==min(distance))
  as.character(matches$matches)
}

ClosestMatch(word,words)
Run Code Online (Sandbox Code Playgroud)

text r character string-matching agrep

23
推荐指数
2
解决办法
2万
查看次数