簡體   English   中英

通過成對比較創建列表

[英]Create a list from pairwise comparison

我對多個對象執行成對比較並估計相似性

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中做到這一點? 我發現了幾種從列表中生成配對的方法,但是我需要反向進行。

假設您具有此類對的集合,這些對具有屬性Item1Item2Similarity ,其中前兩個是整數,第二個是整數。

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.Key group.Select(i => i.Item2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM