scikit-learn-intelex 2025.2.0__py310-none-manylinux_2_28_x86_64.whl → 2025.4.0__py310-none-manylinux_2_28_x86_64.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.

Potentially problematic release.


This version of scikit-learn-intelex might be problematic. Click here for more details.

@@ -1,15 +1,15 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: scikit-learn-intelex
3
- Version: 2025.2.0
3
+ Version: 2025.4.0
4
4
  Summary: Intel(R) Extension for Scikit-learn is a seamless way to speed up your Scikit-learn application.
5
5
  Home-page: https://github.com/intel/scikit-learn-intelex
6
6
  Author: Intel Corporation
7
7
  Author-email: onedal.maintainers@intel.com
8
8
  Maintainer-email: onedal.maintainers@intel.com
9
9
  License: Apache v2.0
10
- Project-URL: Bug Tracker, https://github.com/intel/scikit-learn-intelex/issues
11
- Project-URL: Documentation, https://intel.github.io/scikit-learn-intelex/
12
- Project-URL: Source Code, https://github.com/intel/scikit-learn-intelex
10
+ Project-URL: Bug Tracker, https://github.com/uxlfoundation/scikit-learn-intelex/issues
11
+ Project-URL: Documentation, https://uxlfoundation.github.io/scikit-learn-intelex/
12
+ Project-URL: Source Code, https://github.com/uxlfoundation/scikit-learn-intelex
13
13
  Keywords: machine learning,scikit-learn,data science,data analytics
14
14
  Platform: UNKNOWN
15
15
  Classifier: Development Status :: 5 - Production/Stable
@@ -20,18 +20,18 @@ Classifier: Intended Audience :: Science/Research
20
20
  Classifier: License :: OSI Approved :: Apache Software License
21
21
  Classifier: Operating System :: Microsoft :: Windows
22
22
  Classifier: Operating System :: POSIX :: Linux
23
- Classifier: Programming Language :: Python :: 3.8
24
23
  Classifier: Programming Language :: Python :: 3.9
25
24
  Classifier: Programming Language :: Python :: 3.10
26
25
  Classifier: Programming Language :: Python :: 3.11
27
26
  Classifier: Programming Language :: Python :: 3.12
27
+ Classifier: Programming Language :: Python :: 3.13
28
28
  Classifier: Topic :: Scientific/Engineering
29
29
  Classifier: Topic :: System
30
30
  Classifier: Topic :: Software Development
31
31
  Requires-Python: >=3.7
32
32
  Description-Content-Type: text/markdown
33
33
  License-File: LICENSE.txt
34
- Requires-Dist: daal (==2025.2.0)
34
+ Requires-Dist: daal (==2025.4.0)
35
35
  Requires-Dist: numpy (>=1.19)
36
36
  Requires-Dist: scikit-learn (>=0.22)
37
37
 
@@ -40,15 +40,15 @@ Requires-Dist: scikit-learn (>=0.22)
40
40
 
41
41
  [![Build Status](https://dev.azure.com/daal/daal4py/_apis/build/status/CI?branchName=master)](https://dev.azure.com/daal/daal4py/_build/latest?definitionId=9&branchName=master)
42
42
  [![Coverity Scan Build Status](https://scan.coverity.com/projects/21716/badge.svg)](https://scan.coverity.com/projects/daal4py)
43
- [![Join the community on GitHub Discussions](https://badgen.net/badge/join%20the%20discussion/on%20github/black?icon=github)](https://github.com/intel/scikit-learn-intelex/discussions)
43
+ [![Join the community on GitHub Discussions](https://badgen.net/badge/join%20the%20discussion/on%20github/black?icon=github)](https://github.com/uxlfoundation/scikit-learn-intelex/discussions)
44
44
  [![PyPI Version](https://img.shields.io/pypi/v/scikit-learn-intelex)](https://pypi.org/project/scikit-learn-intelex/)
45
45
  [![Conda Version](https://img.shields.io/conda/vn/conda-forge/scikit-learn-intelex)](https://anaconda.org/conda-forge/scikit-learn-intelex)
46
46
 
47
47
  With Intel(R) Extension for Scikit-learn you can accelerate your Scikit-learn applications and still have full conformance with all Scikit-Learn APIs and algorithms. This is a free software AI accelerator that brings over 10-100X acceleration across a variety of applications. And you do not even need to change the existing code!
48
48
 
49
- The acceleration is achieved through the use of the Intel(R) oneAPI Data Analytics Library ([oneDAL](https://github.com/oneapi-src/oneDAL)). Patching scikit-learn makes it a well-suited machine learning framework for dealing with real-life problems.
49
+ The acceleration is achieved through the use of the Intel(R) oneAPI Data Analytics Library ([oneDAL](https://github.com/uxlfoundation/oneDAL)). Patching scikit-learn makes it a well-suited machine learning framework for dealing with real-life problems.
50
50
 
51
- ⚠️Intel(R) Extension for Scikit-learn contains scikit-learn patching functionality that was originally available in [**daal4py**](https://github.com/intel/scikit-learn-intelex/tree/master/daal4py) package. All future updates for the patches will be available only in Intel(R) Extension for Scikit-learn. We recommend you to use scikit-learn-intelex package instead of daal4py.
51
+ ⚠️Intel(R) Extension for Scikit-learn contains scikit-learn patching functionality that was originally available in [**daal4py**](https://github.com/uxlfoundation/scikit-learn-intelex/tree/master/daal4py) package. All future updates for the patches will be available only in Intel(R) Extension for Scikit-learn. We recommend you to use scikit-learn-intelex package instead of daal4py.
52
52
  You can learn more about daal4py in [daal4py documentation](https://intelpython.github.io/daal4py).
53
53
 
54
54
  ## 👀 Follow us on Medium
@@ -67,96 +67,73 @@ We publish blogs on Medium, so [follow us](https://medium.com/intel-analytics-so
67
67
  - [Accelerate K-Means Clustering](https://medium.com/intel-analytics-software/accelerate-k-means-clustering-6385088788a1)
68
68
 
69
69
  ## 🔗 Important links
70
- - [Notebook examples](https://github.com/intel/scikit-learn-intelex/tree/master/examples/notebooks)
71
- - [Documentation](https://intel.github.io/scikit-learn-intelex/)
72
- - [scikit-learn API and patching](https://intel.github.io/scikit-learn-intelex/)
70
+ - [Notebook examples](https://github.com/uxlfoundation/scikit-learn-intelex/tree/master/examples/notebooks)
71
+ - [Documentation](https://uxlfoundation.github.io/scikit-learn-intelex/)
72
+ - [scikit-learn API and patching](https://uxlfoundation.github.io/scikit-learn-intelex/)
73
73
  - [Benchmark code](https://github.com/IntelPython/scikit-learn_bench)
74
- - [Building from Sources](https://github.com/intel/scikit-learn-intelex/blob/master/INSTALL.md)
75
- - [About Intel(R) oneAPI Data Analytics Library](https://github.com/oneapi-src/oneDAL)
76
- - [About Intel(R) daal4py](https://github.com/intel/scikit-learn-intelex/tree/master/daal4py)
74
+ - [Building from Sources](https://github.com/uxlfoundation/scikit-learn-intelex/blob/master/INSTALL.md)
75
+ - [About Intel(R) oneAPI Data Analytics Library](https://github.com/ouxlfoundation/oneDAL)
76
+ - [About Intel(R) daal4py](https://github.com/uxlfoundation/scikit-learn-intelex/tree/master/daal4py)
77
77
 
78
78
  ## 💬 Support
79
79
 
80
80
  Report issues, ask questions, and provide suggestions using:
81
81
 
82
- - [GitHub Issues](https://github.com/intel/scikit-learn-intelex/issues)
83
- - [GitHub Discussions](https://github.com/intel/scikit-learn-intelex/discussions)
82
+ - [GitHub Issues](https://github.com/uxlfoundation/scikit-learn-intelex/issues)
83
+ - [GitHub Discussions](https://github.com/uxlfoundation/scikit-learn-intelex/discussions)
84
84
  - [Forum](https://community.intel.com/t5/Intel-Distribution-for-Python/bd-p/distribution-python)
85
85
 
86
86
  You may reach out to project maintainers privately at onedal.maintainers@intel.com
87
87
 
88
88
  # 🛠 Installation
89
89
  Intel(R) Extension for Scikit-learn is available at the [Python Package Index](https://pypi.org/project/scikit-learn-intelex/),
90
- on Anaconda Cloud in [Conda-Forge channel](https://anaconda.org/conda-forge/scikit-learn-intelex) and in [Intel channel](https://anaconda.org/intel/scikit-learn-intelex).
91
- Intel(R) Extension for Scikit-learn is also available as a part of [Intel® oneAPI AI Analytics Toolkit](https://software.intel.com/content/www/us/en/develop/tools/oneapi/ai-analytics-toolkit.html)(AI Kit).
90
+ on Anaconda Cloud in [Conda-Forge channel](https://anaconda.org/conda-forge/scikit-learn-intelex) and in [Intel channel](https://software.repos.intel.com/python/conda/).
91
+ Intel(R) Extension for Scikit-learn is also available as a part of [Intel® oneAPI AI Analytics Toolkit](https://software.intel.com/content/www/us/en/develop/tools/oneapi/ai-analytics-toolkit.html) (AI Kit).
92
92
 
93
93
  - PyPi (recommended by default)
94
94
 
95
- ```bash
95
+ ```shell
96
96
  pip install scikit-learn-intelex
97
97
  ```
98
98
 
99
99
  - Anaconda Cloud from Conda-Forge channel (recommended for conda users by default)
100
100
 
101
- ```bash
102
- conda config --add channels conda-forge
103
- conda config --set channel_priority strict
104
- conda install scikit-learn-intelex
101
+ ```shell
102
+ conda install -c conda-forge scikit-learn-intelex
105
103
  ```
106
104
 
107
105
  - Anaconda Cloud from Intel channel (recommended for Intel® Distribution for Python users)
108
106
 
109
- ```bash
110
- conda config --add channels intel
111
- conda config --set channel_priority strict
112
- conda install scikit-learn-intelex
107
+ ```shell
108
+ conda install -c https://software.repos.intel.com/python/conda/ scikit-learn-intelex
113
109
  ```
114
110
 
115
111
  <details><summary>[Click to expand] ℹ️ Supported configurations </summary>
116
112
 
117
113
  #### 📦 PyPi channel
118
114
 
119
- | OS / Python version | **Python 3.8** | **Python 3.9** | **Python 3.10**| **Python 3.11**| **Python 3.12**|
120
- | :-----------------------| :------------: | :-------------:| :------------: | :------------: | :------------: |
121
- | **Linux** | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] |
122
- | **Windows** | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] |
115
+ | OS / Python version | **Python 3.9** | **Python 3.10**| **Python 3.11**| **Python 3.12**| **Python 3.13**|
116
+ | :-----------------------| :-------------:| :------------: | :------------: | :------------: | :------------: |
117
+ | **Linux** | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] |
118
+ | **Windows** | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] |
123
119
 
124
120
  #### 📦 Anaconda Cloud: Conda-Forge channel
125
121
 
126
- | OS / Python version | **Python 3.8** | **Python 3.9** | **Python 3.10**| **Python 3.11**| **Python 3.12**|
127
- | :-----------------------| :------------: | :------------: | :------------: | :------------: | :------------: |
128
- | **Linux** | [CPU] | [CPU] | [CPU] | [CPU] | [CPU] |
129
- | **Windows** | [CPU] | [CPU] | [CPU] | [CPU] | [CPU] |
122
+ | OS / Python version | **Python 3.9** | **Python 3.10**| **Python 3.11**| **Python 3.12**| **Python 3.13**|
123
+ | :-----------------------| :-------------:| :------------: | :------------: | :------------: | :------------: |
124
+ | **Linux** | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] |
125
+ | **Windows** | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] |
130
126
 
131
127
  #### 📦 Anaconda Cloud: Intel channel
132
128
 
133
- | OS / Python version | **Python 3.8** | **Python 3.9** | **Python 3.10**| **Python 3.11**| **Python 3.12**|
134
- | :-----------------------| :------------: | :-------------:| :------------: | :------------: | :------------: |
135
- | **Linux** | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] |
136
- | **Windows** | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] |
129
+ | OS / Python version | **Python 3.9** | **Python 3.10**| **Python 3.11**| **Python 3.12**| **Python 3.13**|
130
+ | :-----------------------| :-------------:| :------------: | :------------: | :------------: | :------------: |
131
+ | **Linux** | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] |
132
+ | **Windows** | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] | [CPU, GPU] |
137
133
 
138
134
  </details>
139
135
 
140
- ⚠️ Note: *GPU support is an optional dependency. Required dependencies for GPU support
141
- will not be downloaded. You need to manually install ***dpcpp_cpp_rt*** package.*
142
-
143
- <details><summary>[Click to expand] ℹ️ How to install dpcpp_cpp_rt package </summary>
144
-
145
- - PyPi
146
-
147
- ```bash
148
- pip install --upgrade dpcpp_cpp_rt
149
- ```
150
-
151
- - Anaconda Cloud
152
-
153
- ```bash
154
- conda install dpcpp_cpp_rt -c intel
155
- ```
156
-
157
- </details>
158
-
159
- You can [build the package from sources](https://github.com/intel/scikit-learn-intelex/blob/master/INSTALL.md) as well.
136
+ You can [build the package from sources](https://github.com/uxlfoundation/scikit-learn-intelex/blob/master/INSTALL.md) as well.
160
137
 
161
138
  # ⚡️ Get Started
162
139
 
@@ -176,7 +153,6 @@ clustering = DBSCAN(eps=3, min_samples=2).fit(X)
176
153
  Intel GPU optimizations patching
177
154
  ```py
178
155
  import numpy as np
179
- import dpctl
180
156
  from sklearnex import patch_sklearn, config_context
181
157
  patch_sklearn()
182
158
 
@@ -197,24 +173,7 @@ Configurations:
197
173
 
198
174
  [Benchmarks code](https://github.com/IntelPython/scikit-learn_bench)
199
175
 
200
- <details><summary>[Click to expand] ℹ️ Reproduce results </summary>
201
-
202
- - With Intel® Extension for Scikit-learn enabled:
203
-
204
- ```bash
205
- python runner.py --configs configs/blogs/skl_conda_config.json -–report
206
- ```
207
-
208
- - With the original Scikit-learn:
209
-
210
- ```bash
211
- python runner.py --configs configs/blogs/skl_conda_config.json -–report --no-intel-optimized
212
- ```
213
- </details>
214
-
215
- Intel(R) Extension for Scikit-learn patching affects performance of specific Scikit-learn functionality. Refer to the [list of supported algorithms and parameters](https://intel.github.io/scikit-learn-intelex/algorithms.html) for details. In cases when unsupported parameters are used, the package fallbacks into original Scikit-learn. If the patching does not cover your scenarios, [submit an issue on GitHub](https://github.com/intel/scikit-learn-intelex/issues).
216
-
217
- ⚠️ We support optimizations for the last four versions of scikit-learn. The latest release of scikit-learn-intelex-2024.0.X supports scikit-learn 1.0.X, 1.1.X, 1.2.X and 1.3.X.
176
+ Intel(R) Extension for Scikit-learn patching affects performance of specific Scikit-learn functionality. Refer to the [list of supported algorithms and parameters](https://uxlfoundation.github.io/scikit-learn-intelex/algorithms.html) for details. In cases when unsupported parameters are used, the package fallbacks into original Scikit-learn. If the patching does not cover your scenarios, [submit an issue on GitHub](https://github.com/uxlfoundation/scikit-learn-intelex/issues).
218
177
 
219
178
  ## 📜 Intel(R) Extension for Scikit-learn verbose
220
179
 
@@ -226,6 +185,6 @@ For example, for DBSCAN you get one of these print statements depending on which
226
185
  - `SKLEARNEX INFO: sklearn.cluster.DBSCAN.fit: running accelerated version on CPU`
227
186
  - `SKLEARNEX INFO: sklearn.cluster.DBSCAN.fit: fallback to original Scikit-learn`
228
187
 
229
- [Read more in the documentation](https://intel.github.io/scikit-learn-intelex/).
188
+ [Read more in the documentation](https://uxlfoundation.github.io/scikit-learn-intelex/).
230
189
 
231
190
 
@@ -1,7 +1,7 @@
1
1
  daal4py/__init__.py,sha256=Z9m4-_WGRMvvv4BRTlQy9tDh6dDXyKMuvJbFdCkKm7U,2605
2
2
  daal4py/__main__.py,sha256=XkcEBDY30krQy7F6b5GRIBs1Ef3mNjv8IZE3TdcUCAs,1956
3
- daal4py/_daal4py.cpython-310-x86_64-linux-gnu.so,sha256=2GqU4U7kmbZArUWyFCuWOzBSGQHAHP6W2flpp70uTOg,11261992
4
- daal4py/mpi_transceiver.cpython-310-x86_64-linux-gnu.so,sha256=g-kz-seMPtQQgDo_kqCH4KUQMoHd3BofOaHes9zSMiQ,22904
3
+ daal4py/_daal4py.cpython-310-x86_64-linux-gnu.so,sha256=Y0WBsqCzyNxPALLJisg1b3jS9fSdITiDIP6NY7nmboU,11338664
4
+ daal4py/mpi_transceiver.cpython-310-x86_64-linux-gnu.so,sha256=C_pVXPZBJWhqQhtjEgq9irUYaaGCGyrvA8Fm8N28msc,22904
5
5
  daal4py/doc/third-party-programs.txt,sha256=3tB2wzQ26wLa0aa574AxPit02Cse01Sqk0MJJboyQd0,21754
6
6
  daal4py/mb/__init__.py,sha256=Gw3YCjY4oRlB-Y-io1hD9wnRs20WK-5M8ADaMh-orLE,853
7
7
  daal4py/mb/model_builders.py,sha256=kyyv7V8XG2MWiCIPjGoyozz2W9iV2zg3sg1xwZ_GCmw,15453
@@ -59,9 +59,9 @@ daal4py/sklearn/utils/tests/test_utils.py,sha256=n3bO5WJCb5Q9Dlk_S8SxNhhvQJGT3dV
59
59
  onedal/__init__.py,sha256=t9aTOZfzqSLNLlDITKiZD2Y-Q6uGD5Ust0DuzkhoUNI,2595
60
60
  onedal/_config.py,sha256=Y6u69lFxA5FV-2fgzis1f5QxMbWfbT6rUN_dPV_OmCU,1828
61
61
  onedal/_device_offload.py,sha256=9ZMS-LNcJru83EuLQk3GJ9hAEoZ0uPvOe7lWP76ALws,7380
62
- onedal/_onedal_py_dpc.cpython-310-x86_64-linux-gnu.so,sha256=optaPCcOcxIMy_mVmcEqfpb2Bq02Ahzqjnwq08tPb7Y,2797104
63
- onedal/_onedal_py_host.cpython-310-x86_64-linux-gnu.so,sha256=KffBsTLwG71LKs7peEEFA-0E1xyEv2X-IgH1PBR0tvk,1592632
64
- onedal/_onedal_py_spmd_dpc.cpython-310-x86_64-linux-gnu.so,sha256=GALkoRswObQSsPDzVYMrTcID9Dzt1wiePFhOi-BCI1U,1039920
62
+ onedal/_onedal_py_dpc.cpython-310-x86_64-linux-gnu.so,sha256=p-Nan8CSRYSp2mqXmBg39ugzDM_a_wn65g7eLgHrViE,2784816
63
+ onedal/_onedal_py_host.cpython-310-x86_64-linux-gnu.so,sha256=i7oWGGGvj8VvwPoPDM07ImFNcqdNaaPl-GOBUGSgNoU,1592632
64
+ onedal/_onedal_py_spmd_dpc.cpython-310-x86_64-linux-gnu.so,sha256=l6Ou_gSx2ekX-KbJEYqhcgGBHT41lLfHDiZUOuoiSmg,1039920
65
65
  onedal/basic_statistics/__init__.py,sha256=-lNh54F2FO0BuHDBLjhW7zp3yBcgFZ-DrXHj2H5hLXE,920
66
66
  onedal/basic_statistics/basic_statistics.py,sha256=IXbf9SWaXIIpCeZXIvOmmjtJxpJf3vBcOGEAYK130Js,3587
67
67
  onedal/basic_statistics/incremental_basic_statistics.py,sha256=C--4qkoY5w4ZXrQAn6lX13SbCabFu2b9rNQNiizaieA,5887
@@ -156,7 +156,7 @@ sklearnex/__init__.py,sha256=JmyKzBQs3ug2RxHN8RQ1bspzfBrYkGAFRW4DYrY4cww,1798
156
156
  sklearnex/__main__.py,sha256=Le9BJq6aLEGSSoZwJLsOADxsV89ynBfA8BcoJHk9F24,1921
157
157
  sklearnex/_config.py,sha256=gNLOR945IboVS-aBdfgQM4s7th0B0FYdbmxUf4WAgRo,4276
158
158
  sklearnex/_device_offload.py,sha256=lPvcy8kBagniN0updIygzWad7cOxjfZgUtUdPQzAecQ,5487
159
- sklearnex/_utils.py,sha256=vwdG9pd4CfvQ8EZINtdb_7Gmn6XU8vEoXg56hFQ10TU,5316
159
+ sklearnex/_utils.py,sha256=yxdeCbnFZ8jJQr2N4tS29a-Rn-caVfmzBkt0yiy9H0M,6794
160
160
  sklearnex/conftest.py,sha256=Y_-4MPhPv2eNYWD7cPA94CymFG6tsXfTTYfjPLjDq_0,2619
161
161
  sklearnex/dispatcher.py,sha256=QFe4yppmsPJ2tgEq-T3AIVaW4VGqIEA6BK1qYOXOZq8,18638
162
162
  sklearnex/basic_statistics/__init__.py,sha256=-lNh54F2FO0BuHDBLjhW7zp3yBcgFZ-DrXHj2H5hLXE,920
@@ -165,36 +165,36 @@ sklearnex/basic_statistics/incremental_basic_statistics.py,sha256=P4oDSCL2H1tkX8
165
165
  sklearnex/basic_statistics/tests/test_basic_statistics.py,sha256=2juzqbS8MfivPEiCCWEaZyZU8BrXj9_dJ9YmZ96ms7M,14395
166
166
  sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py,sha256=rvsPiJPLfPn5h61TtX9I8BmRZ3qzbY_bm-TKGpb36OM,18192
167
167
  sklearnex/cluster/__init__.py,sha256=r0CKwy-PSca0jbZc4jU2CkU__qC643751-GuX1aaY40,853
168
- sklearnex/cluster/dbscan.py,sha256=5-ILeDD6foeMR1i45GnTUfMCYjsTrsUJ92jXdbgDQKc,6981
169
- sklearnex/cluster/k_means.py,sha256=AdtHugGkEo1w5Zyoysb_fUufd6E3Z8cWdHAJca6feto,14186
168
+ sklearnex/cluster/dbscan.py,sha256=s_yJ2Jy0fd95XaWUyOCzLaGuGzCDGsniOdJBU0lnh4U,7021
169
+ sklearnex/cluster/k_means.py,sha256=sK8c6l2XEGAMXP7sHMTUfDdZa91tIjfvDDiHJl9MnOk,14226
170
170
  sklearnex/cluster/tests/test_dbscan.py,sha256=JYpwyuPkGQHdbE_IPbQv4qNj7clMm4UPdz_lrpRzKXE,1504
171
171
  sklearnex/cluster/tests/test_kmeans.py,sha256=IoAKkq2g4DWxLm8LrD9Ck0q6Q7RT-u1gL9r70pp6ugA,6114
172
172
  sklearnex/covariance/__init__.py,sha256=_c86wiKDGBH50ofN-_tn7lO4M2YVEWO5AHhJIfimUDk,859
173
173
  sklearnex/covariance/incremental_covariance.py,sha256=dyl1ZczR5JdLJHb8HSJKit2goUJG090jHw69a0pYQcU,14399
174
174
  sklearnex/covariance/tests/test_incremental_covariance.py,sha256=9xXkVPgKL8qTCzSbbQuObxuvqEB0EOPPO2DHCCv1Yag,10943
175
175
  sklearnex/decomposition/__init__.py,sha256=RJBYDWyvnn5DA-j5r4IqVdXLp6H4mdPySsSjnXhlv-U,805
176
- sklearnex/decomposition/pca.py,sha256=7wbz9__4amaq7PsV3n39oL8NuUPqFTFwPvbVQR9vfdY,16932
176
+ sklearnex/decomposition/pca.py,sha256=HzHi6o3CyuM5aEkaawEKW7PNk176W6TdtxxFzQksQOw,16995
177
177
  sklearnex/decomposition/tests/test_pca.py,sha256=EoCgpSojE2S2e7hOUwW0Bh3vVGTUywawAhU7ThVAlW0,2319
178
178
  sklearnex/doc/third-party-programs.txt,sha256=qA1XbOqYkMRnp29p8VxXjfcH0kHE8NSO5s2heea83-8,21773
179
179
  sklearnex/ensemble/__init__.py,sha256=2xB2KfG7l7uJv0p3kfVhrs4KLM174SCsigZhYqwSYAA,1035
180
- sklearnex/ensemble/_forest.py,sha256=HJ64v04Bv0O93fdGp6Jp634qR1XvNali1txVR1nN9EI,72815
180
+ sklearnex/ensemble/_forest.py,sha256=1mauUIVNM4oCoiLhaoHp-rvrjcqjZWOETyILtxh-ylM,72855
181
181
  sklearnex/ensemble/tests/test_forest.py,sha256=lBZb9MlTtHezmYn8ZWHb7A1p3_2FNTas4xJ3MHZZyn4,5791
182
182
  sklearnex/glob/__main__.py,sha256=--FAjkhh5E6a1TFOGu6_BM3MHe78jP8oSpl0xKiRtTI,2531
183
183
  sklearnex/glob/dispatcher.py,sha256=o6XKGKM3M91F7FlXBOt1IhnpWQK4R1VY2WS-0uIghcw,3906
184
184
  sklearnex/linear_model/__init__.py,sha256=5ZHAppxcqKlq5MOZTfigFU9MuN1L5Use_F_cZqo_-p4,1218
185
185
  sklearnex/linear_model/coordinate_descent.py,sha256=SKNVTYYX8ysZ8M9h32qIaof3Fc2OKcBRXaCOySUBOiE,1554
186
186
  sklearnex/linear_model/incremental_linear.py,sha256=Sbc-xQVU6cg8shJiN9Ska2twI4tUUWp00N6McvbF99I,16970
187
- sklearnex/linear_model/incremental_ridge.py,sha256=tzNE-BburOIS9iU6_5V8fpW2mbUWZnSB8L4P5HMDquw,14922
188
- sklearnex/linear_model/linear.py,sha256=hMJ7T2WZ4J7iEJXBaeY6qTAlKLXbd7tl0h3DzJmYRpo,12377
189
- sklearnex/linear_model/logistic_regression.py,sha256=MRNeoJMQ_5KP4Ec2b4ZqfbOJGes3Qjyq8ZCb0uflLuU,15125
190
- sklearnex/linear_model/ridge.py,sha256=NAO4LVmqFFLn4RbPTwLUmFW2REXBfHg1fJwELLecdoI,15103
187
+ sklearnex/linear_model/incremental_ridge.py,sha256=PauZPUkzYP6SjzB3rgw3JMzbHvQzhAeY4ItbtvRgACc,14978
188
+ sklearnex/linear_model/linear.py,sha256=BsZ7VezKu8wNOMq4l5F27sheH3P7p8wn2hU7MYpOAkM,12443
189
+ sklearnex/linear_model/logistic_regression.py,sha256=z8zq_UxZNfzsMOkibjy0KCNKQCF1D9L19ZXX4IBopqc,15179
190
+ sklearnex/linear_model/ridge.py,sha256=2PSj4zRq2naV1rspQ_SsugxxGPzZPJG-6I-Z5gvjj1k,15143
191
191
  sklearnex/linear_model/tests/test_incremental_linear.py,sha256=vo1l9HhXa16dT7Q0Mf5NzUqnB454AlPbOwibK_ZNux4,10125
192
192
  sklearnex/linear_model/tests/test_incremental_ridge.py,sha256=lerzk8T1IOe0e58qucTPWj7ssrJa9gFpaqFrz6XGkU0,9096
193
193
  sklearnex/linear_model/tests/test_linear.py,sha256=OZUTBqlXpMwgXYOe2YgrDPUibr5EGewJ3avMwKx0QZ0,5701
194
194
  sklearnex/linear_model/tests/test_logreg.py,sha256=8kTIMl1Hcuu0NSPcEle0oAdRerqMtUAWrRlLjS-n4EI,4924
195
195
  sklearnex/linear_model/tests/test_ridge.py,sha256=YbfyVrRi-FOoV7BtzX0-ChPavBSFAmr35BJcm2kx7nI,9596
196
196
  sklearnex/manifold/__init__.py,sha256=3FU5fY1YvHAyNeSlUHsZfPnAbvlAUtZpum0Obmok2KE,809
197
- sklearnex/manifold/t_sne.py,sha256=JXVeq9aMtqzeK_Q_0OW47YhpHu1IzqKeufQbrJkohZc,1008
197
+ sklearnex/manifold/t_sne.py,sha256=pK9QfX0rfh4grDK4AVd1Uswgvjm7xBKLtIyI3eag65M,1211
198
198
  sklearnex/manifold/tests/test_tsne.py,sha256=gEMfvH63zMsrmrmsmDzvFfepJJrJUt2B7nNQAm9nMM8,8928
199
199
  sklearnex/metrics/__init__.py,sha256=EHOCTU9RERa0Rrkr4dgmyO9ippbN5kjH_FwK3BqIROc,907
200
200
  sklearnex/metrics/pairwise.py,sha256=HeBOE8sRBZMiF9pup8HBypDGfizQ-UCrQdX2C6YGvbg,982
@@ -205,17 +205,17 @@ sklearnex/model_selection/split.py,sha256=yvYnmNaKJs-Tr8tGBB-2R9CuhjESYih-CN6Wb3
205
205
  sklearnex/model_selection/tests/test_model_selection.py,sha256=3kZIq8kba8SW93DBWXupoRymNStR1_mGGYSErQRnwME,1338
206
206
  sklearnex/neighbors/__init__.py,sha256=_GMJ2L-6YechRYI2fOFwHjy0kebUncE81z4FmdXUlb8,1078
207
207
  sklearnex/neighbors/_lof.py,sha256=aiarmfDU5ndpp_JN06NUW2Ny0APjJr3zY9Kuq5nYFWM,9312
208
- sklearnex/neighbors/common.py,sha256=43djavVzXy_W-nYSd_buHpQK_tk20ZUTF7J9e61mBg8,12542
208
+ sklearnex/neighbors/common.py,sha256=61D8NOkzphq1QQoDrHOO0zlCQMo-RONXZ68Ma27UDcY,12582
209
209
  sklearnex/neighbors/knn_classification.py,sha256=wxsyPFMlAim60LtK39salu7Cpgwiq0hkduv7IuItwEg,8015
210
210
  sklearnex/neighbors/knn_regression.py,sha256=TIh6kf1bX07uFw02IuDsG9DKCiiKG1Fsp7jiMXk81jo,6870
211
211
  sklearnex/neighbors/knn_unsupervised.py,sha256=L8oBoVnp-H52ns2k2MNr-KMgAK5zu6crYgwMZt4roQM,6316
212
212
  sklearnex/neighbors/tests/test_neighbors.py,sha256=gUmnRiY-xH3oGclv6VPxSIHWchgbygGt6p-vcflvYZ0,3540
213
213
  sklearnex/preview/__init__.py,sha256=6qlqN3HFx8-MpnRALaD0vmfMBJapfz_enkaB37SqPtg,786
214
214
  sklearnex/preview/covariance/__init__.py,sha256=DPYTk8lwcVphtwU8J3CyUYH8Uz6Zr0Uz4S6nn-RY5iM,825
215
- sklearnex/preview/covariance/covariance.py,sha256=ElUHMWNuMpBdBW9nqp4S5zgPgBdIzJvk2tsKHrzX-08,5301
215
+ sklearnex/preview/covariance/covariance.py,sha256=szfEuFD7LCQ4piqgDf5uzj1zqaj9XywhVSmRajVhIBg,5358
216
216
  sklearnex/preview/covariance/tests/test_covariance.py,sha256=gFgP1or32zELL9n2qKTgPBq95hm2ivqaNgFuLNB8W90,2500
217
217
  sklearnex/preview/decomposition/__init__.py,sha256=9VcJPWKgSrWDFEXUY6ZCpAT2XGbOVA4a1j_XgfJBnTM,839
218
- sklearnex/preview/decomposition/incremental_pca.py,sha256=wUVr9EDc6xBBR5zx1aKkRdROZJAY07czvb9K4TMY_a4,8400
218
+ sklearnex/preview/decomposition/incremental_pca.py,sha256=qV8G87BkakoI-S_6bFD4cqegDx7BFZasFirUAOvsE4o,8432
219
219
  sklearnex/preview/decomposition/tests/test_incremental_pca.py,sha256=sV4H8E1Dm5d8sBhprexRzzkhUC5e5nhwXBa27sGkiJk,13789
220
220
  sklearnex/spmd/__init__.py,sha256=ChQy2kEWlo4KGvs0RnbPoPEVhdgl8URV099B1rZtF5Y,889
221
221
  sklearnex/spmd/basic_statistics/__init__.py,sha256=-lNh54F2FO0BuHDBLjhW7zp3yBcgFZ-DrXHj2H5hLXE,920
@@ -252,7 +252,7 @@ sklearnex/spmd/neighbors/__init__.py,sha256=S16sH8N_18LN_8AgC_wGK5EDSNyuN-F-gI6G
252
252
  sklearnex/spmd/neighbors/neighbors.py,sha256=SiKAS_RVt34MUcGytBS5pHnI_5vFNxJn8jqt1MOhDh8,940
253
253
  sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py,sha256=RLddVdNbKHIND4khAzSSpM_yi9j2VMuHmI9TZUtdS3Y,10487
254
254
  sklearnex/svm/__init__.py,sha256=f3e4ZFwZfx6MsXsn94VK1xVm6mWKT5XCiHczo6zNyAQ,1057
255
- sklearnex/svm/_common.py,sha256=bF-5V_Vcqql_EkUIOfQR3JSM4prO8LE2_ewrsxozu2I,13006
255
+ sklearnex/svm/_common.py,sha256=4tvR09qz01g27thlJZIfYrj821Q0JeRUQ3m8x-Ghw30,13046
256
256
  sklearnex/svm/nusvc.py,sha256=yBOYo8BSJcMjvmCsuR9xMaJmZcs9Olvabw8VmUjZLBc,12143
257
257
  sklearnex/svm/nusvr.py,sha256=IUOt0576uvNy1rAt-uslpo4CrYDClNIS8FZb8PJ-HnY,5245
258
258
  sklearnex/svm/svc.py,sha256=bYO9a9DFx8AhyUgW_Zg_kTbT2Vsj8eQKI6yfrwPheh8,13452
@@ -275,8 +275,8 @@ sklearnex/utils/_array_api.py,sha256=c5AFRaxYn3pjInTXeFzcXZB8SrRxQ-4UQARQv1HchFI
275
275
  sklearnex/utils/parallel.py,sha256=VBcS-KUdyq7XpJUN6ygmNjyWtYLroghbvCxQ8nVU3YI,2085
276
276
  sklearnex/utils/validation.py,sha256=-kluLYjGq7I43VgNWHI7Xm0TcandkRASWFzdFrEBhoo,7729
277
277
  sklearnex/utils/tests/test_validation.py,sha256=2eSq6Tqb2YmUDaL8OnvclKc0qbpuIkv-9WOvY6K_Cz0,8667
278
- scikit_learn_intelex-2025.2.0.dist-info/LICENSE.txt,sha256=7micbUpzQXphq9e_2oL7PpZcvoXzPuQHIDEXyKXC81s,10797
279
- scikit_learn_intelex-2025.2.0.dist-info/METADATA,sha256=-Lwe-GyLaFN-bD9xU8r6VqLDRaQeWScpQ7xbkcS4YgE,12476
280
- scikit_learn_intelex-2025.2.0.dist-info/WHEEL,sha256=AbDXtI07YbmAOyulr4lTLqgtukIt8PjPDO5guTSVq0s,112
281
- scikit_learn_intelex-2025.2.0.dist-info/top_level.txt,sha256=Qa0CGteT1uguKJdxiwylb90eW-a1R8FcENgN6P7IKfs,25
282
- scikit_learn_intelex-2025.2.0.dist-info/RECORD,,
278
+ scikit_learn_intelex-2025.4.0.dist-info/LICENSE.txt,sha256=7micbUpzQXphq9e_2oL7PpZcvoXzPuQHIDEXyKXC81s,10797
279
+ scikit_learn_intelex-2025.4.0.dist-info/METADATA,sha256=yZynNZQSXHne8X-xCXvaczzwGRpr4BmNcGoNO9el35k,11544
280
+ scikit_learn_intelex-2025.4.0.dist-info/WHEEL,sha256=AbDXtI07YbmAOyulr4lTLqgtukIt8PjPDO5guTSVq0s,112
281
+ scikit_learn_intelex-2025.4.0.dist-info/top_level.txt,sha256=Qa0CGteT1uguKJdxiwylb90eW-a1R8FcENgN6P7IKfs,25
282
+ scikit_learn_intelex-2025.4.0.dist-info/RECORD,,
sklearnex/_utils.py CHANGED
@@ -16,13 +16,27 @@
16
16
 
17
17
  import logging
18
18
  import os
19
+ import re
19
20
  import warnings
20
21
  from abc import ABC
21
22
 
23
+ import sklearn
24
+
22
25
  from daal4py.sklearn._utils import (
23
26
  PatchingConditionsChain as daal4py_PatchingConditionsChain,
24
27
  )
25
- from daal4py.sklearn._utils import daal_check_version
28
+ from daal4py.sklearn._utils import daal_check_version, sklearn_check_version
29
+
30
+ # Note: if inheriting from '_HTMLDocumentationLinkMixin' here, it then doesn't matter
31
+ # the order of inheritance of classes for estimators when this is later subclassed,
32
+ # whereas if inheriting from something else, the subclass that inherits from this needs
33
+ # to be the first inherited class in estimators in order for it to take effect.
34
+ if sklearn_check_version("1.4"):
35
+ from sklearn.utils._estimator_html_repr import _HTMLDocumentationLinkMixin
36
+
37
+ BaseForHTMLDocLink = _HTMLDocumentationLinkMixin
38
+ else:
39
+ BaseForHTMLDocLink = ABC
26
40
 
27
41
 
28
42
  class PatchingConditionsChain(daal4py_PatchingConditionsChain):
@@ -128,10 +142,8 @@ def register_hyperparameters(hyperparameters_map):
128
142
 
129
143
 
130
144
  # This abstract class is meant to generate a clickable doc link for classses
131
- # in sklearnex that are not part of base scikit-learn. It should be inherited
132
- # before inheriting from a scikit-learn estimator, otherwise will get overriden
133
- # by the estimator's original.
134
- class IntelEstimator(ABC):
145
+ # in sklearnex that are not part of base scikit-learn.
146
+ class IntelEstimator(BaseForHTMLDocLink):
135
147
  @property
136
148
  def _doc_link_module(self) -> str:
137
149
  return "sklearnex"
@@ -141,3 +153,25 @@ class IntelEstimator(ABC):
141
153
  module_path, _ = self.__class__.__module__.rsplit(".", 1)
142
154
  class_name = self.__class__.__name__
143
155
  return f"https://uxlfoundation.github.io/scikit-learn-intelex/latest/non-scikit-algorithms.html#{module_path}.{class_name}"
156
+
157
+
158
+ # This abstract class is meant to generate a clickable doc link for classses
159
+ # in sklearnex that have counterparts in scikit-learn.
160
+ class PatchableEstimator(BaseForHTMLDocLink):
161
+ @property
162
+ def _doc_link_module(self) -> str:
163
+ return "sklearnex"
164
+
165
+ @property
166
+ def _doc_link_template(self) -> str:
167
+ if re.search(r"^\d\.\d\.\d$", sklearn.__version__):
168
+ sklearn_version_parts = sklearn.__version__.split(".")
169
+ doc_version_url = sklearn_version_parts[0] + "." + sklearn_version_parts[1]
170
+ else:
171
+ doc_version_url = "stable"
172
+ module_path, _ = self.__class__.__module__.rsplit(".", 1)
173
+ module_path = re.sub("sklearnex", "sklearn", module_path)
174
+ class_name = self.__class__.__name__
175
+ # for TSNE, which re-uses daal4py
176
+ module_path = re.sub(r"daal4py\.", "", module_path)
177
+ return f"https://scikit-learn.org/{doc_version_url}/modules/generated/{module_path}.{class_name}.html"
@@ -26,7 +26,7 @@ from daal4py.sklearn._utils import sklearn_check_version
26
26
  from onedal.cluster import DBSCAN as onedal_DBSCAN
27
27
 
28
28
  from .._device_offload import dispatch
29
- from .._utils import PatchingConditionsChain
29
+ from .._utils import PatchableEstimator, PatchingConditionsChain
30
30
 
31
31
  if sklearn_check_version("1.1") and not sklearn_check_version("1.2"):
32
32
  from sklearn.utils import check_scalar
@@ -51,7 +51,7 @@ class BaseDBSCAN(ABC):
51
51
 
52
52
 
53
53
  @control_n_jobs(decorated_methods=["fit"])
54
- class DBSCAN(_sklearn_DBSCAN, BaseDBSCAN):
54
+ class DBSCAN(PatchableEstimator, _sklearn_DBSCAN, BaseDBSCAN):
55
55
  __doc__ = _sklearn_DBSCAN.__doc__
56
56
 
57
57
  if sklearn_check_version("1.2"):
@@ -39,7 +39,7 @@ if daal_check_version((2023, "P", 200)):
39
39
  from onedal.utils import _is_csr
40
40
 
41
41
  from .._device_offload import dispatch, wrap_output_data
42
- from .._utils import PatchingConditionsChain
42
+ from .._utils import PatchableEstimator, PatchingConditionsChain
43
43
 
44
44
  if sklearn_check_version("1.6"):
45
45
  from sklearn.utils.validation import validate_data
@@ -47,7 +47,7 @@ if daal_check_version((2023, "P", 200)):
47
47
  validate_data = _sklearn_KMeans._validate_data
48
48
 
49
49
  @control_n_jobs(decorated_methods=["fit", "fit_transform", "predict", "score"])
50
- class KMeans(_sklearn_KMeans):
50
+ class KMeans(PatchableEstimator, _sklearn_KMeans):
51
51
  __doc__ = _sklearn_KMeans.__doc__
52
52
 
53
53
  if sklearn_check_version("1.2"):
@@ -18,6 +18,8 @@ import logging
18
18
 
19
19
  from daal4py.sklearn._utils import daal_check_version
20
20
 
21
+ from .._utils import PatchableEstimator
22
+
21
23
  if daal_check_version((2024, "P", 100)):
22
24
  import numbers
23
25
  from math import sqrt
@@ -50,7 +52,7 @@ if daal_check_version((2024, "P", 100)):
50
52
  validate_data = _sklearn_PCA._validate_data
51
53
 
52
54
  @control_n_jobs(decorated_methods=["fit", "transform", "fit_transform"])
53
- class PCA(_sklearn_PCA):
55
+ class PCA(PatchableEstimator, _sklearn_PCA):
54
56
  __doc__ = _sklearn_PCA.__doc__
55
57
 
56
58
  if sklearn_check_version("1.2"):
@@ -61,7 +61,7 @@ from sklearnex import get_hyperparameters
61
61
  from sklearnex._utils import register_hyperparameters
62
62
 
63
63
  from .._device_offload import dispatch, wrap_output_data
64
- from .._utils import PatchingConditionsChain
64
+ from .._utils import PatchableEstimator, PatchingConditionsChain
65
65
  from ..utils._array_api import get_namespace
66
66
 
67
67
  if sklearn_check_version("1.2"):
@@ -75,7 +75,7 @@ else:
75
75
  validate_data = BaseEstimator._validate_data
76
76
 
77
77
 
78
- class BaseForest(ABC):
78
+ class BaseForest(PatchableEstimator, ABC):
79
79
  _onedal_factory = None
80
80
 
81
81
  def _onedal_fit(self, X, y, sample_weight=None, queue=None):
@@ -32,7 +32,7 @@ if sklearn_check_version("1.2"):
32
32
  from onedal.linear_model import IncrementalRidge as onedal_IncrementalRidge
33
33
 
34
34
  from .._device_offload import dispatch, wrap_output_data
35
- from .._utils import PatchingConditionsChain
35
+ from .._utils import IntelEstimator, PatchingConditionsChain
36
36
 
37
37
  if sklearn_check_version("1.6"):
38
38
  from sklearn.utils.validation import validate_data
@@ -43,7 +43,7 @@ else:
43
43
  @control_n_jobs(
44
44
  decorated_methods=["fit", "partial_fit", "predict", "score", "_onedal_finalize_fit"]
45
45
  )
46
- class IncrementalRidge(MultiOutputMixin, RegressorMixin, BaseEstimator):
46
+ class IncrementalRidge(IntelEstimator, MultiOutputMixin, RegressorMixin, BaseEstimator):
47
47
  """
48
48
  Incremental estimator for Ridge Regression.
49
49
  Allows to train Ridge Regression if data is splitted into batches.
@@ -51,14 +51,14 @@ class IncrementalRidge(MultiOutputMixin, RegressorMixin, BaseEstimator):
51
51
  Parameters
52
52
  ----------
53
53
  fit_intercept : bool, default=True
54
- Whether to calculate the intercept for this model. If set
55
- to False, no intercept will be used in calculations
56
- (i.e. data is expected to be centered).
54
+ Whether to calculate the intercept for this model. If set
55
+ to False, no intercept will be used in calculations
56
+ (i.e. data is expected to be centered).
57
57
 
58
58
  alpha : float, default=1.0
59
- Regularization strength; must be a positive float. Regularization
60
- improves the conditioning of the problem and reduces the variance of
61
- the estimates. Larger values specify stronger regularization.
59
+ Regularization strength; must be a positive float. Regularization
60
+ improves the conditioning of the problem and reduces the variance of
61
+ the estimates. Larger values specify stronger regularization.
62
62
 
63
63
  copy_X : bool, default=True
64
64
  If True, X will be copied; else, it may be overwritten.
@@ -27,7 +27,12 @@ from daal4py.sklearn._utils import daal_check_version, sklearn_check_version
27
27
 
28
28
  from .._config import get_config
29
29
  from .._device_offload import dispatch, wrap_output_data
30
- from .._utils import PatchingConditionsChain, get_patch_message, register_hyperparameters
30
+ from .._utils import (
31
+ PatchableEstimator,
32
+ PatchingConditionsChain,
33
+ get_patch_message,
34
+ register_hyperparameters,
35
+ )
31
36
 
32
37
  if sklearn_check_version("1.0") and not sklearn_check_version("1.2"):
33
38
  from sklearn.linear_model._base import _deprecate_normalize
@@ -47,7 +52,7 @@ else:
47
52
 
48
53
  @register_hyperparameters({"fit": get_hyperparameters("linear_regression", "train")})
49
54
  @control_n_jobs(decorated_methods=["fit", "predict", "score"])
50
- class LinearRegression(_sklearn_LinearRegression):
55
+ class LinearRegression(PatchableEstimator, _sklearn_LinearRegression):
51
56
  __doc__ = _sklearn_LinearRegression.__doc__
52
57
 
53
58
  if sklearn_check_version("1.2"):
@@ -38,7 +38,7 @@ if daal_check_version((2024, "P", 1)):
38
38
 
39
39
  from .._config import get_config
40
40
  from .._device_offload import dispatch, wrap_output_data
41
- from .._utils import PatchingConditionsChain, get_patch_message
41
+ from .._utils import PatchableEstimator, PatchingConditionsChain, get_patch_message
42
42
 
43
43
  if sklearn_check_version("1.6"):
44
44
  from sklearn.utils.validation import validate_data
@@ -65,7 +65,9 @@ if daal_check_version((2024, "P", 1)):
65
65
  "score",
66
66
  ]
67
67
  )
68
- class LogisticRegression(_sklearn_LogisticRegression, BaseLogisticRegression):
68
+ class LogisticRegression(
69
+ PatchableEstimator, _sklearn_LogisticRegression, BaseLogisticRegression
70
+ ):
69
71
  __doc__ = _sklearn_LogisticRegression.__doc__
70
72
 
71
73
  if sklearn_check_version("1.2"):
@@ -38,7 +38,7 @@ if daal_check_version((2024, "P", 600)):
38
38
  from onedal.utils import _num_features, _num_samples
39
39
 
40
40
  from .._device_offload import dispatch, wrap_output_data
41
- from .._utils import PatchingConditionsChain
41
+ from .._utils import PatchableEstimator, PatchingConditionsChain
42
42
 
43
43
  if sklearn_check_version("1.6"):
44
44
  from sklearn.utils.validation import validate_data
@@ -46,7 +46,7 @@ if daal_check_version((2024, "P", 600)):
46
46
  validate_data = _sklearn_Ridge._validate_data
47
47
 
48
48
  @control_n_jobs(decorated_methods=["fit", "predict", "score"])
49
- class Ridge(_sklearn_Ridge):
49
+ class Ridge(PatchableEstimator, _sklearn_Ridge):
50
50
  __doc__ = _sklearn_Ridge.__doc__
51
51
 
52
52
  if sklearn_check_version("1.2"):
@@ -14,8 +14,13 @@
14
14
  # limitations under the License.
15
15
  # ===============================================================================
16
16
 
17
+ from daal4py.sklearn._n_jobs_support import control_n_jobs
17
18
  from daal4py.sklearn.manifold import TSNE
18
19
  from onedal._device_offload import support_input_format
19
20
 
21
+ from .._utils import PatchableEstimator
22
+
20
23
  TSNE.fit = support_input_format(queue_param=False)(TSNE.fit)
21
24
  TSNE.fit_transform = support_input_format(queue_param=False)(TSNE.fit_transform)
25
+ TSNE._doc_link_module = "daal4py"
26
+ TSNE._doc_link_template = PatchableEstimator._doc_link_template
@@ -27,11 +27,11 @@ from sklearn.utils.validation import check_is_fitted
27
27
  from daal4py.sklearn._utils import sklearn_check_version
28
28
  from onedal.utils import _check_array, _num_features, _num_samples
29
29
 
30
- from .._utils import PatchingConditionsChain
30
+ from .._utils import PatchableEstimator, PatchingConditionsChain
31
31
  from ..utils._array_api import get_namespace
32
32
 
33
33
 
34
- class KNeighborsDispatchingBase:
34
+ class KNeighborsDispatchingBase(PatchableEstimator):
35
35
  def _fit_validation(self, X, y=None):
36
36
  if sklearn_check_version("1.2"):
37
37
  self._validate_params()
@@ -29,7 +29,11 @@ from sklearnex import config_context
29
29
  from sklearnex.metrics import pairwise_distances
30
30
 
31
31
  from ..._device_offload import dispatch, wrap_output_data
32
- from ..._utils import PatchingConditionsChain, register_hyperparameters
32
+ from ..._utils import (
33
+ PatchableEstimator,
34
+ PatchingConditionsChain,
35
+ register_hyperparameters,
36
+ )
33
37
 
34
38
  if sklearn_check_version("1.6"):
35
39
  from sklearn.utils.validation import validate_data
@@ -39,7 +43,7 @@ else:
39
43
 
40
44
  @register_hyperparameters({"fit": get_hyperparameters("covariance", "compute")})
41
45
  @control_n_jobs(decorated_methods=["fit", "mahalanobis"])
42
- class EmpiricalCovariance(_sklearn_EmpiricalCovariance):
46
+ class EmpiricalCovariance(PatchableEstimator, _sklearn_EmpiricalCovariance):
43
47
  __doc__ = _sklearn_EmpiricalCovariance.__doc__
44
48
 
45
49
  if sklearn_check_version("1.2"):
@@ -23,7 +23,7 @@ from daal4py.sklearn._utils import sklearn_check_version
23
23
  from onedal.decomposition import IncrementalPCA as onedal_IncrementalPCA
24
24
 
25
25
  from ..._device_offload import dispatch, wrap_output_data
26
- from ..._utils import PatchingConditionsChain
26
+ from ..._utils import IntelEstimator, PatchingConditionsChain
27
27
 
28
28
  if sklearn_check_version("1.6"):
29
29
  from sklearn.utils.validation import validate_data
@@ -34,7 +34,7 @@ else:
34
34
  @control_n_jobs(
35
35
  decorated_methods=["fit", "partial_fit", "transform", "_onedal_finalize_fit"]
36
36
  )
37
- class IncrementalPCA(_sklearn_IncrementalPCA):
37
+ class IncrementalPCA(IntelEstimator, _sklearn_IncrementalPCA):
38
38
 
39
39
  def __init__(self, n_components=None, *, whiten=False, copy=True, batch_size=None):
40
40
  super().__init__(
sklearnex/svm/_common.py CHANGED
@@ -29,7 +29,7 @@ from daal4py.sklearn._utils import sklearn_check_version
29
29
  from onedal.utils import _check_array, _check_X_y, _column_or_1d
30
30
 
31
31
  from .._config import config_context, get_config
32
- from .._utils import PatchingConditionsChain
32
+ from .._utils import PatchableEstimator, PatchingConditionsChain
33
33
 
34
34
  if sklearn_check_version("1.6"):
35
35
  from sklearn.utils.validation import validate_data
@@ -37,7 +37,7 @@ else:
37
37
  validate_data = BaseEstimator._validate_data
38
38
 
39
39
 
40
- class BaseSVM(BaseEstimator, ABC):
40
+ class BaseSVM(PatchableEstimator, BaseEstimator, ABC):
41
41
 
42
42
  @property
43
43
  def _dual_coef_(self):