Python 字符串聚类算法-制导
我试图根据jaro距离给出的相似性对一组字符串进行聚类。我是用python中的水母来计算的。我一直在努力找出如何对数据进行集群。我不是集群方面的专家,这是我第一次尝试找出如何做到这一点 目前,我已经写了一些我认为近似于我理解的单通道分区方法的东西,如下所示:Python 字符串聚类算法-制导,python,string,fuzzy-search,Python,String,Fuzzy Search,我试图根据jaro距离给出的相似性对一组字符串进行聚类。我是用python中的水母来计算的。我一直在努力找出如何对数据进行集群。我不是集群方面的专家,这是我第一次尝试找出如何做到这一点 目前,我已经写了一些我认为近似于我理解的单通道分区方法的东西,如下所示: 使第一个字符串成为第一个群集的cnetroid 对于下一个字符串,使用Jaro距离计算与该质心的相似性 如果它们足够相似,则将该字符串添加到簇中,否则使用该字符串以其作为质心启动新簇 重复此操作,直到没有字符串可供计算 我想要任何关于我的代
def SLINK(SList):
shuffle(SList)
Clusters = []
Centroid = []
Scores = []
for string in SList:
Matched = 0
if len(Clusters) == 0:
Clusters.append([string])
Centroid.append([string])
Scores.append([])
continue
for ClustNum in xrange(len(Clusters)):
Dist = jf.jaro_distance(string, Centroid[ClustNum][0])
if Dist > 0.8:
Clusters[ClustNum].append(string)
if len(Scores[ClustNum]) == 0:
Scores[ClustNum].append(Dist)
else:
if Dist > Scores[ClustNum]:
Scores[ClustNum][0] = Dist
Centroid[ClustNum][0] = string
Matched = 1
break
if Matched ==0:
Clusters.append([string])
Centroid.append([string])
Scores.append([])
return Clusters
如果您的问题只是关于集群的,我建议您寻找一个比现有版本更直观、更易于实现的版本。具体来说,FLAME聚类算法对如何在上实现该算法进行了精彩的解释 您的现有代码有问题吗?如果是这样的话,你能详细说明一下吗?事实上,它似乎很管用!我只是发布它来促进讨论,我想,以显示我是如何处理这个问题的。我想我是在寻找方法建议。你可能会感兴趣的是,哪种方法通常更适合于有效的代码,你会对一般的反馈感兴趣。啊,很酷,我从来没有听说过。谢天谢地,我以为我是在追求最简单的技术。谢谢你的提示,我会调查的。