栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何确定两个数据点的分区(集群)是否相同?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何确定两个数据点的分区(集群)是否相同?

什么时候两个分区相同?

如果他们具有完全相同的成员,可能。

因此,如果您只想测试身份,则可以执行以下操作:

用分区中 最小的 对象ID 替换每个分区ID 。

然后,当且仅当此表示形式相同时,两个分区才是相同的。

在上面的示例中,假设矢量索引1 .. 7是您的对象ID。然后我将得到规范形式

[ 1 1 1 4 4 6 7 ]  ^ first occurrence at pos 1 of 1 in l_1 / 2 in l_2        ^ first occurrence at pos 4

对于l_1和l_2,而l_3规范化为

[ 1 1 1 4 4 6 6 ]

为了更加清楚,这是另一个示例:

l_4 = [ A B 0 D 0 B A ]

规范化为

      [ 1 2 3 4 3 2 1 ]

因为簇“ A”的首次出现在位置1,“ B”在位置2等。

如果要测量两个聚类的 相似 程度,一种好的方法是查看对象对的precision / recall /
f1,当且仅当a和b属于同一聚类时,对象对(a,b)存在。

更新: 由于有人声称这是二次方的,因此我将进一步澄清。

要产生规范形式,请使用以下方法(实际的python代码):

def canonical_form(li):  """ Note, this implementation overwrites li """  first = dict()  for i in range(len(li)):    v = first.get(li[i])    if v is None:      first[li[i]] = i      v = i    li[i] = v  return liprint canonical_form([ 1, 1, 1, 0, 0, 2, 6 ])# [0, 0, 0, 3, 3, 5, 6]print canonical_form([ 2, 2, 2, 9, 9, 3, 1 ])# [0, 0, 0, 3, 3, 5, 6]print canonical_form([ 2, 2, 2, 9, 9, 3, 3 ])# [0, 0, 0, 3, 3, 5, 5]print canonical_form(['A','B',0,'D',0,'B','A'])# [0, 1, 2, 3, 2, 1, 0]print canonical_form([1,1,1,0,0,2,6]) == canonical_form([2,2,2,9,9,3,1])# Trueprint canonical_form([1,1,1,0,0,2,6]) == canonical_form([2,2,2,9,9,3,3])# False


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/410155.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号