@ai-on-browser/data-analysis-models
Version:
Data analysis model package without any dependencies
76 lines (75 loc) • 1.78 kB
TypeScript
/**
* @typedef {object} CURENode
* @property {number[]} [point] Data point of leaf node
* @property {number} [index] Data index of leaf node
* @property {number[][]} [repr] Represented points
* @property {number} [distance] Distance between children nodes
* @property {number} size Number of leaf nodes
* @property {CURENode[]} [children] Children nodes
* @property {CURENode[]} leafs Leaf nodes
*/
/**
* Clustering Using REpresentatives
*/
export default class CURE {
/**
* @param {number} c Number of representative points
*/
constructor(c: number);
_c: number;
_a: number;
_root: {
repr: any[];
distance: number;
children: any[];
readonly leafs: any[];
};
_distance(a: any, b: any): number;
/**
* Fit model.
* @param {Array<Array<number>>} data Training data
*/
fit(data: Array<Array<number>>): void;
/**
* Returns the specified number of clusters.
* @param {number} number Number of clusters
* @returns {CURENode[]} Cluster nodes
*/
getClusters(number: number): CURENode[];
/**
* Returns predicted categories.
* @param {number} k Number of clusters
* @returns {number[]} Predicted values
*/
predict(k: number): number[];
}
export type CURENode = {
/**
* Data point of leaf node
*/
point?: number[];
/**
* Data index of leaf node
*/
index?: number;
/**
* Represented points
*/
repr?: number[][];
/**
* Distance between children nodes
*/
distance?: number;
/**
* Number of leaf nodes
*/
size: number;
/**
* Children nodes
*/
children?: CURENode[];
/**
* Leaf nodes
*/
leafs: CURENode[];
};