1#![allow(dead_code)]
2#![allow(non_snake_case)]
3#![allow(missing_docs)]
4#![allow(deprecated)]
5pub mod adaptive_bandwidth_rbf;
13pub mod adaptive_dimension;
14pub mod adaptive_nystroem;
15pub mod advanced_testing;
16pub mod anisotropic_rbf;
17pub mod benchmarking;
18pub mod budget_constrained;
19pub mod chi2_samplers;
20pub mod computer_vision_kernels;
21pub mod cross_validation;
22pub mod custom_kernel;
23pub mod distributed_kernel;
24pub mod ensemble_nystroem;
25pub mod error_bounded;
26pub mod fastfood;
27pub mod gpu_acceleration;
28pub mod gradient_kernel_learning;
29pub mod graph_kernels;
30pub mod homogeneous_polynomial;
31pub mod incremental_nystroem;
32pub mod information_theoretic;
33pub mod kernel_ridge_regression;
34pub mod memory_efficient;
35pub mod multi_kernel_learning;
36pub mod multi_scale_rbf;
37pub mod nlp_kernels;
38pub mod numerical_stability;
39pub mod nystroem;
40pub mod optimal_transport;
41pub mod out_of_core;
42pub mod parameter_learning;
43pub mod plugin_architecture;
44pub mod polynomial_count_sketch;
45pub mod polynomial_features;
46pub mod progressive;
47pub mod quasi_random_features;
48pub mod rbf_sampler;
49pub mod robust_kernels;
50pub mod simple_test;
56pub mod sparse_gp;
57pub mod sparse_polynomial;
58pub mod streaming_kernel;
59pub mod string_kernels;
60pub mod structured_random_features;
61pub mod tensor_polynomial;
62pub mod time_series_kernels;
63pub mod type_safe_kernels;
64pub mod type_safety;
65pub mod validation;
66
67pub use adaptive_bandwidth_rbf::{
68 AdaptiveBandwidthRBFSampler, BandwidthSelectionStrategy, ObjectiveFunction,
69};
70pub use adaptive_dimension::{
71 AdaptiveDimensionConfig, AdaptiveRBFSampler, DimensionSelectionResult,
72 FittedAdaptiveRBFSampler, QualityMetric as AdaptiveQualityMetric, SelectionStrategy,
73};
74pub use adaptive_nystroem::{
75 AdaptiveNystroem, ComponentSelectionStrategy, ErrorBoundMethod as AdaptiveErrorBoundMethod,
76};
77pub use advanced_testing::{
78 ApproximationError, BaselineMethod, BoundType as TestingBoundType, BoundValidation,
79 ConvergenceAnalyzer, ConvergenceResult, ErrorBoundsResult, ErrorBoundsValidator,
80 QualityAssessment, QualityMetric as TestingQualityMetric, QualityResult, ReferenceMethod,
81};
82pub use anisotropic_rbf::{
83 AnisotropicRBFSampler, FittedAnisotropicRBF, FittedMahalanobisRBF, FittedRobustAnisotropicRBF,
84 MahalanobisRBFSampler, RobustAnisotropicRBFSampler, RobustEstimator,
85};
86pub use benchmarking::{
87 BenchmarkConfig, BenchmarkDataset, BenchmarkResult, BenchmarkSummary,
88 BenchmarkableKernelMethod, BenchmarkableTransformer, KernelApproximationBenchmark,
89 PerformanceMetric, QualityMetric,
90};
91pub use budget_constrained::{
92 BudgetConstrainedConfig, BudgetConstrainedNystroem, BudgetConstrainedRBFSampler,
93 BudgetConstraint, BudgetOptimizationResult, BudgetUsage, FittedBudgetConstrainedNystroem,
94 FittedBudgetConstrainedRBFSampler, OptimizationStrategy,
95};
96pub use chi2_samplers::{AdditiveChi2Sampler, SkewedChi2Sampler};
97pub use computer_vision_kernels::{
98 ActivationFunction, ConvolutionalKernelFeatures, FittedConvolutionalKernelFeatures,
99 FittedScaleInvariantFeatures, FittedSpatialPyramidFeatures, FittedTextureKernelApproximation,
100 PoolingMethod, ScaleInvariantFeatures, SpatialPyramidFeatures, TextureKernelApproximation,
101};
102pub use cross_validation::{
103 CVSplitter, CVStrategy, CrossValidationConfig, CrossValidationResult as CVResult,
104 CrossValidator, KFoldSplitter, MonteCarloCVSplitter, ScoringMetric, TimeSeriesSplitter,
105};
106pub use custom_kernel::{
107 CustomExponentialKernel, CustomKernelSampler, CustomLaplacianKernel, CustomPolynomialKernel,
108 CustomRBFKernel, KernelFunction,
109};
110pub use distributed_kernel::{
111 AggregationMethod, CommunicationPattern, DistributedConfig, DistributedNystroem,
112 DistributedRBFSampler, PartitionStrategy, Worker,
113};
114pub use ensemble_nystroem::{
115 EnsembleMethod, EnsembleNystroem, QualityMetric as EnsembleQualityMetric,
116};
117pub use error_bounded::{
118 ErrorBound, ErrorBoundMethod, ErrorBoundedConfig, ErrorBoundedNystroem, ErrorBoundedRBFSampler,
119 FittedErrorBoundedNystroem, FittedErrorBoundedRBFSampler,
120};
121pub use fastfood::{FastfoodKernel, FastfoodKernelParams, FastfoodTransform};
122pub use gpu_acceleration::{
123 FittedGpuNystroem, FittedGpuRBFSampler, GpuBackend, GpuConfig, GpuContext, GpuDevice,
124 GpuNystroem, GpuProfiler, GpuRBFSampler, MemoryStrategy, Precision,
125};
126pub use gradient_kernel_learning::{
127 GradientConfig, GradientKernelLearner, GradientMultiKernelLearner, GradientOptimizer,
128 GradientResult, KernelObjective,
129};
130pub use graph_kernels::{
131 FittedRandomWalkKernel, FittedShortestPathKernel, FittedSubgraphKernel,
132 FittedWeisfeilerLehmanKernel, Graph, RandomWalkKernel, ShortestPathKernel, SubgraphKernel,
133 WeisfeilerLehmanKernel,
134};
135pub use homogeneous_polynomial::{
136 CoefficientMethod, HomogeneousPolynomialFeatures, NormalizationMethod,
137};
138pub use incremental_nystroem::{IncrementalNystroem, UpdateStrategy};
139pub use information_theoretic::{
140 EntropyFeatureSelector, EntropySelectionMethod, FittedEntropyFeatureSelector,
141 FittedInformationBottleneckExtractor, FittedKLDivergenceKernel, FittedMutualInformationKernel,
142 InformationBottleneckExtractor, KLDivergenceKernel, KLReferenceDistribution,
143 MutualInformationKernel,
144};
145pub use kernel_ridge_regression::{
146 ApproximationMethod as KRRApproximationMethod, KernelRidgeRegression,
147 MultiTaskKernelRidgeRegression, OnlineKernelRidgeRegression, RobustKernelRidgeRegression,
148 RobustLoss, Solver, TaskRegularization,
149};
150pub use memory_efficient::{
151 FittedMemoryEfficientNystroem, FittedMemoryEfficientRBFSampler, MemoryConfig,
152 MemoryEfficientNystroem, MemoryEfficientRBFSampler, MemoryMonitor,
153};
154pub use multi_kernel_learning::{
155 ApproximationMethod as MKLApproximationMethod, BaseKernel,
156 CombinationStrategy as MKLCombinationStrategy, KernelStatistics, MultiKernelConfig,
157 MultipleKernelLearning, WeightLearningAlgorithm,
158};
159pub use multi_scale_rbf::{BandwidthStrategy, CombinationStrategy, MultiScaleRBFSampler};
160pub use nlp_kernels::{
161 AggregationMethod as NLPAggregationMethod, DocumentKernelApproximation,
162 FittedDocumentKernelApproximation, FittedSemanticKernelApproximation,
163 FittedSyntacticKernelApproximation, FittedTextKernelApproximation, SemanticKernelApproximation,
164 SimilarityMeasure, SyntacticKernelApproximation, TextKernelApproximation, TreeKernelType,
165};
166pub use numerical_stability::{
167 stable_kernel_matrix, NumericalStabilityMonitor, StabilityConfig, StabilityMetrics,
168 StabilityWarning,
169};
170pub use nystroem::{Kernel, Nystroem, SamplingStrategy};
171pub use optimal_transport::{
172 EMDKernelSampler, GWLossFunction, GromovWassersteinSampler, GroundMetric, TransportMethod,
173 WassersteinKernelSampler,
174};
175pub use out_of_core::{
176 OutOfCoreConfig, OutOfCoreKernelPipeline, OutOfCoreLoader, OutOfCoreNystroem,
177 OutOfCoreRBFSampler, OutOfCoreStrategy,
178};
179pub use parameter_learning::{
180 ObjectiveFunction as ParameterObjectiveFunction, OptimizationResult, ParameterBounds,
181 ParameterLearner, ParameterLearningConfig, ParameterSet, SearchStrategy,
182};
183pub use plugin_architecture::{
184 create_global_plugin_instance, list_global_plugins, register_global_plugin,
185 FittedPluginWrapper, KernelApproximationInstance, KernelApproximationPlugin,
186 LinearKernelInstance, LinearKernelPlugin, PluginConfig, PluginError, PluginFactory,
187 PluginMetadata, PluginWrapper,
188};
189pub use polynomial_count_sketch::PolynomialCountSketch;
190pub use polynomial_features::PolynomialFeatures;
191pub use progressive::{
192 FittedProgressiveNystroem, FittedProgressiveRBFSampler, ProgressiveConfig, ProgressiveNystroem,
193 ProgressiveQualityMetric, ProgressiveRBFSampler, ProgressiveResult, ProgressiveStep,
194 ProgressiveStrategy, StoppingCriterion,
195};
196pub use quasi_random_features::{QuasiRandomRBFSampler, QuasiRandomSequence};
197pub use rbf_sampler::{ArcCosineSampler, LaplacianSampler, PolynomialSampler, RBFSampler};
198pub use robust_kernels::{
199 BreakdownPointAnalysis, InfluenceFunctionDiagnostics, RobustEstimator as RobustKernelEstimator,
200 RobustKernelConfig, RobustLoss as RobustKernelLoss, RobustNystroem, RobustRBFSampler,
201};
202pub use sparse_gp::{
207 simd_sparse_gp, FittedSKI, FittedSparseGP, FittedTensorSKI, InducingPointSelector,
208 InducingPointStrategy, InterpolationMethod, KernelOps, LanczosMethod, MaternKernel,
209 PreconditionedCG, PreconditionerType, RBFKernel as SparseRBFKernel, ScalableInference,
210 ScalableInferenceMethod, SparseApproximation, SparseApproximationMethods,
211 SparseGaussianProcess, SparseKernel, StochasticVariationalInference,
212 StructuredKernelInterpolation, TensorSKI, VariationalFreeEnergy, VariationalParams,
213};
214pub use sparse_polynomial::{
215 SparseFormat, SparseMatrix, SparsePolynomialFeatures, SparsityStrategy,
216};
217pub use streaming_kernel::{
218 BufferStrategy, FeatureStatistics, ForgettingMechanism, StreamingConfig, StreamingNystroem,
219 StreamingRBFSampler, StreamingSample, UpdateFrequency,
220};
221pub use string_kernels::{
222 EditDistanceKernel, FittedEditDistanceKernel, FittedMismatchKernel, FittedNGramKernel,
223 FittedSpectrumKernel, FittedSubsequenceKernel, MismatchKernel, NGramKernel, NGramMode,
224 SpectrumKernel, SubsequenceKernel,
225};
226pub use structured_random_features::{
227 FastWalshHadamardTransform, StructuredMatrix, StructuredRFFHadamard, StructuredRandomFeatures,
228};
229pub use tensor_polynomial::{ContractionMethod, TensorOrdering, TensorPolynomialFeatures};
230pub use time_series_kernels::{
231 AutoregressiveKernelApproximation, DTWConfig, DTWDistanceMetric, DTWKernelApproximation,
232 DTWStepPattern, DTWWindowType, GlobalAlignmentKernelApproximation, SpectralKernelApproximation,
233 TimeSeriesKernelConfig, TimeSeriesKernelType,
234};
235pub use type_safe_kernels::{
236 ArcCosineKernel as TypeSafeArcCosineKernel, FastfoodMethod as TypeSafeFastfoodMethod,
237 FittedTypeSafeKernelApproximation, FittedTypeSafeLaplacianRandomFourierFeatures,
238 FittedTypeSafePolynomialNystrom, FittedTypeSafeRBFFastfood, FittedTypeSafeRBFNystrom,
239 FittedTypeSafeRBFRandomFourierFeatures, KernelType as TypeSafeKernelType,
240 LaplacianKernel as TypeSafeLaplacianKernel, NystromMethod as TypeSafeNystromMethod,
241 PolynomialKernel as TypeSafePolynomialKernel, QualityMetrics as TypeSafeQualityMetrics,
242 RBFKernel as TypeSafeRBFKernel, RandomFourierFeatures as TypeSafeRandomFourierFeatures,
243 Trained as TypeSafeTrained, TypeSafeKernelApproximation,
244 TypeSafeLaplacianRandomFourierFeatures, TypeSafePolynomialNystrom, TypeSafeRBFFastfood,
245 TypeSafeRBFNystrom, TypeSafeRBFRandomFourierFeatures, Untrained as TypeSafeUntrained,
246};
247pub use type_safety::{
248 ApproximationMethod,
249 ApproximationParameters,
250 ApproximationState,
251 ArcCosineKernel,
252 ComplexityClass,
253 FastfoodMethod,
254 FittableKernel,
255 FittableMethod,
256 FittedLaplacianRandomFourierFeatures,
257 FittedRBFNystrom,
258 FittedRBFRandomFourierFeatures,
259 KernelPresets,
261 KernelType,
262 KernelTypeWithBandwidth,
263 LaplacianKernel,
264 LaplacianRandomFourierFeatures,
265 NystromMethod,
266 OptimizationLevel,
267 PolynomialKernel,
268 PolynomialKernelType,
269 PolynomialNystrom,
270 ProfileGuidedConfig,
271 QualityMetrics,
272 RBFFastfood,
273 RBFKernel,
274 RBFNystrom,
275 RBFRandomFourierFeatures,
276 RandomFourierFeatures,
277 SerializableFittedParams,
278 SerializableKernelApproximation,
279 SerializableKernelConfig,
280 TargetArchitecture,
281 Trained,
282 TransformationParameters,
283 Untrained,
284};
285pub use validation::{
286 BoundFunction, BoundType, CrossValidationResult, DimensionDependencyAnalysis,
287 KernelApproximationValidator, SampleComplexityAnalysis, StabilityAnalysis, TheoreticalBound,
288 ValidatableKernelMethod, ValidatedFittedMethod, ValidationConfig, ValidationResult,
289};
290
291#[allow(non_snake_case)]
292#[cfg(test)]
293mod tests {
294 use super::*;
295 use scirs2_core::ndarray::array;
296 use sklears_core::traits::{Fit, Transform};
297
298 #[test]
299 fn test_kernel_approximation_integration() {
300 let x = array![[1.0, 2.0], [2.0, 3.0], [3.0, 4.0], [4.0, 5.0],];
301
302 let rbf = RBFSampler::new(100);
304 let fitted_rbf = rbf.fit(&x, &()).unwrap();
305 let x_rbf = fitted_rbf.transform(&x).unwrap();
306 assert_eq!(x_rbf.shape(), &[4, 100]);
307
308 let laplacian = LaplacianSampler::new(50);
310 let fitted_laplacian = laplacian.fit(&x, &()).unwrap();
311 let x_laplacian = fitted_laplacian.transform(&x).unwrap();
312 assert_eq!(x_laplacian.shape(), &[4, 50]);
313
314 let chi2 = AdditiveChi2Sampler::new(2);
316 let x_chi2 = chi2.transform(&x.mapv(|v| v.abs())).unwrap();
317 assert_eq!(x_chi2.shape(), &[4, 6]); let poly = PolynomialSampler::new(30).degree(3).gamma(1.0).coef0(1.0);
321 let fitted_poly = poly.fit(&x, &()).unwrap();
322 let x_poly = fitted_poly.transform(&x).unwrap();
323 assert_eq!(x_poly.shape(), &[4, 30]);
324
325 let arc_cosine = ArcCosineSampler::new(25).degree(1);
327 let fitted_arc = arc_cosine.fit(&x, &()).unwrap();
328 let x_arc = fitted_arc.transform(&x).unwrap();
329 assert_eq!(x_arc.shape(), &[4, 25]);
330 }
331}