/** @import { InputType } from "../index.js" */ /** @import { ParametersHierarchicalClustering } from "./index.js" */ /** * Hierarchical Clustering * * A bottom-up approach (agglomerative) to clustering that builds a tree of clusters (dendrogram). * Supports different linkage criteria: single, complete, and average. * * @class * @extends Clustering * @category Clustering */ export class HierarchicalClustering extends Clustering { /** * @param {InputType} points - Data or distance matrix if metric is 'precomputed' * @param {Partial} parameters */ constructor(points: InputType, parameters?: Partial); /** @type {Cluster | null} */ root: Cluster | null; _id: number; _d_min: Float64Array; _distance_matrix: Matrix; _clusters: any[]; _c_size: Uint16Array; /** * @param {number} value - Value where to cut the tree. * @param {"distance" | "depth"} [type="distance"] - Type of value. Default is `"distance"` * @returns {Cluster[][]} - Array of clusters with the indices of the rows in given points. */ get_clusters_raw(value: number, type?: "distance" | "depth"): Cluster[][]; /** * @param {number} value - Value where to cut the tree. * @param {"distance" | "depth"} [type="distance"] - Type of value. Default is `"distance"` * @returns {number[][]} - Array of clusters with the indices of the rows in given points. */ get_clusters(value: number, type?: "distance" | "depth"): number[][]; /** * @param {number} value - Value where to cut the tree. * @param {"distance" | "depth"} [type="distance"] - Type of value. Default is `"distance"` * @returns {number[]} - Array of clusters with the indices of the rows in given points. */ get_cluster_list(value: number, type?: "distance" | "depth"): number[]; /** * @private * @param {Cluster} node * @param {(d: {dist: number, depth: number}) => number} f * @param {number} value * @param {Cluster[][]} result */ private _traverse; } import type { ParametersHierarchicalClustering } from "./index.js"; import { Clustering } from "./Clustering.js"; /** @private */ declare class Cluster { /** * * @param {number} id * @param {Cluster?} left * @param {Cluster?} right * @param {number} dist * @param {Float64Array?} centroid * @param {number} index * @param {number} [size] * @param {number} [depth] */ constructor( id: number, left: Cluster | null, right: Cluster | null, dist: number, centroid: Float64Array | null, index: number, size?: number, depth?: number, ); /**@type {number} */ size: number; /**@type {number} */ depth: number; /**@type {Cluster | null} */ parent: Cluster | null; id: number; left: Cluster | null; right: Cluster | null; dist: number; index: number; centroid: Float64Array; /** * * @param {Cluster} left * @param {Cluster} right * @returns {Float64Array} */ _calculate_centroid(left: Cluster, right: Cluster): Float64Array; get isLeaf(): boolean; /** * * @returns {Cluster[]} */ leaves(): Cluster[]; /** * * @returns {Cluster[]} */ descendants(): Cluster[]; } import { Matrix } from "../matrix/index.js"; import type { InputType } from "../index.js"; export {}; //# sourceMappingURL=Hierarchical_Clustering.d.ts.map