[英]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.