@ai-on-browser/data-analysis-models
Version:
Data analysis model package without any dependencies
32 lines (31 loc) • 1.57 kB
TypeScript
/**
* Weighted K-Nearest Neighbor
*/
export default class WeightedKNN {
/**
* @param {number} k Number of neighbors
* @param {'euclid' | 'manhattan' | 'chebyshev' | 'minkowski' | function (number[], number[]): number} [metric] Metric name
* @param {'gaussian' | 'rectangular' | 'triangular' | 'epanechnikov' | 'quartic' | 'triweight' | 'cosine' | 'inversion'} [weight] Weighting scheme name
*/
constructor(k: number, metric?: "euclid" | "manhattan" | "chebyshev" | "minkowski" | ((arg0: number[], arg1: number[]) => number), weight?: "gaussian" | "rectangular" | "triangular" | "epanechnikov" | "quartic" | "triweight" | "cosine" | "inversion");
_k: number;
_metric: "euclid" | "manhattan" | "chebyshev" | "minkowski" | ((arg0: number[], arg1: number[]) => number);
_d: (a: any, b: any) => any;
_weight: "gaussian" | "rectangular" | "triangular" | "epanechnikov" | "triweight" | "quartic" | "cosine" | "inversion";
_w: ((d: any) => number) | ((d: any) => 0 | 0.5) | ((d: any) => number) | ((d: any) => number) | ((d: any) => number) | ((d: any) => number) | ((d: any) => number) | ((d: any) => number);
/**
* Fit model.
* @param {Array<Array<number>>} x Training data
* @param {*[]} y Target values
*/
fit(x: Array<Array<number>>, y: any[]): void;
_x: number[][];
_y: any[];
_c: any[];
/**
* Returns predicted categories.
* @param {Array<Array<number>>} data Sample data
* @returns {*[]} Predicted values
*/
predict(data: Array<Array<number>>): any[];
}