/**
 * Iterative Self-Organizing Data Analysis Technique
 */
export default class ISODATA {
    /**
     * @param {number} init_k Initial cluster count
     * @param {number} min_k Minimum cluster count
     * @param {number} max_k Maximum cluster count
     * @param {number} min_n Minimum cluster size
     * @param {number} split_std Standard deviation as splid threshold
     * @param {number} merge_dist Merge distance
     */
    constructor(init_k: number, min_k: number, max_k: number, min_n: number, split_std: number, merge_dist: number);
    _init_k: number;
    _min_k: number;
    _max_k: number;
    _min_n: number;
    _split_sd: number;
    _merge_distance: number;
    _centroids: any[];
    /**
     * Centroids
     * @type {Array<Array<number>>}
     */
    get centroids(): Array<Array<number>>;
    /**
     * Number of clusters
     * @type {number}
     */
    get size(): number;
    _distance(a: any, b: any): number;
    /**
     * Initialize model.
     * @param {Array<Array<number>>} data Training data
     */
    init(data: Array<Array<number>>): void;
    _fit_centers(data: any): void;
    /**
     * Fit model.
     * @param {Array<Array<number>>} data Training data
     */
    fit(data: Array<Array<number>>): void;
    _merge_centroids(datas: any): void;
    _split_centroids(datas: any): void;
    _delete_centroids(datas: any): void;
    /**
     * Returns predicted categories.
     * @param {Array<Array<number>>} datas Sample data
     * @returns {number[]} Predicted values
     */
    predict(datas: Array<Array<number>>): number[];
}
