r-scikit-learn 0.1.0__cp313-cp313-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. r_scikit_learn-0.1.0.dist-info/METADATA +349 -0
  2. r_scikit_learn-0.1.0.dist-info/RECORD +42 -0
  3. r_scikit_learn-0.1.0.dist-info/WHEEL +4 -0
  4. r_scikit_learn-0.1.0.dist-info/licenses/LICENSE +17 -0
  5. r_scikit_learn-0.1.0.dist-info/sboms/r-scikit-learn-core.cyclonedx.json +5561 -0
  6. rsklearn/__init__.py +48 -0
  7. rsklearn/_core.cp313-win_amd64.pyd +0 -0
  8. rsklearn/_validation.py +169 -0
  9. rsklearn/base.py +237 -0
  10. rsklearn/compose/__init__.py +5 -0
  11. rsklearn/compose/_column_transformer.py +601 -0
  12. rsklearn/impute/__init__.py +5 -0
  13. rsklearn/impute/_simple_imputer.py +381 -0
  14. rsklearn/linear_model/__init__.py +15 -0
  15. rsklearn/linear_model/_base.py +98 -0
  16. rsklearn/linear_model/_coordinate_descent.py +160 -0
  17. rsklearn/linear_model/_least_squares.py +174 -0
  18. rsklearn/linear_model/_logistic.py +253 -0
  19. rsklearn/linear_model/_warnings.py +5 -0
  20. rsklearn/metrics/__init__.py +23 -0
  21. rsklearn/metrics/_classification.py +350 -0
  22. rsklearn/metrics/_regression.py +99 -0
  23. rsklearn/metrics/_validation.py +71 -0
  24. rsklearn/model_selection/__init__.py +13 -0
  25. rsklearn/model_selection/_split.py +305 -0
  26. rsklearn/model_selection/_utils.py +96 -0
  27. rsklearn/model_selection/_validation.py +195 -0
  28. rsklearn/pipeline.py +460 -0
  29. rsklearn/preprocessing/__init__.py +19 -0
  30. rsklearn/preprocessing/_base.py +7 -0
  31. rsklearn/preprocessing/_categorical.py +337 -0
  32. rsklearn/preprocessing/_label_encoder.py +124 -0
  33. rsklearn/preprocessing/_minmax_scaler.py +120 -0
  34. rsklearn/preprocessing/_normalizer.py +77 -0
  35. rsklearn/preprocessing/_one_hot_encoder.py +420 -0
  36. rsklearn/preprocessing/_ordinal_encoder.py +316 -0
  37. rsklearn/preprocessing/_robust_scaler.py +146 -0
  38. rsklearn/preprocessing/_standard_scaler.py +110 -0
  39. rsklearn/py.typed +1 -0
  40. rsklearn/utils/__init__.py +29 -0
  41. rsklearn/utils/sparse.py +197 -0
  42. rsklearn/utils/validation.py +418 -0
@@ -0,0 +1,349 @@
1
+ Metadata-Version: 2.4
2
+ Name: r-scikit-learn
3
+ Version: 0.1.0
4
+ Classifier: Development Status :: 3 - Alpha
5
+ Classifier: License :: OSI Approved :: MIT License
6
+ Classifier: Programming Language :: Python :: 3
7
+ Classifier: Programming Language :: Python :: 3.10
8
+ Classifier: Programming Language :: Python :: 3.11
9
+ Classifier: Programming Language :: Python :: 3.12
10
+ Classifier: Programming Language :: Python :: 3.13
11
+ Classifier: Programming Language :: Rust
12
+ Classifier: Typing :: Typed
13
+ Requires-Dist: numpy>=1.23
14
+ Requires-Dist: scipy>=1.10
15
+ Requires-Dist: maturin>=1.9,<2.0 ; extra == 'dev'
16
+ Requires-Dist: pytest>=8 ; extra == 'dev'
17
+ Requires-Dist: ruff>=0.11 ; extra == 'dev'
18
+ Requires-Dist: scikit-learn>=1.6 ; extra == 'dev'
19
+ Provides-Extra: dev
20
+ License-File: LICENSE
21
+ Summary: High-performance scikit-learn-style machine learning powered by safe Rust
22
+ Keywords: machine-learning,preprocessing,rust,numpy,scikit-learn
23
+ Home-Page: https://github.com/rishib42/r-scikit-learn
24
+ Author: r-scikit-learn contributors
25
+ License-Expression: MIT
26
+ Requires-Python: >=3.10
27
+ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
28
+ Project-URL: Homepage, https://github.com/rishib42/r-scikit-learn
29
+ Project-URL: Issues, https://github.com/rishib42/r-scikit-learn/issues
30
+ Project-URL: Repository, https://github.com/rishib42/r-scikit-learn
31
+
32
+ # r-scikit-learn
33
+
34
+ Fast, familiar machine-learning building blocks powered by safe Rust. 🦀
35
+
36
+ `r-scikit-learn` combines a Rust computational core with lightweight,
37
+ scikit-learn-style Python estimators. Version 0.1.0 includes:
38
+
39
+ - Preprocessing, categorical encoding, and missing-value imputation
40
+ - Pipelines and column transformers
41
+ - Classification and regression metrics
42
+ - Dataset splitting and cross-validation
43
+ - Rust-powered linear models
44
+
45
+ This project is not affiliated with or endorsed by scikit-learn.
46
+
47
+ The installable distribution is named `r-scikit-learn`. Its Python import
48
+ package is `rsklearn`.
49
+
50
+ ## Quick Start 🚀
51
+
52
+ After the first PyPI release, install with:
53
+
54
+ ```bash
55
+ python -m pip install r-scikit-learn
56
+ ```
57
+
58
+ Or build from source on macOS/Linux:
59
+
60
+ ```bash
61
+ python -m venv .venv
62
+ source .venv/bin/activate
63
+ python -m pip install -U pip maturin
64
+ maturin develop
65
+ pytest
66
+ ```
67
+
68
+ On Windows PowerShell, activate with `.venv\Scripts\Activate.ps1`. Building
69
+ requires a stable Rust toolchain and Python 3.10 or newer.
70
+
71
+ ## Usage
72
+
73
+ ```python
74
+ import numpy as np
75
+ from rsklearn.preprocessing import StandardScaler
76
+
77
+ X = np.array([[1.0, 10.0], [2.0, 20.0], [3.0, 30.0]])
78
+ scaler = StandardScaler()
79
+ X_scaled = scaler.fit_transform(X)
80
+ X_original = scaler.inverse_transform(X_scaled)
81
+ ```
82
+
83
+ ```python
84
+ from rsklearn.preprocessing import MinMaxScaler
85
+
86
+ scaler = MinMaxScaler(feature_range=(-1.0, 1.0), clip=True)
87
+ X_scaled = scaler.fit_transform([[1, 10], [2, 20], [3, 30]])
88
+ ```
89
+
90
+ ```python
91
+ from rsklearn.preprocessing import LabelEncoder
92
+
93
+ encoder = LabelEncoder()
94
+ encoded = encoder.fit_transform(["café", "東京", "café"])
95
+ labels = encoder.inverse_transform(encoded)
96
+ ```
97
+
98
+ ```python
99
+ from rsklearn.preprocessing import Normalizer
100
+
101
+ X_normalized = Normalizer(norm="l2").fit_transform([[3.0, 4.0], [0.0, 0.0]])
102
+ ```
103
+
104
+ ```python
105
+ from rsklearn.preprocessing import RobustScaler
106
+
107
+ X_robust = RobustScaler(quantile_range=(25.0, 75.0)).fit_transform(X)
108
+ ```
109
+
110
+ ```python
111
+ from rsklearn.preprocessing import OrdinalEncoder
112
+
113
+ encoder = OrdinalEncoder(
114
+ handle_unknown="use_encoded_value",
115
+ unknown_value=-1,
116
+ )
117
+ X_encoded = encoder.fit_transform([["small"], ["large"], ["small"]])
118
+ ```
119
+
120
+ ```python
121
+ from rsklearn.preprocessing import OneHotEncoder
122
+
123
+ encoder = OneHotEncoder(handle_unknown="ignore")
124
+ X_one_hot = encoder.fit_transform([["small"], ["large"], ["small"]])
125
+ ```
126
+
127
+ ```python
128
+ import numpy as np
129
+ from rsklearn.impute import SimpleImputer
130
+
131
+ imputer = SimpleImputer(strategy="median", add_indicator=True)
132
+ X_imputed = imputer.fit_transform([[1.0, np.nan], [3.0, 4.0]])
133
+ ```
134
+
135
+ ```python
136
+ from rsklearn.impute import SimpleImputer
137
+ from rsklearn.pipeline import make_pipeline
138
+ from rsklearn.preprocessing import StandardScaler
139
+
140
+ pipeline = make_pipeline(SimpleImputer(), StandardScaler())
141
+ X_prepared = pipeline.fit_transform([[1.0, np.nan], [3.0, 4.0]])
142
+ ```
143
+
144
+ ```python
145
+ from rsklearn.compose import ColumnTransformer
146
+ from rsklearn.impute import SimpleImputer
147
+ from rsklearn.pipeline import make_pipeline
148
+ from rsklearn.preprocessing import OneHotEncoder
149
+ from rsklearn.preprocessing import StandardScaler
150
+
151
+ preprocessor = ColumnTransformer(
152
+ [
153
+ ("numeric", make_pipeline(SimpleImputer(), StandardScaler()), ["age"]),
154
+ ("categorical", OneHotEncoder(handle_unknown="ignore"), ["city"]),
155
+ ],
156
+ remainder="drop",
157
+ )
158
+ X_prepared = preprocessor.fit_transform(table)
159
+ ```
160
+
161
+ ```python
162
+ from rsklearn.metrics import accuracy_score, mean_squared_error
163
+
164
+ accuracy = accuracy_score(y_true, y_pred)
165
+ mse = mean_squared_error(y_true_regression, y_pred_regression)
166
+ ```
167
+
168
+ ```python
169
+ from rsklearn.model_selection import cross_val_score, train_test_split
170
+
171
+ X_train, X_test, y_train, y_test = train_test_split(
172
+ X, y, test_size=0.2, random_state=42, stratify=y
173
+ )
174
+ scores = cross_val_score(estimator, X, y, cv=5, scoring="accuracy")
175
+ ```
176
+
177
+ ```python
178
+ from rsklearn.linear_model import Lasso, LinearRegression, LogisticRegression, Ridge
179
+
180
+ regressor = Ridge(alpha=1.0).fit(X_train, y_train)
181
+ predictions = regressor.predict(X_test)
182
+ sparse_regressor = Lasso(alpha=0.1).fit(X_train, y_train)
183
+
184
+ classifier = LogisticRegression(max_iter=500).fit(X_train, class_labels)
185
+ probabilities = classifier.predict_proba(X_test)
186
+ ```
187
+
188
+ ## Highlights ✨
189
+
190
+ ### Numeric Preprocessing
191
+
192
+ - Accepts non-empty 2D NumPy arrays and numeric array-like input.
193
+ - Uses float64 fitted statistics and native float32 kernels where supported.
194
+ - Ignores NaNs while fitting, preserves them while transforming, and rejects
195
+ infinity.
196
+ - Supports incremental `partial_fit` for `StandardScaler` and `MinMaxScaler`.
197
+ - Supports L1, L2, and max row normalization.
198
+ - Provides quantile-based `RobustScaler` fitting and inverse transforms.
199
+
200
+ ### Labels And Categories
201
+
202
+ - `LabelEncoder` supports integers, floats, booleans, and UTF-8 strings.
203
+ - `OrdinalEncoder` supports discovered or explicit categories, unknown values,
204
+ missing values, and infrequent-category grouping.
205
+ - `OneHotEncoder` provides native Rust CSR construction, sparse or dense
206
+ output, category dropping, inverse transforms, and feature names.
207
+ - Contiguous NumPy Unicode arrays use a fixed-width Rust codepoint pathway,
208
+ avoiding per-label Python string conversion in the hot path.
209
+
210
+ ### Imputation And Composition
211
+
212
+ - `SimpleImputer` supports dense numeric and categorical input, standard and
213
+ callable strategies, missing indicators, inverse transforms, and feature
214
+ names.
215
+ - Numeric imputation statistics and replacement use native Rust kernels.
216
+ - `Pipeline` and `make_pipeline` support nested parameters, passthrough steps,
217
+ prediction, scoring, inverse transforms, and feature-name propagation.
218
+ - `ColumnTransformer` supports named or positional column selection, remainder
219
+ estimators, transformer weights, and density-based dense or CSR output.
220
+
221
+ ### Metrics And Model Selection
222
+
223
+ - Classification metrics: `accuracy_score`, `confusion_matrix`,
224
+ `precision_score`, `recall_score`, and `f1_score`.
225
+ - Regression metrics: `mean_squared_error`, `mean_absolute_error`, and
226
+ `r2_score`.
227
+ - Model selection: `train_test_split`, `KFold`, `StratifiedKFold`, and
228
+ `cross_val_score`.
229
+ - Large reductions, weighted confusion matrices, and common split operations
230
+ use safe Rust kernels.
231
+
232
+ ### Linear Models
233
+
234
+ - Dense `LinearRegression`, `Ridge`, `Lasso`, `ElasticNet`, and
235
+ `LogisticRegression`.
236
+ - Optimized LAPACK least-squares fitting, Rust regularized solvers, and NumPy's
237
+ BLAS path for dense prediction.
238
+ - Sample weights, intercepts, rank-deficient input, and multi-output
239
+ regression.
240
+ - Shared Rust cyclic coordinate descent for `Lasso` and `ElasticNet`.
241
+ - Binary Rust logistic solvers and BLAS-backed multiclass L-BFGS, including
242
+ binary L1 and elastic-net fitting.
243
+
244
+ ### Estimator And Sparse Foundations
245
+
246
+ Public estimator-author APIs are available from `rsklearn.base` and
247
+ `rsklearn.utils.validation`. They include `BaseEstimator`, `TransformerMixin`,
248
+ `ClassifierMixin`, `RegressorMixin`, `clone`, `check_array`, `check_X_y`,
249
+ `check_is_fitted`, and `validate_data`. Scalers use these APIs for fitted-state,
250
+ feature-count, and string feature-name validation. The numeric preprocessors
251
+ pass scikit-learn's official estimator checks.
252
+
253
+ Shared sparse infrastructure is available from `rsklearn.utils`. It validates
254
+ and converts SciPy sparse formats, exposes canonical CSR/CSC components to safe
255
+ Rust kernels, reconstructs validated sparse output, and provides native
256
+ float32/float64 sparse column scaling. Existing estimators remain dense-only
257
+ until their sparse-specific behavior is implemented.
258
+
259
+ For `StandardScaler`, `mean_` follows scikit-learn's practical behavior: it is
260
+ available when either centering or standard-deviation scaling needs it, and is
261
+ `None` only when both options are disabled. `var_` and `scale_` are `None`
262
+ when `with_std=False`.
263
+
264
+ ## Compatibility
265
+
266
+ The supported behavior is differential-tested against scikit-learn, including
267
+ population variance, constant features, non-default feature ranges, clipping,
268
+ round trips, and sorted label classes. `r-scikit-learn` is intentionally much
269
+ smaller and does not yet claim complete estimator API compatibility.
270
+
271
+ ## Current Production Gaps 🛠️
272
+
273
+ The core implemented behavior is tested and packaged across Linux, macOS, and
274
+ Windows, but the project remains alpha software. Before a stable 1.0 release,
275
+ the following compatibility and operational work remains:
276
+
277
+ - Sparse-aware estimator behavior, including non-centering `StandardScaler`
278
+ operation. Shared CSR/CSC validation and Rust kernels are implemented.
279
+ - `sample_weight` support for `StandardScaler.partial_fit`.
280
+ - Comprehensive `get_feature_names_out` support and configurable output
281
+ containers across estimators.
282
+ - Estimator-check compliance for future classifier and regressor types.
283
+ - Broader `copy=False` support and native float32 Rust kernels for scalers.
284
+ - Further multiclass logistic solver optimization and broader parallel-kernel
285
+ tuning.
286
+ - Broader fuzz, property, memory-pressure, and long-running benchmark coverage.
287
+
288
+ ## Benchmarks ⚡
289
+
290
+ Performance depends on workload, hardware, input layout, and build mode. Run
291
+ the benchmarks locally:
292
+
293
+ ```bash
294
+ maturin develop --release
295
+ python benches/benchmark_preprocessing.py
296
+ python benches/benchmark_preprocessing.py --include-largest
297
+ python benches/benchmark_metrics.py
298
+ python benches/benchmark_linear_models.py
299
+ ```
300
+
301
+ The benchmark warms up each operation and reports multiple repetitions for
302
+ fit, transform, and end-to-end calls. Public `r-scikit-learn` timings include
303
+ Python-side validation and any required contiguous float64 conversion.
304
+ Performance benchmarks must use a release Rust extension. `maturin develop`
305
+ without `--release` intentionally builds an unoptimized debug extension for
306
+ development and can be tens of times slower.
307
+
308
+ ## Development
309
+
310
+ ```bash
311
+ maturin develop --extras dev
312
+ cargo fmt --check
313
+ cargo clippy --all-targets -- -D warnings
314
+ cargo test
315
+ ruff format --check python tests benches
316
+ ruff check python tests benches
317
+ pytest
318
+ maturin build --release
319
+ maturin sdist --out dist
320
+ python -c "from rsklearn.preprocessing import StandardScaler"
321
+ ```
322
+
323
+ The Rust binding accepts contiguous NumPy arrays through `rust-numpy`. Public
324
+ Python validation may copy non-contiguous or non-float64 input. Rust produces
325
+ new owned output arrays so transformations never mutate caller input.
326
+ Substantial numerical loops release the Python GIL.
327
+
328
+ ## Release
329
+
330
+ 1. Run all development checks and build a release wheel.
331
+ 2. Install the wheel into a clean virtual environment and run the import smoke
332
+ test.
333
+ 3. Verify the distribution name on PyPI.
334
+ 4. Tag the release as `v0.1.0` and push the tag.
335
+ 5. Approve the GitHub Actions Trusted Publishing environment.
336
+
337
+ The release workflow uses PyPI Trusted Publishing and contains no API token.
338
+
339
+ ## Roadmap
340
+
341
+ - Close the remaining production gaps listed above.
342
+ - Add sparse-aware behavior to compatible existing estimators.
343
+ - Add further categorical encoding and discretization estimators.
344
+ - Publish reproducible benchmark reports from release wheels.
345
+
346
+ ## License
347
+
348
+ MIT
349
+
@@ -0,0 +1,42 @@
1
+ r_scikit_learn-0.1.0.dist-info/METADATA,sha256=z3X7bvjlqMgK6ZWE0vEoAXauPrCpNm6kifX1sfei9KY,12575
2
+ r_scikit_learn-0.1.0.dist-info/WHEEL,sha256=tynS2sSkn8A_r30GDHMO40lKs8Vk6sa-QfWugApJ6ZA,97
3
+ r_scikit_learn-0.1.0.dist-info/licenses/LICENSE,sha256=CX8mcrkqyVIC1GzFbv1wHvJxgAtF-uoCMmy8emM3YQw,842
4
+ r_scikit_learn-0.1.0.dist-info/sboms/r-scikit-learn-core.cyclonedx.json,sha256=ms9aJdwZCaWeeu4yyVLcPKS_XqGYfyWvJJEpLSxxvO8,176472
5
+ rsklearn/__init__.py,sha256=ZWGElMSSReLpnTvVDthGM-JYxGT2T4OA_HyumT1XOBI,1104
6
+ rsklearn/_core.cp313-win_amd64.pyd,sha256=JIWLubXzJcMZg7SfVizV7tJQ3pQP4EbM2LEBZ4NFsFc,3937280
7
+ rsklearn/_validation.py,sha256=GoVmoTUxb64B2swqOCCGq_uTuW5qITdrkqjSCttOW-A,6920
8
+ rsklearn/base.py,sha256=ggwxwGuonYbEv0TjgnAb378W78HgtBznsywK2y8sQuI,9155
9
+ rsklearn/compose/__init__.py,sha256=73hKWiF8NJSvDIy8nJ9qWkSl24RZZOnJgYcrXCZp0dA,203
10
+ rsklearn/compose/_column_transformer.py,sha256=eI-Ncfh090zJ_g8OgV3P5ArWms9Xm_FCW9HyjnxLt7g,25674
11
+ rsklearn/impute/__init__.py,sha256=QhunD2zL_RtNSHxQ6pCnGMCgATurFrUN0pXkiqt5nPs,121
12
+ rsklearn/impute/_simple_imputer.py,sha256=iIQIFIvGWzXliimJuyQv5qt9P6eh31JcKWKOAFCPmlE,15736
13
+ rsklearn/linear_model/__init__.py,sha256=VvKtHCVoF-9u_QZOpUbM32bPk9nnXA6t2X6k7QP5Arg,370
14
+ rsklearn/linear_model/_base.py,sha256=dUOGQl1Cl1rCHHZu-6iMculZD5xdJV19txE0V1XZndU,3465
15
+ rsklearn/linear_model/_coordinate_descent.py,sha256=i5yfE9yoj5Cn8DA2w2uW_9C-iZGPxcYpfAG_n39eW_M,5691
16
+ rsklearn/linear_model/_least_squares.py,sha256=8k9yrySzw9a5nCgwftYI7_JNsqqa0uG2tB-5AX1ve_4,6521
17
+ rsklearn/linear_model/_logistic.py,sha256=YosVen3xKG3hQHLrDutA7mEcc2eym3j5d1L57JwC7DU,10229
18
+ rsklearn/linear_model/_warnings.py,sha256=dKrs-VF3bP93GddFs7_8QHOJpYquYX5hUHED9NI7Ds8,173
19
+ rsklearn/metrics/__init__.py,sha256=QwX5GYucVUuMPpKaKQzbWIVFTxDc4ARO-dEVeBWAmIg,539
20
+ rsklearn/metrics/_classification.py,sha256=--ejwyGPaXfDAFRfy__nD66f98-_ACanccVTxhorIa0,12105
21
+ rsklearn/metrics/_regression.py,sha256=RgulYi_J_4KvgxBGoBs0KK7x3Q20XrCa1LUWV3B7b4A,3407
22
+ rsklearn/metrics/_validation.py,sha256=S14wTAWoIt0aiUAzma4bIVCTfMlzKy7OrJ8WnNG10RQ,2837
23
+ rsklearn/model_selection/__init__.py,sha256=gRsFQ0Inf6gQax6jpOVp532Ovc5ymQzerwc1WkeN-B4,358
24
+ rsklearn/model_selection/_split.py,sha256=1AUH2QOUbyKxSdIvcFXwZV2uuzWLGLoJ1-gQWSgajYk,11539
25
+ rsklearn/model_selection/_utils.py,sha256=662N7ztYnYIpdHLetMHp5uBqWbU_kzaoLFVq6fEC1S0,3521
26
+ rsklearn/model_selection/_validation.py,sha256=V_m_TMMj4rAzEK7WVK8NINgjW8lMPA5EeiN9N2fA7DQ,6901
27
+ rsklearn/pipeline.py,sha256=Y3DQFgElrlzkR509qCqqR4dkvxIchyxXokWiM9xlX6Y,18304
28
+ rsklearn/preprocessing/__init__.py,sha256=A_MCSZ5Rfn4kGq5E4EKv9fpofOv6hjJeFTZ-zHqTdS0,503
29
+ rsklearn/preprocessing/_base.py,sha256=Sj48f3Ct_s82Q_IjR5NBXrpffz2UlZRf0G6qM2dnvIQ,241
30
+ rsklearn/preprocessing/_categorical.py,sha256=MaEqYqAp7erHI_6y02wDWMBZjnLwx6dkSy0aKgEM_Ls,13178
31
+ rsklearn/preprocessing/_label_encoder.py,sha256=pK-8D77ZfFGBwI0p665pLN80eNqSFTVOUKxRh0UzM5k,5656
32
+ rsklearn/preprocessing/_minmax_scaler.py,sha256=v9Z7uhbfiFgUfyHw_Oyie2bmI7wL52fgebSeVIUsQBw,4578
33
+ rsklearn/preprocessing/_normalizer.py,sha256=m5OTLDuC_w0x-c3sxrNsT4ot4Wf8YBGGoGqd-ChCAbI,2991
34
+ rsklearn/preprocessing/_one_hot_encoder.py,sha256=YtqZhURBRCIE3SoI2Hqo6nMxGqZyU6-fCfT18nysw7I,18474
35
+ rsklearn/preprocessing/_ordinal_encoder.py,sha256=bzkPZ8RhxUwLyVsxfAuaIB5wxZutnGbEedfavtwtiHI,14651
36
+ rsklearn/preprocessing/_robust_scaler.py,sha256=exYy1Y77Vuk1uU6SDCcZaPfUNJ1XUaxB0Lb5HCrLDDw,5623
37
+ rsklearn/preprocessing/_standard_scaler.py,sha256=J7DrVzWAGKqMy13pgVfQbNmr2cK_nPv3dwlQsAwLqLw,4365
38
+ rsklearn/py.typed,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
39
+ rsklearn/utils/__init__.py,sha256=WAOLSHLtdKcTC3NZfVUW4qb_YD1NV9S-jLr-aZF8rgE,626
40
+ rsklearn/utils/sparse.py,sha256=tVOpg4wJ9wcjHFNwFUlNrj0JWAN_PPIJBsBXqDrj8K0,6550
41
+ rsklearn/utils/validation.py,sha256=fjw_oYV_Z6cmyQXouwyxWNB_M1h5Uir16f0oKlAMU6I,15348
42
+ r_scikit_learn-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: maturin (1.14.0)
3
+ Root-Is-Purelib: false
4
+ Tag: cp313-cp313-win_amd64
@@ -0,0 +1,17 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 r-scikit-learn contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.