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