import { ClassifierBase } from '../base'; import { Params } from '../base/estimator'; export interface QuadraticDiscriminantAnalysisProps { /** Class priors (in sorted-class order). Defaults to class frequencies. */ priors?: number[]; /** Regularization: per-class covariance eigenvalues become (1 - regParam) * s2 + regParam. */ regParam?: number; /** Threshold on covariance eigenvalues for rank estimation. */ tol?: number; } /** * Quadratic Discriminant Analysis matching sklearn's * `QuadraticDiscriminantAnalysis`: one Gaussian per class with its own * covariance, fitted through a per-class SVD of the centered class data * (never forming the covariance matrix), giving a quadratic decision * boundary log P(x|k) + log P(k). * * Deviation from sklearn: on rank-deficient class data with regParam = 0, * sklearn only warns about collinearity and then produces inf/NaN scores; * here directions whose covariance eigenvalue is <= tol are dropped from the * Mahalanobis distance and log-determinant, so results stay finite. */ export declare class QuadraticDiscriminantAnalysis extends ClassifierBase { private priors?; private regParam; private tol; private classes; private classPriors; private means; /** per class: kept covariance eigenvalues (descending) */ private scalings; /** per class: kept principal directions, rotations[k][c] is a length-nFeatures vector */ private rotations; private nFeatures; private fitted; constructor(props?: QuadraticDiscriminantAnalysisProps); getParams(): Params; fit(X: number[][], y: number[]): void; private assertFitted; /** Per-class log-posterior parts: -0.5 (Mahalanobis + logdet) + log prior. */ private decisionScores; predict(testX: number[][]): number[]; /** Softmax over the per-class log posteriors (sklearn parity). */ predictProba(testX: number[][]): number[][]; /** * Binary: 1-D signed scores for `classes[1]` (sklearn convention). * Multiclass: per-class log-posterior parts, shape [nSamples][nClasses]. */ decisionFunction(testX: number[][]): number[] | number[][]; getClasses(): number[]; getMeans(): number[][]; getPriors(): number[]; /** Per-class covariance matrices reconstructed from the kept eigenpairs. */ getCovariance(): number[][][]; }