c# - 在 C# 中实现 jaccard 相似度

我试图理解 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/

相关文章:

r - 如何只保留 R 中 4 个数据帧之间的公共(public)行名?

python - 在python中将多个png组合成一个pdf

opengl-es - 使用具有多个颜色纹理附件的 FrameBufferObject

unity3d - 团结 |查找具有指定父对象的子游戏对象

java - 接口(interface)是否被视为对象?

java - 有没有办法清除JAVA中对象的所有字段?

r - 加载 Data.Table 后遮盖的润滑对象

git - 我如何将 openshift git 存储库连接到 bitbucket

php - 第 2 行超出范围 (2 - 1) laravel-excel

erlang - 执行Erlang脚本时抛出"init terminating in do_boot