[英]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中做到這一點? 我發現了幾種從列表中生成配對的方法,但是我需要反向進行。
假設您具有此類對的集合,這些對具有屬性Item1
, Item2
和Similarity
,其中前兩個是整數,第二個是整數。
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.