通过两两比较创建一个列表



我对一些对象执行两两比较并估计相似性

Item-1,Item-2,Similarity
11, 16, 0.9
11, 18, 0.5
11, 21, 0.9
12, 19, 0.8
12,22, 0.9
12, 24, 0.3

我现在希望基于阈值创建集群,例如,阈值为0.8,我希望创建如下列表:

{11,16, 21}
{12,19,22} 
with threshold > 0.8

在LINQ中有办法做到这一点吗?我找到了几种从列表生成对的方法,但是我需要反向操作。

假设您有一个这样的对的集合,其属性为Item1, Item2Similarity,其中前两个是整数,第二个是双精度。

var threshold = 0.8f;
var sets = pairs.Where(p => p.Similarity > threshold)
                .GroupBy(p => p.Item1, p => p.Item2)
                .Select(g => new [] { g.Key }.Union(g));

您可以使用

获取所请求的组

items.Where(i => i.Similarity >= .8).GroupBy(i => i.Item1)

然后是group.Key + group.Select(i => i.Item2)

相关内容

  • 没有找到相关文章

最新更新