sklears_python/
lib.rs

1#![allow(dead_code)]
2#![allow(non_snake_case)]
3#![allow(missing_docs)]
4#![allow(deprecated)]
5//! Python bindings for the sklears machine learning library
6//!
7//! This crate provides PyO3-based Python bindings for sklears, enabling
8//! seamless integration with the Python ecosystem while maintaining
9//! Rust's performance advantages.
10//!
11//! # Features
12//!
13//! - Drop-in replacement for scikit-learn's most common algorithms
14//! - 3-100x performance improvements over scikit-learn
15//! - Full NumPy array compatibility
16//! - Comprehensive error handling with Python exceptions
17//! - Memory-safe operations with automatic reference counting
18//!
19//! # Example
20//!
21//! ```python
22//! import sklears_python as skl
23//! import numpy as np
24//!
25//! # Create sample data
26//! X = np.random.randn(100, 4)
27//! y = np.random.randn(100)
28//!
29//! # Train a linear regression model
30//! model = skl.LinearRegression()
31//! model.fit(X, y)
32//! predictions = model.predict(X)
33//! ```
34
35#[allow(unused_imports)]
36use pyo3::prelude::*;
37
38// Import modules - temporarily disabled problematic modules
39// mod clustering;
40// mod datasets;
41// mod ensemble;
42mod linear;
43// mod metrics;
44// mod model_selection;
45// mod naive_bayes;
46// mod neural_network;
47// mod preprocessing;
48// mod tree;
49mod utils;
50
51// Re-export main classes - temporarily disabled
52// pub use clustering::*;
53// pub use datasets::*;
54// pub use ensemble::*;
55pub use linear::*;
56// pub use metrics::*;
57// pub use model_selection::*;
58// pub use naive_bayes::*;
59// pub use neural_network::*;
60// pub use preprocessing::*;
61// pub use tree::*;
62pub use utils::*;
63
64/// Python module for sklears machine learning library
65#[pymodule]
66fn sklears_python(m: &Bound<'_, PyModule>) -> PyResult<()> {
67    // Set module metadata
68    m.add("__version__", "0.1.0-alpha.1")?;
69    m.add(
70        "__doc__",
71        "High-performance machine learning library with scikit-learn compatibility",
72    )?;
73
74    // Linear models
75    m.add_class::<linear::PyLinearRegression>()?;
76    m.add_class::<linear::PyRidge>()?;
77    m.add_class::<linear::PyLasso>()?;
78    m.add_class::<linear::PyLogisticRegression>()?;
79
80    // TEMPORARILY DISABLED - Ensemble methods
81    // m.add_class::<ensemble::PyGradientBoostingClassifier>()?;
82    // m.add_class::<ensemble::PyGradientBoostingRegressor>()?;
83    // m.add_class::<ensemble::PyAdaBoostClassifier>()?;
84    // m.add_class::<ensemble::PyVotingClassifier>()?;
85    // m.add_class::<ensemble::PyBaggingClassifier>()?;
86
87    // TEMPORARILY DISABLED - Neural networks
88    // m.add_class::<neural_network::PyMLPClassifier>()?;
89    // m.add_class::<neural_network::PyMLPRegressor>()?;
90
91    // TEMPORARILY DISABLED - Tree-based models
92    // m.add_class::<tree::PyDecisionTreeClassifier>()?;
93    // m.add_class::<tree::PyDecisionTreeRegressor>()?;
94    // m.add_class::<tree::PyRandomForestClassifier>()?;
95    // m.add_class::<tree::PyRandomForestRegressor>()?;
96
97    // TEMPORARILY DISABLED - Naive Bayes
98    // m.add_class::<naive_bayes::PyGaussianNB>()?;
99    // m.add_class::<naive_bayes::PyMultinomialNB>()?;
100    // m.add_class::<naive_bayes::PyBernoulliNB>()?;
101    // m.add_class::<naive_bayes::PyComplementNB>()?;
102
103    // TEMPORARILY DISABLED - Clustering
104    // m.add_class::<clustering::PyKMeans>()?;
105    // m.add_class::<clustering::PyDBSCAN>()?;
106
107    // TEMPORARILY DISABLED - Preprocessing
108    // m.add_class::<preprocessing::PyStandardScaler>()?;
109    // m.add_class::<preprocessing::PyMinMaxScaler>()?;
110    // m.add_class::<preprocessing::PyLabelEncoder>()?;
111
112    // TEMPORARILY DISABLED - Metrics - Regression
113    // m.add_function(wrap_pyfunction!(metrics::mean_squared_error, m)?)?;
114    // m.add_function(wrap_pyfunction!(metrics::mean_absolute_error, m)?)?;
115    // m.add_function(wrap_pyfunction!(metrics::r2_score, m)?)?;
116    // m.add_function(wrap_pyfunction!(metrics::mean_squared_log_error, m)?)?;
117    // m.add_function(wrap_pyfunction!(metrics::median_absolute_error, m)?)?;
118
119    // TEMPORARILY DISABLED - Metrics - Classification
120    // m.add_function(wrap_pyfunction!(metrics::accuracy_score, m)?)?;
121    // m.add_function(wrap_pyfunction!(metrics::precision_score, m)?)?;
122    // m.add_function(wrap_pyfunction!(metrics::recall_score, m)?)?;
123    // m.add_function(wrap_pyfunction!(metrics::f1_score, m)?)?;
124    // m.add_function(wrap_pyfunction!(metrics::confusion_matrix, m)?)?;
125    // m.add_function(wrap_pyfunction!(metrics::classification_report, m)?)?;
126
127    // TEMPORARILY DISABLED - Model selection
128    // m.add_function(wrap_pyfunction!(model_selection::train_test_split, m)?)?;
129    // m.add_class::<model_selection::PyKFold>()?;
130
131    // TEMPORARILY DISABLED - Dataset functions
132    // datasets::register_dataset_functions(py, m)?;
133
134    // Utility functions
135    m.add_function(wrap_pyfunction!(utils::get_version, m)?)?;
136    m.add_function(wrap_pyfunction!(utils::get_build_info, m)?)?;
137
138    Ok(())
139}