import { ClusterBase } from '../base/cluster'; import { Params } from '../base/estimator'; export interface KMeansProps { /** number of clusters */ n_clusters?: number; /** * relative tolerance on the weighted inertia change used as convergence * criterion (previously named `opt_ratio`; old positional calls keep * working and map to `tol`) */ tol?: number; /** * optional user-provided initial centers; when given, they are used * as-is and `n_init` is forced to 1 */ initCenters?: number[][]; /** maximum Lloyd iterations per run */ max_iter?: number; /** optional seed for reproducible k-means++ init */ random_state?: number; /** * number of k-means++ restarts; the run with the lowest weighted * inertia wins */ n_init?: number; } export declare class KMeans extends ClusterBase { private n_clusters; private tol; private max_iter; private n_init; private random_state?; private userCenters; private centers; private samplesY; private inertia; constructor(props?: KMeansProps); /** @deprecated positional form; prefer the props-object constructor */ constructor(n_clusters?: number, tol?: number, initCenters?: number[][], max_iter?: number, random_state?: number, n_init?: number); getParams(): Params; private assignLabels; private updateCentroids; private runSingle; fitPredict(sampleX: number[][], sampleWeights?: number[]): number[]; getCentroids(): number[][] | null; getInertia(): number; }