[英]clustering Objects in Javascript using a custom sort function
我在 Javascript 中有对象,我想根据它们之间的距离对它们进行聚类来排序。 我在 Java 中执行了相同的分析,其中我结合了自定义距离 function 和层次聚类。
但是,我找不到任何允许您定义自定义距离度量的好的 Javascript 替代品。 我试图实现一个标准的 Arrays.sort function,但是在确定了对象之间的距离之后,我有点卡在比较 function 上。
通常,排序比较器类似于:
function comparefunction(a, b) {
if (a.nr > b.nr) return 1;
if (a.nr < b.nr) return -1;
return 0;
}
但是现在我根据它们之间的重叠得到了 a 和 b 之间的距离
function comparefunction(clusterA, clusterB) {
let overlap = 0.0;
if (relativeOverlapBetweenClusters.has(clusterA)) {
const relativeOverlapForClusterA = relativeOverlapBetweenClusters.get(clusterA);
if (relativeOverlapForClusterA.has(clusterB)) {
overlap = relativeOverlapForClusterA.get(clusterB);
}
}
return 1 - overlap;
}
但它没有正确排序。 另外,我看到 compareFunction 只被调用了有限的次数。
我实施了一个旅行推销员问题,它似乎工作得很好。 需要稍微调整一下距离。 这是一些示例代码:
https://codesandbox.io/s/musing-davinci-i3tss?file=/src/index.js
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.