簡體   English   中英

使用自定義排序 function 對 Javascript 中的對象進行聚類

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM