ping98k commited on
Commit
34e0278
·
1 Parent(s): 0e793c9

Reduce K-Means iteration count from 200 to 100; adjust UMAP neighbor calculation for improved clustering performance

Browse files
Files changed (1) hide show
  1. main.js +3 -2
main.js CHANGED
@@ -73,7 +73,7 @@ document.getElementById("kmeans-btn").onclick = async () => {
73
  const n = embeddings.length, dim = embeddings[0].length;
74
  let centroids = Array.from({ length: k }, () => embeddings[Math.floor(Math.random() * n)].slice());
75
  let labels = new Array(n).fill(0);
76
- for (let iter = 0; iter < 200; ++iter) {
77
  for (let i = 0; i < n; ++i) {
78
  let best = 0, bestDist = Infinity;
79
  for (let c = 0; c < k; ++c) {
@@ -92,7 +92,8 @@ document.getElementById("kmeans-btn").onclick = async () => {
92
  for (let c = 0; c < k; ++c) if (counts[c]) for (let d = 0; d < dim; ++d) centroids[c][d] /= counts[c];
93
  }
94
  // UMAP for 2D projection
95
- const umap = new UMAP({ nComponents: 2, nNeighbors: Math.min(15, n - 1) });
 
96
  const proj = umap.fit(embeddings);
97
  // Group lines by cluster
98
  const clustered = Array.from({ length: k }, (_, c) => []);
 
73
  const n = embeddings.length, dim = embeddings[0].length;
74
  let centroids = Array.from({ length: k }, () => embeddings[Math.floor(Math.random() * n)].slice());
75
  let labels = new Array(n).fill(0);
76
+ for (let iter = 0; iter < 100; ++iter) {
77
  for (let i = 0; i < n; ++i) {
78
  let best = 0, bestDist = Infinity;
79
  for (let c = 0; c < k; ++c) {
 
92
  for (let c = 0; c < k; ++c) if (counts[c]) for (let d = 0; d < dim; ++d) centroids[c][d] /= counts[c];
93
  }
94
  // UMAP for 2D projection
95
+ const nNeighbors = Math.max(1, Math.min(lines.length - 1, 15));
96
+ const umap = new UMAP({ nComponents: 2, nNeighbors, minDist: 0.1 });
97
  const proj = umap.fit(embeddings);
98
  // Group lines by cluster
99
  const clustered = Array.from({ length: k }, (_, c) => []);