sklears_discriminant_analysis/
lib.rs

1#![allow(dead_code)]
2#![allow(non_snake_case)]
3#![allow(missing_docs)]
4#![allow(deprecated)]
5#![allow(clippy::all)]
6#![allow(clippy::pedantic)]
7#![allow(clippy::nursery)]
8//! Linear and Quadratic Discriminant Analysis
9//!
10//! This module is part of sklears, providing scikit-learn compatible
11//! machine learning algorithms in Rust.
12
13// #![warn(missing_docs)]
14
15pub mod adaptive_discriminant;
16// pub mod async_optimization; // Temporarily disabled - needs error type fixes
17pub mod bayesian_discriminant;
18// TODO: ndarray 0.17 HRTB trait bound issues - re-enable after fixing Fit/Predict/Score traits
19// pub mod boundary_adjustment;
20pub mod canonical_discriminant;
21pub mod cost_sensitive_discriminant_analysis;
22pub mod cross_modal_discriminant;
23pub mod cross_validation;
24pub mod deep_discriminant;
25pub mod diagonal_lda;
26pub mod discriminant_locality_alignment;
27pub mod distributed_discriminant;
28pub mod ensemble_imbalanced;
29pub mod error_correcting_output_codes;
30pub mod feature_ranking;
31// pub mod gpu_acceleration; // Disabled - requires extensive GPU API refactoring
32pub mod heteroscedastic;
33pub mod hierarchical;
34pub mod information_theoretic;
35pub mod kernel_discriminant;
36pub mod lda;
37pub mod locality_preserving;
38pub mod locally_linear_discriminant;
39pub mod manifold_discriminant;
40pub mod marginal_fisher;
41pub mod minimum_volume_ellipsoid;
42pub mod mixture;
43pub mod mixture_experts;
44pub mod multi_task;
45pub mod multi_view_discriminant;
46pub mod nearest_shrunken_centroids;
47pub mod neural_discriminant;
48pub mod numerical_stability; // Re-enabled after fixing compilation issues
49pub mod one_vs_one;
50pub mod one_vs_rest;
51pub mod online_discriminant;
52pub mod out_of_core;
53pub mod parallel_eigen;
54pub mod penalized_discriminant_analysis;
55// pub mod phantom_types; // Disabled - uses unstable const generics features
56pub mod qda;
57pub mod random_projection_discriminant_analysis;
58pub mod recursive_feature_elimination;
59pub mod robust_adaptive;
60pub mod sequential_feature_selection;
61pub mod simd_optimizations;
62pub mod stability_selection;
63pub mod stochastic_discriminant;
64pub mod sure_independence_screening;
65pub mod temporal_discriminant;
66
67// Re-export main types for convenience
68pub use adaptive_discriminant::{
69    AdaptationEvent, AdaptationStrategy, AdaptiveDiscriminantLearning,
70    AdaptiveDiscriminantLearningConfig, BaseDiscriminant, TrainedAdaptiveDiscriminantLearning,
71};
72// pub use async_optimization::{
73//     AsyncDiscriminantAnalysis, AsyncDiscriminantOptimizer, AsyncOptimizationConfig,
74//     DistributedDiscriminantAnalysis, OptimizationMessage, OptimizationState, OptimizationStats,
75// };
76pub use bayesian_discriminant::{
77    BayesianDiscriminantAnalysis, BayesianDiscriminantAnalysisConfig, InferenceMethod,
78    PosteriorParameters, PriorType, TrainedBayesianDiscriminantAnalysis,
79};
80// TODO: ndarray 0.17 HRTB trait bound issues - re-enable after fixing Fit/Predict/Score traits
81// pub use boundary_adjustment::{
82//     BoundaryAdjustmentConfig, BoundaryAdjustmentDiscriminantAnalysis, BoundaryAdjustmentMethod,
83//     DensityKernel, OptimizationCriterion, SearchMethod,
84//     TrainedBoundaryAdjustmentDiscriminantAnalysis,
85// };
86pub use canonical_discriminant::{
87    CanonicalDiscriminantAnalysis, CanonicalDiscriminantAnalysisConfig,
88    TrainedCanonicalDiscriminantAnalysis,
89};
90pub use cost_sensitive_discriminant_analysis::{
91    CostMatrix, CostSensitiveDiscriminantAnalysis, CostSensitiveDiscriminantAnalysisConfig,
92    CostSensitiveMethod, SimpleDiscriminantModel, TrainedCostSensitiveDiscriminantAnalysis,
93};
94pub use cross_modal_discriminant::{
95    CrossModalDiscriminantLearningConfig, DomainAdaptationStrategy, DomainInfo, ModalityInfo,
96};
97pub use cross_validation::{
98    BootstrapConfig, BootstrapResults, BootstrapValidator, CrossValidationConfig,
99    CrossValidationResults, GridSearchLDA, GridSearchQDA, NestedCVConfig, NestedCVResults,
100    NestedCrossValidator, ParameterGrid, TemporalValidationConfig, TemporalValidator,
101    ValidationMetrics,
102};
103pub use deep_discriminant::{
104    AttentionConfig, DeepArchitecture, DeepDiscriminantLearning, DeepDiscriminantLearningConfig,
105    DeepLayer, DeepTrainingConfig, LayerType, NormalizationType, TrainedDeepDiscriminantLearning,
106};
107pub use diagonal_lda::{
108    DiagonalLinearDiscriminantAnalysis, DiagonalLinearDiscriminantAnalysisConfig,
109    TrainedDiagonalLinearDiscriminantAnalysis,
110};
111pub use discriminant_locality_alignment::{
112    DiscriminantLocalityAlignment, DiscriminantLocalityAlignmentConfig,
113};
114pub use distributed_discriminant::{
115    DistributedDiscriminantConfig, DistributedLinearDiscriminantAnalysis,
116    DistributedQuadraticDiscriminantAnalysis, MergeStrategy,
117};
118pub use ensemble_imbalanced::{
119    BaseClassifier, EnsembleImbalancedConfig, EnsembleImbalancedDiscriminantAnalysis,
120    EnsembleMethod, SamplingStrategy, TrainedEnsembleImbalancedDiscriminantAnalysis, VotingMethod,
121};
122pub use error_correcting_output_codes::{
123    ErrorCorrectingOutputCodes, ErrorCorrectingOutputCodesConfig, TrainedErrorCorrectingOutputCodes,
124};
125pub use feature_ranking::{
126    DiscriminantFeatureRanking, DiscriminantFeatureRankingConfig, FeatureRank,
127};
128// pub use gpu_acceleration::{
129//     GpuAcceleratedLDA, GpuAcceleratedQDA, GpuAccelerationConfig, GpuDiscriminantAnalysis,
130//     GpuLDAKernel, GpuMemoryStrategy, GpuPerformanceStats, GpuQDAKernel,
131// };
132pub use heteroscedastic::{
133    HeteroscedasticDiscriminantAnalysis, HeteroscedasticDiscriminantAnalysisConfig,
134};
135pub use hierarchical::{
136    HierarchicalDiscriminantAnalysis, HierarchicalDiscriminantAnalysisConfig, HierarchyTree,
137    TrainedHierarchicalDiscriminantAnalysis,
138};
139pub use information_theoretic::{
140    DiscretizationMethod, InformationCriterion, InformationTheoreticDiscriminantAnalysis,
141    InformationTheoreticDiscriminantAnalysisConfig,
142};
143pub use kernel_discriminant::{
144    KernelCVConfig, KernelDiscriminantAnalysis, KernelDiscriminantAnalysisConfig,
145    KernelOptimizationResults, KernelParameterGrid, KernelParameterOptimizer, KernelType,
146    TrainedKernelDiscriminantAnalysis,
147};
148pub use lda::{LinearDiscriminantAnalysis, LinearDiscriminantAnalysisConfig};
149pub use locality_preserving::{
150    LocalityPreservingDiscriminantAnalysis, LocalityPreservingDiscriminantAnalysisConfig,
151};
152pub use locally_linear_discriminant::{
153    LocallyLinearDiscriminantAnalysis, LocallyLinearDiscriminantAnalysisConfig,
154    TrainedLocallyLinearDiscriminantAnalysis,
155};
156pub use manifold_discriminant::{
157    ManifoldDiscriminantAnalysis, ManifoldDiscriminantAnalysisConfig,
158    TrainedManifoldDiscriminantAnalysis,
159};
160pub use marginal_fisher::{MarginalFisherAnalysis, MarginalFisherAnalysisConfig};
161pub use minimum_volume_ellipsoid::{
162    MinimumVolumeEllipsoidConfig, MinimumVolumeEllipsoidDiscriminantAnalysis,
163    TrainedMinimumVolumeEllipsoidDiscriminantAnalysis,
164};
165pub use mixture::{MixtureDiscriminantAnalysis, MixtureDiscriminantAnalysisConfig};
166pub use mixture_experts::{
167    ExpertType, GatingNetworkType, MixtureOfExpertsConfig, MixtureOfExpertsDiscriminantAnalysis,
168    TrainedMixtureOfExpertsDiscriminantAnalysis,
169};
170pub use multi_task::{
171    MultiTaskDiscriminantLearning, MultiTaskDiscriminantLearningConfig, Task, TaskClassifier,
172    TrainedMultiTaskDiscriminantLearning,
173};
174pub use multi_view_discriminant::{
175    FusionStrategy, MultiViewDiscriminantAnalysis, MultiViewDiscriminantAnalysisConfig, ViewInfo,
176};
177pub use nearest_shrunken_centroids::{
178    NearestShrunkenCentroids, NearestShrunkenCentroidsConfig, TrainedNearestShrunkenCentroids,
179};
180pub use neural_discriminant::{
181    ActivationFunction, NetworkArchitecture, NeuralDiscriminantAnalysis,
182    NeuralDiscriminantAnalysisConfig, NeuralLayer, NeuralTrainingConfig,
183    TrainedNeuralDiscriminantAnalysis,
184};
185pub use numerical_stability::{
186    ConditionMonitor, ConditionStatistics, MatrixAnalysis, NumericalConfig, NumericalStability,
187};
188pub use one_vs_one::{
189    OneVsOneDiscriminantAnalysis, OneVsOneDiscriminantAnalysisConfig, PairwiseClassifier,
190};
191pub use one_vs_rest::{
192    BinaryClassifier, OneVsRestDiscriminantAnalysis, OneVsRestDiscriminantAnalysisConfig,
193};
194pub use online_discriminant::{
195    OnlineDiscriminantAnalysis, OnlineDiscriminantAnalysisConfig,
196    TrainedOnlineDiscriminantAnalysis, UpdateStrategy,
197};
198pub use out_of_core::{
199    OutOfCoreConfig, OutOfCoreDataManager, OutOfCoreLDA, OutOfCoreQDA, StreamingDiscriminant,
200};
201pub use parallel_eigen::{ParallelEigen, ParallelEigenConfig, ParallelEigenDecomposition};
202pub use penalized_discriminant_analysis::{
203    PenalizedDiscriminantAnalysis, PenalizedDiscriminantAnalysisConfig, PenaltyType,
204    TrainedPenalizedDiscriminantAnalysis,
205};
206// pub use phantom_types::{
207//     data_markers, discriminant_markers, regularization_markers, solver_markers, state_markers,
208//     ConfigurationValidator, DiscriminantAnalysisBuilder, DiscriminantMethod, DiscriminantPredictor,
209//     RegularizationType, RegularizedLDA, RegularizedQDA, SolverType, SparseLDA, StandardLDA,
210//     StandardQDA, TrainedLinearDA, TrainedQuadraticDA, TypeErasedDiscriminant,
211//     TypeSafeDiscriminantAnalysis, UntrainedLinearDA, UntrainedQuadraticDA, GPULDA,
212// };
213pub use qda::{QuadraticDiscriminantAnalysis, QuadraticDiscriminantAnalysisConfig};
214pub use random_projection_discriminant_analysis::{
215    DiscriminantModel, LDAModel, ProjectionType, QDAModel, RDAModel,
216    RandomProjectionDiscriminantAnalysis, RandomProjectionDiscriminantAnalysisConfig,
217    TrainedRandomProjectionDiscriminantAnalysis,
218};
219pub use recursive_feature_elimination::{
220    EliminationStep, RecursiveFeatureElimination, RecursiveFeatureEliminationConfig,
221    TrainedRecursiveFeatureElimination,
222};
223pub use robust_adaptive::{
224    MEstimatorType, RobustDiscriminantAnalysis, RobustDiscriminantAnalysisConfig,
225    TrainedRobustDiscriminantAnalysis,
226};
227pub use sequential_feature_selection::{
228    SelectionDirection, SelectionStep, SequentialFeatureSelection,
229    SequentialFeatureSelectionConfig, TrainedSequentialFeatureSelection,
230};
231pub use simd_optimizations::{
232    AdvancedSimdOps, SimdArrayOps, SimdBenchmarkResults, SimdConfig, SimdMatrixOps, SimdSupport,
233};
234
235#[cfg(target_arch = "aarch64")]
236pub use simd_optimizations::NeonSimdOps;
237pub use stability_selection::{
238    FeatureStability, StabilitySelection, StabilitySelectionConfig, TrainedStabilitySelection,
239};
240pub use stochastic_discriminant::{
241    LearningRateSchedule, LossFunction, Optimizer, StochasticDiscriminantAnalysis,
242    StochasticDiscriminantAnalysisConfig, TrainedStochasticDiscriminantAnalysis,
243};
244pub use sure_independence_screening::{
245    BaseDiscriminantModel, SimpleLDA, SureIndependenceScreening, SureIndependenceScreeningConfig,
246    TrainedSureIndependenceScreening,
247};
248pub use temporal_discriminant::{
249    AggregationMethod, TemporalDiscriminantAnalysis, TemporalDiscriminantAnalysisConfig,
250    TemporalMethod, TemporalPattern, TrendMethod,
251};
252
253#[allow(non_snake_case)]
254#[cfg(test)]
255mod tests;