UNPKG

@ai-on-browser/data-analysis-models

Version:

Data analysis model package without any dependencies

133 lines (132 loc) 4.12 kB
/** * Complete linkage agglomerative clustering */ export class CompleteLinkageAgglomerativeClustering extends AgglomerativeClustering { } /** * Single linkage agglomerative clustering */ export class SingleLinkageAgglomerativeClustering extends AgglomerativeClustering { } /** * Group average agglomerative clustering */ export class GroupAverageAgglomerativeClustering extends AgglomerativeClustering { } /** * Ward's agglomerative clustering */ export class WardsAgglomerativeClustering extends AgglomerativeClustering { } /** * Centroid agglomerative clustering */ export class CentroidAgglomerativeClustering extends AgglomerativeClustering { } /** * Weighted average agglomerative clustering */ export class WeightedAverageAgglomerativeClustering extends AgglomerativeClustering { } /** * Median agglomerative clustering */ export class MedianAgglomerativeClustering extends AgglomerativeClustering { } export type AgglomerativeClusterNode = { /** * Data point of leaf node */ point?: number[]; /** * Data index of leaf node */ index?: number; /** * Distance between children nodes */ distance?: number; /** * Distances of leaf data and others */ distances?: number[]; /** * Number of leaf nodes */ size: number; /** * Children nodes */ children?: AgglomerativeClusterNode[]; /** * Leaf nodes */ leafs: AgglomerativeClusterNode[]; }; /** * @typedef {object} AgglomerativeClusterNode * @property {number[]} [point] Data point of leaf node * @property {number} [index] Data index of leaf node * @property {number} [distance] Distance between children nodes * @property {number[]} [distances] Distances of leaf data and others * @property {number} size Number of leaf nodes * @property {AgglomerativeClusterNode[]} [children] Children nodes * @property {AgglomerativeClusterNode[]} leafs Leaf nodes */ /** * Agglomerative clustering */ declare class AgglomerativeClustering { /** * @param {'euclid' | 'manhattan' | 'chebyshev' | function (number[], number[]): number} metric Metric name */ constructor(metric?: 'euclid' | 'manhattan' | 'chebyshev' | ((arg0: number[], arg1: number[]) => number)); _root: { distance: any; size: any; children: any[]; readonly leafs: any; }; _metric: "euclid" | "manhattan" | "chebyshev" | ((arg0: number[], arg1: number[]) => number); _d: (a: any, b: any) => any; /** * Fit model parameters. * @param {Array<Array<number>>} points Training data */ fit(points: Array<Array<number>>): void; /** * Returns the specified number of clusters. * @param {number} number Number of clusters * @returns {AgglomerativeClusterNode[]} Cluster nodes */ getClusters(number: number): AgglomerativeClusterNode[]; /** * Returns predicted categories. * @param {number} k Number of clusters * @returns {number[]} Predicted values */ predict(k: number): number[]; /** * Returns a distance between two nodes. * @abstract * @param {AgglomerativeClusterNode} c1 Node * @param {AgglomerativeClusterNode} c2 Node * @returns {number} Distance */ distance(c1: AgglomerativeClusterNode, c2: AgglomerativeClusterNode): number; _mean(d: any): number[]; _lanceWilliamsUpdater(ala: any, alb: any, bt: any, gm: any): (ka: any, kb: any, ab: any) => number; /** * Returns new distance. * @abstract * @param {number} ca Number of datas in a merging node A * @param {number} cb Number of datas in a merging node B * @param {number} ck Number of datas in a current node * @param {number} ka Distance between node A and current node * @param {number} kb Distance between node B and current node * @param {number} ab Distance between node A and node B * @returns {number} New distance between current node and merged node */ update(ca: number, cb: number, ck: number, ka: number, kb: number, ab: number): number; } export {};