entropyx
Version:
A simple data mining library, written in TypeScript
37 lines • 1.3 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.Hierarchical = void 0;
const distance_1 = require("@/base/distance");
const ml_hclust_1 = require("ml-hclust");
class Hierarchical {
constructor(options = {}) {
this.options = {
clusters: options.clusters ?? 2,
linkage: options.linkage ?? 'complete',
distance: options.distance ?? distance_1.Distance.euclidean,
};
}
fit(data) {
return new Promise((resolve) => {
const { clusters, linkage, distance } = this.options;
const dendrogram = (0, ml_hclust_1.agnes)(data, {
method: linkage,
distanceFunction: distance,
});
const partition = dendrogram.cut(clusters);
const clusterMap = new Map();
partition.forEach(({ index }, i) => {
if (!clusterMap.has(index)) {
clusterMap.set(index, []);
}
clusterMap.get(index).push(data[i]);
});
const finalClusters = [...clusterMap.values()];
resolve({
clusters: finalClusters,
});
});
}
}
exports.Hierarchical = Hierarchical;
//# sourceMappingURL=hierarchical.js.map
;