1#![allow(dead_code)]
2#![allow(non_snake_case)]
3#![allow(missing_docs)]
4#![allow(deprecated)]
5#![allow(clippy::type_complexity)]
6#![allow(clippy::too_many_arguments)]
7#![allow(clippy::only_used_in_recursion)]
8#![allow(clippy::needless_range_loop)]
9#![allow(clippy::manual_clamp)]
10#![allow(clippy::ptr_arg)]
11#![allow(clippy::single_match)]
12#![allow(clippy::if_same_then_else)]
13#![allow(clippy::incompatible_msrv)]
14pub mod adaptive_bandwidth_rbf;
22pub mod adaptive_dimension;
23pub mod adaptive_nystroem;
24pub mod advanced_testing;
25pub mod anisotropic_rbf;
26pub mod benchmarking;
27pub mod bioinformatics_kernels;
28pub mod budget_constrained;
29pub mod cache_optimization;
30pub mod causal_kernels;
31pub mod chi2_samplers;
32pub mod computer_vision_kernels;
33pub mod cross_validation;
34pub mod custom_kernel;
35pub mod deep_learning_kernels;
36pub mod distributed_kernel;
37pub mod ensemble_nystroem;
38pub mod error_bounded;
39pub mod fastfood;
40pub mod feature_generation;
41pub mod finance_kernels;
42pub mod gpu_acceleration;
43pub mod gradient_kernel_learning;
44pub mod graph_kernels;
45pub mod homogeneous_polynomial;
46pub mod incremental_nystroem;
47pub mod information_theoretic;
48pub mod kernel_framework;
49pub mod kernel_ridge_regression;
50pub mod memory_efficient;
51pub mod meta_learning_kernels;
52pub mod middleware;
53pub mod multi_kernel_learning;
54pub mod multi_scale_rbf;
55pub mod nlp_kernels;
56pub mod numerical_stability;
57pub mod nystroem;
58pub mod optimal_transport;
59pub mod out_of_core;
60pub mod parameter_learning;
61pub mod plugin_architecture;
62pub mod polynomial_count_sketch;
63pub mod polynomial_features;
64pub mod progressive;
65pub mod quantum_kernel_methods;
66pub mod quasi_random_features;
67pub mod rbf_sampler;
68pub mod robust_kernels;
69pub mod scientific_computing_kernels;
70pub mod simd_kernel;
72pub mod simple_test;
75pub mod sparse_gp;
76pub mod sparse_polynomial;
77pub mod streaming_kernel;
78pub mod string_kernels;
79pub mod structured_random_features;
80pub mod tensor_polynomial;
81pub mod time_series_kernels;
82pub mod type_safe_kernels;
83pub mod type_safety;
84pub mod unsafe_optimizations;
85pub mod validation;
86
87pub use adaptive_bandwidth_rbf::{
88 AdaptiveBandwidthRBFSampler, BandwidthSelectionStrategy, ObjectiveFunction,
89};
90pub use adaptive_dimension::{
91 AdaptiveDimensionConfig, AdaptiveRBFSampler, DimensionSelectionResult,
92 FittedAdaptiveRBFSampler, QualityMetric as AdaptiveQualityMetric, SelectionStrategy,
93};
94pub use adaptive_nystroem::{
95 AdaptiveNystroem, ComponentSelectionStrategy, ErrorBoundMethod as AdaptiveErrorBoundMethod,
96};
97pub use advanced_testing::{
98 ApproximationError, BaselineMethod, BoundType as TestingBoundType, BoundValidation,
99 ConvergenceAnalyzer, ConvergenceResult, ErrorBoundsResult, ErrorBoundsValidator,
100 QualityAssessment, QualityMetric as TestingQualityMetric, QualityResult, ReferenceMethod,
101};
102pub use anisotropic_rbf::{
103 AnisotropicRBFSampler, FittedAnisotropicRBF, FittedMahalanobisRBF, FittedRobustAnisotropicRBF,
104 MahalanobisRBFSampler, RobustAnisotropicRBFSampler, RobustEstimator,
105};
106pub use benchmarking::{
107 BenchmarkConfig, BenchmarkDataset, BenchmarkResult, BenchmarkSummary,
108 BenchmarkableKernelMethod, BenchmarkableTransformer, KernelApproximationBenchmark,
109 PerformanceMetric, QualityMetric,
110};
111pub use bioinformatics_kernels::{
112 GenomicKernel, MetabolicNetworkKernel, MultiOmicsKernel, OmicsIntegrationMethod,
113 PhylogeneticKernel, ProteinKernel,
114};
115pub use budget_constrained::{
116 BudgetConstrainedConfig, BudgetConstrainedNystroem, BudgetConstrainedRBFSampler,
117 BudgetConstraint, BudgetOptimizationResult, BudgetUsage, FittedBudgetConstrainedNystroem,
118 FittedBudgetConstrainedRBFSampler, OptimizationStrategy,
119};
120pub use cache_optimization::{
121 AlignedBuffer, CacheAwareTransform, CacheConfig, CacheFriendlyMatrix, MemoryLayout,
122};
123pub use causal_kernels::{CausalKernel, CausalKernelConfig, CausalMethod, CounterfactualKernel};
124pub use chi2_samplers::{AdditiveChi2Sampler, SkewedChi2Sampler};
125pub use computer_vision_kernels::{
126 ActivationFunction, ConvolutionalKernelFeatures, FittedConvolutionalKernelFeatures,
127 FittedScaleInvariantFeatures, FittedSpatialPyramidFeatures, FittedTextureKernelApproximation,
128 PoolingMethod, ScaleInvariantFeatures, SpatialPyramidFeatures, TextureKernelApproximation,
129};
130pub use cross_validation::{
131 CVSplitter, CVStrategy, CrossValidationConfig, CrossValidationResult as CVResult,
132 CrossValidator, KFoldSplitter, MonteCarloCVSplitter, ScoringMetric, TimeSeriesSplitter,
133};
134pub use custom_kernel::{
135 CustomExponentialKernel, CustomKernelSampler, CustomLaplacianKernel, CustomPolynomialKernel,
136 CustomRBFKernel, KernelFunction,
137};
138pub use deep_learning_kernels::{
139 Activation as DeepLearningActivation, DKLConfig, DeepKernelLearning, InfiniteWidthKernel,
140 NTKConfig, NeuralTangentKernel,
141};
142pub use distributed_kernel::{
143 AggregationMethod, CommunicationPattern, DistributedConfig, DistributedNystroem,
144 DistributedRBFSampler, PartitionStrategy, Worker,
145};
146pub use ensemble_nystroem::{
147 EnsembleMethod, EnsembleNystroem, QualityMetric as EnsembleQualityMetric,
148};
149pub use error_bounded::{
150 ErrorBound, ErrorBoundMethod, ErrorBoundedConfig, ErrorBoundedNystroem, ErrorBoundedRBFSampler,
151 FittedErrorBoundedNystroem, FittedErrorBoundedRBFSampler,
152};
153pub use fastfood::{FastfoodKernel, FastfoodKernelParams, FastfoodTransform};
154pub use feature_generation::{
155 CompositeGenerator, FeatureGenerator, FeatureGeneratorBuilder, PolynomialGenerator,
156 RandomFourierGenerator,
157};
158pub use finance_kernels::{
159 EconometricKernel, FinancialKernel, PortfolioKernel, RiskKernel, VolatilityKernel,
160 VolatilityModel,
161};
162pub use gpu_acceleration::{
163 FittedGpuNystroem, FittedGpuRBFSampler, GpuBackend, GpuConfig, GpuContext, GpuDevice,
164 GpuNystroem, GpuProfiler, GpuRBFSampler, MemoryStrategy, Precision,
165};
166pub use gradient_kernel_learning::{
167 GradientConfig, GradientKernelLearner, GradientMultiKernelLearner, GradientOptimizer,
168 GradientResult, KernelObjective,
169};
170pub use graph_kernels::{
171 FittedRandomWalkKernel, FittedShortestPathKernel, FittedSubgraphKernel,
172 FittedWeisfeilerLehmanKernel, Graph, RandomWalkKernel, ShortestPathKernel, SubgraphKernel,
173 WeisfeilerLehmanKernel,
174};
175pub use homogeneous_polynomial::{
176 CoefficientMethod, HomogeneousPolynomialFeatures, NormalizationMethod,
177};
178pub use incremental_nystroem::{IncrementalNystroem, UpdateStrategy};
179pub use information_theoretic::{
180 EntropyFeatureSelector, EntropySelectionMethod, FittedEntropyFeatureSelector,
181 FittedInformationBottleneckExtractor, FittedKLDivergenceKernel, FittedMutualInformationKernel,
182 InformationBottleneckExtractor, KLDivergenceKernel, KLReferenceDistribution,
183 MutualInformationKernel,
184};
185pub use kernel_framework::{
186 ApproximationQuality, BoundType as FrameworkBoundType,
187 CombinationStrategy as FrameworkCombinationStrategy, Complexity, CompositeKernelMethod,
188 ErrorBound as FrameworkErrorBound, FeatureMap, KMeansSampling, KernelAlignmentMetric,
189 KernelMethod, KernelType as FrameworkKernelType, SamplingStrategy as SamplingStrategyTrait,
190 UniformSampling,
191};
192pub use kernel_ridge_regression::{
193 ApproximationMethod as KRRApproximationMethod, KernelRidgeRegression,
194 MultiTaskKernelRidgeRegression, OnlineKernelRidgeRegression, RobustKernelRidgeRegression,
195 RobustLoss, Solver, TaskRegularization,
196};
197pub use memory_efficient::{
198 FittedMemoryEfficientNystroem, FittedMemoryEfficientRBFSampler, MemoryConfig,
199 MemoryEfficientNystroem, MemoryEfficientRBFSampler, MemoryMonitor,
200};
201pub use meta_learning_kernels::{
202 DatasetMetaFeatures, MetaKernelType, MetaLearningConfig, MetaLearningKernelSelector,
203 MetaLearningStrategy, PerformanceMetric as MetaPerformanceMetric, TaskMetadata,
204};
205pub use middleware::{
206 Hook, HookContext, LoggingHook, Middleware, NormalizationMiddleware, PerformanceHook, Pipeline,
207 PipelineBuilder, PipelineStage, ValidationHook,
208};
209pub use multi_kernel_learning::{
210 ApproximationMethod as MKLApproximationMethod, BaseKernel,
211 CombinationStrategy as MKLCombinationStrategy, KernelStatistics, MultiKernelConfig,
212 MultipleKernelLearning, WeightLearningAlgorithm,
213};
214pub use multi_scale_rbf::{BandwidthStrategy, CombinationStrategy, MultiScaleRBFSampler};
215pub use nlp_kernels::{
216 AggregationMethod as NLPAggregationMethod, DocumentKernelApproximation,
217 FittedDocumentKernelApproximation, FittedSemanticKernelApproximation,
218 FittedSyntacticKernelApproximation, FittedTextKernelApproximation, SemanticKernelApproximation,
219 SimilarityMeasure, SyntacticKernelApproximation, TextKernelApproximation, TreeKernelType,
220};
221pub use numerical_stability::{
222 stable_kernel_matrix, NumericalStabilityMonitor, StabilityConfig, StabilityMetrics,
223 StabilityWarning,
224};
225pub use nystroem::{Kernel, Nystroem, SamplingStrategy};
226pub use optimal_transport::{
227 EMDKernelSampler, GWLossFunction, GromovWassersteinSampler, GroundMetric, TransportMethod,
228 WassersteinKernelSampler,
229};
230pub use out_of_core::{
231 OutOfCoreConfig, OutOfCoreKernelPipeline, OutOfCoreLoader, OutOfCoreNystroem,
232 OutOfCoreRBFSampler, OutOfCoreStrategy,
233};
234pub use parameter_learning::{
235 ObjectiveFunction as ParameterObjectiveFunction, OptimizationResult, ParameterBounds,
236 ParameterLearner, ParameterLearningConfig, ParameterSet, SearchStrategy,
237};
238pub use plugin_architecture::{
239 create_global_plugin_instance, list_global_plugins, register_global_plugin,
240 FittedPluginWrapper, KernelApproximationInstance, KernelApproximationPlugin,
241 LinearKernelInstance, LinearKernelPlugin, PluginConfig, PluginError, PluginFactory,
242 PluginMetadata, PluginWrapper,
243};
244pub use polynomial_count_sketch::PolynomialCountSketch;
245pub use polynomial_features::PolynomialFeatures;
246pub use progressive::{
247 FittedProgressiveNystroem, FittedProgressiveRBFSampler, ProgressiveConfig, ProgressiveNystroem,
248 ProgressiveQualityMetric, ProgressiveRBFSampler, ProgressiveResult, ProgressiveStep,
249 ProgressiveStrategy, StoppingCriterion,
250};
251pub use quantum_kernel_methods::{
252 EntanglementPattern, QuantumFeatureMap, QuantumKernelApproximation, QuantumKernelConfig,
253};
254pub use quasi_random_features::{QuasiRandomRBFSampler, QuasiRandomSequence};
255pub use rbf_sampler::{ArcCosineSampler, LaplacianSampler, PolynomialSampler, RBFSampler};
256pub use robust_kernels::{
257 BreakdownPointAnalysis, InfluenceFunctionDiagnostics, RobustEstimator as RobustKernelEstimator,
258 RobustKernelConfig, RobustLoss as RobustKernelLoss, RobustNystroem, RobustRBFSampler,
259};
260pub use scientific_computing_kernels::{
261 MultiscaleKernel, PhysicalSystem, PhysicsInformedConfig, PhysicsInformedKernel,
262};
263pub use sparse_gp::{
268 simd_sparse_gp, FittedSKI, FittedSparseGP, FittedTensorSKI, InducingPointSelector,
269 InducingPointStrategy, InterpolationMethod, KernelOps, LanczosMethod, MaternKernel,
270 PreconditionedCG, PreconditionerType, RBFKernel as SparseRBFKernel, ScalableInference,
271 ScalableInferenceMethod, SparseApproximation, SparseApproximationMethods,
272 SparseGaussianProcess, SparseKernel, StochasticVariationalInference,
273 StructuredKernelInterpolation, TensorSKI, VariationalFreeEnergy, VariationalParams,
274};
275pub use sparse_polynomial::{
276 SparseFormat, SparseMatrix, SparsePolynomialFeatures, SparsityStrategy,
277};
278pub use streaming_kernel::{
279 BufferStrategy, FeatureStatistics, ForgettingMechanism, StreamingConfig, StreamingNystroem,
280 StreamingRBFSampler, StreamingSample, UpdateFrequency,
281};
282pub use string_kernels::{
283 EditDistanceKernel, FittedEditDistanceKernel, FittedMismatchKernel, FittedNGramKernel,
284 FittedSpectrumKernel, FittedSubsequenceKernel, MismatchKernel, NGramKernel, NGramMode,
285 SpectrumKernel, SubsequenceKernel,
286};
287pub use structured_random_features::{
288 FastWalshHadamardTransform, StructuredMatrix, StructuredRFFHadamard, StructuredRandomFeatures,
289};
290pub use tensor_polynomial::{ContractionMethod, TensorOrdering, TensorPolynomialFeatures};
291pub use time_series_kernels::{
292 AutoregressiveKernelApproximation, DTWConfig, DTWDistanceMetric, DTWKernelApproximation,
293 DTWStepPattern, DTWWindowType, GlobalAlignmentKernelApproximation, SpectralKernelApproximation,
294 TimeSeriesKernelConfig, TimeSeriesKernelType,
295};
296pub use type_safe_kernels::{
297 ArcCosineKernel as TypeSafeArcCosineKernel, FastfoodMethod as TypeSafeFastfoodMethod,
298 FittedTypeSafeKernelApproximation, FittedTypeSafeLaplacianRandomFourierFeatures,
299 FittedTypeSafePolynomialNystrom, FittedTypeSafeRBFFastfood, FittedTypeSafeRBFNystrom,
300 FittedTypeSafeRBFRandomFourierFeatures, KernelType as TypeSafeKernelType,
301 LaplacianKernel as TypeSafeLaplacianKernel, NystromMethod as TypeSafeNystromMethod,
302 PolynomialKernel as TypeSafePolynomialKernel, QualityMetrics as TypeSafeQualityMetrics,
303 RBFKernel as TypeSafeRBFKernel, RandomFourierFeatures as TypeSafeRandomFourierFeatures,
304 Trained as TypeSafeTrained, TypeSafeKernelApproximation,
305 TypeSafeLaplacianRandomFourierFeatures, TypeSafePolynomialNystrom, TypeSafeRBFFastfood,
306 TypeSafeRBFNystrom, TypeSafeRBFRandomFourierFeatures, Untrained as TypeSafeUntrained,
307};
308pub use type_safety::{
309 ApproximationMethod,
310 ApproximationParameters,
311 ApproximationState,
312 ArcCosineKernel,
313 ComplexityClass,
314 FastfoodMethod,
315 FittableKernel,
316 FittableMethod,
317 FittedLaplacianRandomFourierFeatures,
318 FittedRBFNystrom,
319 FittedRBFRandomFourierFeatures,
320 KernelPresets,
322 KernelType,
323 KernelTypeWithBandwidth,
324 LaplacianKernel,
325 LaplacianRandomFourierFeatures,
326 NystromMethod,
327 OptimizationLevel,
328 PolynomialKernel,
329 PolynomialKernelType,
330 PolynomialNystrom,
331 ProfileGuidedConfig,
332 QualityMetrics,
333 RBFFastfood,
334 RBFKernel,
335 RBFNystrom,
336 RBFRandomFourierFeatures,
337 RandomFourierFeatures,
338 SerializableFittedParams,
339 SerializableKernelApproximation,
340 SerializableKernelConfig,
341 TargetArchitecture,
342 Trained,
343 TransformationParameters,
344 Untrained,
345};
346pub use unsafe_optimizations::{
347 batch_rbf_kernel_fast, dot_product_unrolled, elementwise_op_fast, fast_cosine_features,
348 matvec_multiply_fast, rbf_kernel_fast, safe_dot_product, safe_matvec_multiply,
349};
350pub use validation::{
351 BoundFunction, BoundType, CrossValidationResult, DimensionDependencyAnalysis,
352 KernelApproximationValidator, SampleComplexityAnalysis, StabilityAnalysis, TheoreticalBound,
353 ValidatableKernelMethod, ValidatedFittedMethod, ValidationConfig, ValidationResult,
354};
355
356#[allow(non_snake_case)]
357#[cfg(test)]
358mod tests {
359 use super::*;
360 use scirs2_core::ndarray::array;
361 use sklears_core::traits::{Fit, Transform};
362
363 #[test]
364 fn test_kernel_approximation_integration() {
365 let x = array![[1.0, 2.0], [2.0, 3.0], [3.0, 4.0], [4.0, 5.0],];
366
367 let rbf = RBFSampler::new(100);
369 let fitted_rbf = rbf.fit(&x, &()).unwrap();
370 let x_rbf = fitted_rbf.transform(&x).unwrap();
371 assert_eq!(x_rbf.shape(), &[4, 100]);
372
373 let laplacian = LaplacianSampler::new(50);
375 let fitted_laplacian = laplacian.fit(&x, &()).unwrap();
376 let x_laplacian = fitted_laplacian.transform(&x).unwrap();
377 assert_eq!(x_laplacian.shape(), &[4, 50]);
378
379 let chi2 = AdditiveChi2Sampler::new(2);
381 let x_chi2 = chi2.transform(&x.mapv(|v| v.abs())).unwrap();
382 assert_eq!(x_chi2.shape(), &[4, 6]); let poly = PolynomialSampler::new(30).degree(3).gamma(1.0).coef0(1.0);
386 let fitted_poly = poly.fit(&x, &()).unwrap();
387 let x_poly = fitted_poly.transform(&x).unwrap();
388 assert_eq!(x_poly.shape(), &[4, 30]);
389
390 let arc_cosine = ArcCosineSampler::new(25).degree(1);
392 let fitted_arc = arc_cosine.fit(&x, &()).unwrap();
393 let x_arc = fitted_arc.transform(&x).unwrap();
394 assert_eq!(x_arc.shape(), &[4, 25]);
395 }
396}