@ai-on-browser/data-analysis-models
Version:
Data analysis model package without any dependencies
79 lines (78 loc) • 1.82 kB
TypeScript
/**
* @typedef {object} ROCKNode
* @property {number[]} [point] Data point of leaf node
* @property {number} [index] Data index of leaf node
* @property {number} g Number of leaf nodes
* @property {number} [distance] Distance between children nodes
* @property {ROCKNode[]} [children] Children nodes
* @property {ROCKNode[]} leafs Leaf nodes
*/
/**
* RObust Clustering using linKs
*/
export default class ROCK {
/**
* @param {number} th Threshold
* @param {number} k Number of clusters
*/
constructor(th: number, k: number);
_th: number;
_k: number;
_f(): number;
_g(c1: any, c2: any, links: any): number;
_sim(a: any, b: any): number;
_link(data: any): Link;
/**
* Fit model.
* @param {Array<Array<number>>} data Training data
*/
fit(data: Array<Array<number>>): void;
_root: {
g: number;
children: any[];
readonly leafs: any[];
};
/**
* Returns the specified number of clusters.
* @param {number} number Number of clusters
* @returns {ROCKNode[]} Cluster nodes
*/
getClusters(number: number): ROCKNode[];
/**
* Returns predicted categories.
* @returns {number[]} Predicted values
*/
predict(): number[];
}
export type ROCKNode = {
/**
* Data point of leaf node
*/
point?: number[];
/**
* Data index of leaf node
*/
index?: number;
/**
* Number of leaf nodes
*/
g: number;
/**
* Distance between children nodes
*/
distance?: number;
/**
* Children nodes
*/
children?: ROCKNode[];
/**
* Leaf nodes
*/
leafs: ROCKNode[];
};
declare class Link {
_link: any[];
at(i: any, j: any): any;
set(i: any, j: any, value: any): void;
}
export {};