我试图理解 2 个 double 型数组之间的“Jaccard 相似性”,这些数组的值大于零且小于一。
到目前为止,我已经在很多网站上搜索过这个,但我发现两个数组的大小应该相同(数组 1 中的元素数应该等于数组 2 中的元素数)。但是我在两个数组中有不同数量的元素。有没有办法实现“jaccard 相似度”?
最佳答案
使用 C# 的 LINQ ...
假设您有一个名为 A 的 double 组和另一个名为 B 的 double 组。这将为您提供 Jaccard 索引:
var CommonNumbers = from a in A.AsEnumerable<double>()
join b in B.AsEnumerable<double>() on a equals b
select a;
double JaccardIndex = (((double) CommonNumbers.Count()) /
((double) (A.Count() + B.Count())));
第一个语句获取出现在两个数组中的数字列表。第二个计算索引 - 这只是交集的大小(两个数组中出现的数字数量)除以并集的大小(一个数组的大小,或者更确切地说,一个数组的计数加上另一个数组的计数)。
https://stackoverflow.com/questions/30078728/