最近要对字符串进行聚类,这些字符串都是代码的输出,尝试了几种字符串相似度度量的方法:
Levenshtein距离
字符串核函数
LCS/max(len(str1,str2))
其中相似度用公式distance=1.0/similarity-1转换为距离.使用层次聚类方法.
下面是要聚类的字符串
points = ['aabbccdd', 'aaddccbb', 'aaaaccbb', 'bbbbccdd',
'eeeebbccdd', 'aaeebbeeccdd',
'aaaaaaaa', 'aabbbbdd', 'bbccdd', 'aabbdd',
'aabb', 'aadd', 'bbdd', 'aa', 'bb',
'aabaaabaabaabaaaaba', 'abaaabaaabaabaaaab']
下面看一下使用Levenshtein距离聚类的过程的前几部:
['aabbccdd', 'bbbbccdd'] aabbccdd
['aaddccbb', 'aaaaccbb'] aaddccbb
['aabbbbdd', 'aabbdd'] aabbbbdd
['bbccdd', 'bbdd'] bbccdd
['aabb', 'aa