/**
 * Gaussian mixture model
 */
export class GMM {
    _k: number;
    _d: any;
    _p: any[];
    _m: any[];
    _s: any[];
    _init(datas: any): void;
    /**
     * Add a new cluster.
     */
    add(): void;
    /**
     * Clear all clusters.
     */
    clear(): void;
    /**
     * Returns probabilities.
     * @param {Array<Array<number>>} data Sample data
     * @returns {Array<Array<number>>} Predicted values
     */
    probability(data: Array<Array<number>>): Array<Array<number>>;
    /**
     * Returns predicted categories.
     * @param {Array<Array<number>>} data Sample data
     * @returns {number[]} Predicted values
     */
    predict(data: Array<Array<number>>): number[];
    _gaussian(x: any, m: any, s: any): number;
    /**
     * Fit model.
     * @param {Array<Array<number>>} datas Training data
     */
    fit(datas: Array<Array<number>>): void;
}
/**
 * Semi-Supervised gaussian mixture model
 */
export class SemiSupervisedGMM extends GMM {
    /**
     * Categories
     * @type {*[]}
     */
    get categories(): any[];
    /**
     * Initialize model.
     * @param {Array<Array<number>>} datas Training data
     * @param {(* | null)[]} labels Target values
     */
    init(datas: Array<Array<number>>, labels: (any | null)[]): void;
    _classes: any[];
    /**
     * Fit model.
     * @param {Array<Array<number>>} datas Training data
     * @param {(* | null)[]} y Target values
     */
    fit(datas: Array<Array<number>>, y: (any | null)[]): void;
    /**
     * Returns predicted categories.
     * @param {Array<Array<number>>} data Sample data
     * @returns {*[]} Predicted values
     */
    predict(data: Array<Array<number>>): any[];
}
/**
 * Gaussian mixture regression
 */
export class GMR extends GMM {
    _input_d: number;
    _mx: any[];
    _my: any[];
    _sxx: any[];
    _sxy: any[];
    /**
     * Fit model.
     * @param {Array<Array<number>>} x Training data
     * @param {Array<Array<number>>} y Target values
     */
    fit(x: Array<Array<number>>, y: Array<Array<number>>): void;
    /**
     * Returns probabilities.
     * @param {Array<Array<number>>} x Sample data
     * @param {Array<Array<number>>} y Target values
     * @returns {Array<Array<number>>} Predicted values
     */
    probability(x: Array<Array<number>>, y: Array<Array<number>>): Array<Array<number>>;
    /**
     * Returns predicted values.
     * @param {Array<Array<number>>} x Sample data
     * @returns {Array<Array<number>>} Predicted values
     */
    predict(x: Array<Array<number>>): Array<Array<number>>;
}
