/**
 * Gaussian Process Latent Variable Model
 */
export default class GPLVM {
    /**
     * @param {number} rd Reduced dimension
     * @param {number} alpha Precision parameter
     * @param {number} [ez] Learning rate for z
     * @param {number} [ea] Learning rate for alpha
     * @param {number} [ep] Learning rate for kernel
     * @param {'gaussian' | { name: 'gaussian', a?: number, b?: number}} [kernel] Kernel name
     */
    constructor(rd: number, alpha: number, ez?: number, ea?: number, ep?: number, kernel?: 'gaussian' | {
        name: 'gaussian';
        a?: number;
        b?: number;
    });
    _rd: number;
    _alpha: number;
    _kernel: GaussianKernel;
    _ez: number;
    _ea: number;
    /**
     * Initialize model.
     * @param {Array<Array<number>>} x Training data
     */
    init(x: Array<Array<number>>): void;
    _x: Matrix<number[]>;
    _z: Matrix<number>;
    _s: Matrix<number>;
    /**
     * Fit model.
     */
    fit(): void;
    /**
     * Returns log likelihood.
     * @returns {number} Log likelihood
     */
    llh(): number;
    /**
     * Returns reduced datas.
     * @returns {Array<Array<number>>} Predicted values
     */
    predict(): Array<Array<number>>;
    /**
     * Returns reconstruct datas.
     * @param {Array<Array<number>>} z Sample data
     * @returns {Array<Array<number>>} Predicted values
     */
    reconstruct(z: Array<Array<number>>): Array<Array<number>>;
}
declare class GaussianKernel {
    constructor(a?: number, b?: number, e?: number);
    _a: number;
    _b: number;
    _e: number;
    _calc(x0: any, x1: any): number;
    _grad(x0: any, x1: any, k: any): Matrix<number>;
    calc(x: any, y: any): Matrix<T>;
    grad(x: any, k: any): Matrix<T>;
    update(x: any, k: any, G: any): void;
}
import Matrix from '../util/matrix.js';
export {};
