scikit-learn-intelex 2024.4.0__py312-none-win_amd64.whl → 2025.10.0__py312-none-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.
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/__init__.py +73 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/__main__.py +58 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/_daal4py.cp312-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mb/__init__.py +94 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mb/gbt_convertors.py +1199 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mb/logistic_regression_builders.py +211 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mb/tree_based_builders.py +425 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mpi_transceiver.cp312-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/__init__.py +40 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/_n_jobs_support.py +252 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/_utils.py +245 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/__init__.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/dbscan.py +165 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/k_means.py +565 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/tests/test_dbscan.py +109 -0
- {scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn}/decomposition/__init__.py +2 -2
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/decomposition/_pca.py +528 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/AdaBoostClassifier.py +192 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/GBTDAAL.py +333 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/__init__.py +27 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/_forest.py +1285 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/tests/test_decision_forest.py +206 -0
- {scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn}/linear_model/__init__.py +29 -28
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_coordinate_descent.py +826 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_linear.py +269 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_ridge.py +290 -0
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/coordinate_descent.py +2 -2
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/linear.py +17 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_loss.py +195 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +561 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/ridge.py +17 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_enet.py +157 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_linear.py +198 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_ridge.py +69 -0
- {scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/preview/cluster → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/manifold}/__init__.py +3 -3
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/manifold/_t_sne.py +432 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/__init__.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_pairwise.py +259 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_ranking.py +210 -0
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/ridge.py → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/__init__.py +4 -2
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/_split.py +309 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/tests/test_split.py +56 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/__init__.py +0 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/dispatcher.py +232 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/_models_info.py +164 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_monkeypatch.py +71 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_patching.py +90 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/utils/_launch_algorithms.py +117 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/__init__.py +21 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_base.py +493 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_classification.py +136 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_regression.py +72 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_unsupervised.py +55 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/tests/test_kneighbors.py +113 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/svm/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/svm/svm.py +736 -0
- {scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd/covariance → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils}/__init__.py +5 -3
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils/base.py +80 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils/tests/test_utils.py +51 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils/validation.py +772 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/__init__.py +151 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_config.py +80 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_device_offload.py +199 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp312-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp312-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/basic_statistics.py +151 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/incremental_basic_statistics.py +165 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_basic_statistics.py +241 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_incremental_basic_statistics.py +279 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/utils.py +50 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/__init__.py +27 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/dbscan.py +80 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/kmeans.py +582 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/kmeans_init.py +145 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/tests/test_dbscan.py +125 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans.py +88 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans_init.py +93 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/_backend.py +258 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/_estimator_checks.py +47 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/_mixin.py +62 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/hyperparameters.py +148 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/tests/test_sycl.py +148 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/__init__.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/covariance.py +121 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/incremental_covariance.py +151 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/tests/test_covariance.py +50 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/tests/test_incremental_covariance.py +190 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/__init__.py +29 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +158 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/_dlpack.py +64 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/_sycl_usm.py +63 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/tests/common.py +131 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/tests/test_data.py +686 -0
- {scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition}/__init__.py +3 -2
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/incremental_pca.py +218 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/pca.py +124 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/tests/test_incremental_pca.py +291 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/dummy/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/dummy/dummy.py +137 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/ensemble/__init__.py +29 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/ensemble/forest.py +781 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/ensemble/tests/test_random_forest.py +97 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/__init__.py +27 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/incremental_linear_model.py +201 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/linear_model.py +230 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/logistic_regression.py +293 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_linear_regression.py +213 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_ridge_regression.py +171 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_linear_regression.py +252 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_logistic_regression.py +95 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_ridge.py +95 -0
- {scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal}/neighbors/__init__.py +19 -19
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/neighbors/neighbors.py +690 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/neighbors/tests/test_knn_classification.py +49 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/__init__.py +27 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/get_tree.py +27 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/kernel_functions.py +202 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/tests/test_kernel_functions.py +159 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/svm.py +592 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_csr_svm.py +352 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvc.py +204 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvr.py +210 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_svc.py +168 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_svr.py +243 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/tests/test_common.py +71 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/tests/utils/_dataframes_support.py +179 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/tests/utils/_device_selection.py +94 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/_array_api.py +98 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/_sycl_queue_manager.py +213 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/_third_party.py +220 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/tests/test_validation.py +142 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/validation.py +503 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/__init__.py +7 -3
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/__main__.py +2 -2
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/_config.py +163 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +205 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/_utils.py +219 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/base.py +109 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +241 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +128 -78
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +405 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +101 -32
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +1 -1
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +38 -29
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +399 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +8 -6
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +157 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/conftest.py +20 -1
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +440 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +307 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +558 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +164 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +199 -21
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +207 -2
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dummy/__init__.py +19 -17
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dummy/_dummy.py +615 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dummy/tests/test_dummy.py +62 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +288 -440
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +196 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +1 -1
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +17 -3
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/__init__.py +32 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +44 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +427 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_ridge.py +407 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +363 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +466 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/ridge.py +407 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +267 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_ridge.py +214 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +167 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +565 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_ridge.py +256 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/manifold/t_sne.py +11 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +256 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +3 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +3 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +3 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/neighbors/_lof.py +30 -62
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +56 -9
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +45 -101
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +63 -94
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +49 -25
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +6 -4
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/preview/__init__.py +1 -1
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +261 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +54 -8
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +406 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +390 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +24 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +30 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +117 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +314 -0
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +9 -4
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +108 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +180 -0
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +3 -4
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +24 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/incremental_covariance.py +29 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_covariance_spmd.py +120 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +200 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/__init__.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/incremental_pca.py +23 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +6 -4
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +276 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_pca_spmd.py +146 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +299 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/tests/test_forest_spmd.py +299 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +2 -1
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/incremental_linear_model.py +28 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +7 -4
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +345 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +162 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +169 -0
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/neighbors.py → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +1 -3
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +433 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/_common.py +403 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +99 -117
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +55 -16
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +95 -113
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +51 -16
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +43 -20
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_common.py +607 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_config.py +256 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_hyperparameters.py +111 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +335 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +5 -4
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +111 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/tests/test_patching.py +122 -75
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +335 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/utils/__init__.py +48 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/utils/base.py +420 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/utils/spmd.py +198 -0
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/utils/validation.py → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/__init__.py +3 -1
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/_array_api.py +217 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/class_weight.py +100 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/parallel.py +97 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/tests/test_class_weight.py +69 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/tests/test_validation.py +238 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/validation.py +212 -0
- scikit_learn_intelex-2025.10.0.dist-info/METADATA +182 -0
- scikit_learn_intelex-2025.10.0.dist-info/RECORD +267 -0
- {scikit_learn_intelex-2024.4.0.dist-info → scikit_learn_intelex-2025.10.0.dist-info}/WHEEL +1 -1
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/_config.py +0 -110
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +0 -250
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/_utils.py +0 -109
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +0 -17
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +0 -30
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +0 -130
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +0 -143
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +0 -335
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +0 -56
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +0 -113
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +0 -316
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/logistic_path.py +0 -17
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +0 -385
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +0 -117
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +0 -91
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +0 -26
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/preview/cluster/_common.py +0 -84
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/preview/cluster/k_means.py +0 -303
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +0 -133
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +0 -50
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +0 -71
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/svm/_common.py +0 -185
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/tests/_utils.py +0 -164
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/tests/test_config.py +0 -39
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +0 -227
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +0 -99
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability_tests.py +0 -428
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/utils/__init__.py +0 -20
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/utils/_namespace.py +0 -97
- scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -59
- scikit_learn_intelex-2024.4.0.dist-info/METADATA +0 -230
- scikit_learn_intelex-2024.4.0.dist-info/RECORD +0 -101
- {scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal}/basic_statistics/__init__.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -0
- {scikit_learn_intelex-2024.4.0.data → scikit_learn_intelex-2025.10.0.data}/data/Lib/site-packages/sklearnex/tests/test_parallel.py +0 -0
- {scikit_learn_intelex-2024.4.0.dist-info → scikit_learn_intelex-2025.10.0.dist-info}/LICENSE.txt +0 -0
- {scikit_learn_intelex-2024.4.0.dist-info → scikit_learn_intelex-2025.10.0.dist-info}/top_level.txt +0 -0
|
@@ -14,80 +14,52 @@
|
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
# ==============================================================================
|
|
16
16
|
|
|
17
|
+
from sklearn.metrics import r2_score
|
|
17
18
|
from sklearn.neighbors._regression import (
|
|
18
|
-
KNeighborsRegressor as
|
|
19
|
+
KNeighborsRegressor as _sklearn_KNeighborsRegressor,
|
|
19
20
|
)
|
|
20
|
-
from sklearn.
|
|
21
|
-
from sklearn.utils.validation import _deprecate_positional_args, check_is_fitted
|
|
21
|
+
from sklearn.utils.validation import check_is_fitted
|
|
22
22
|
|
|
23
23
|
from daal4py.sklearn._n_jobs_support import control_n_jobs
|
|
24
24
|
from daal4py.sklearn._utils import sklearn_check_version
|
|
25
|
+
from daal4py.sklearn.utils.validation import get_requires_y_tag
|
|
25
26
|
from onedal.neighbors import KNeighborsRegressor as onedal_KNeighborsRegressor
|
|
26
27
|
|
|
27
28
|
from .._device_offload import dispatch, wrap_output_data
|
|
29
|
+
from ..utils.validation import check_feature_names
|
|
28
30
|
from .common import KNeighborsDispatchingBase
|
|
29
31
|
|
|
30
32
|
|
|
31
|
-
@control_n_jobs(decorated_methods=["fit", "predict", "kneighbors"])
|
|
32
|
-
class KNeighborsRegressor(
|
|
33
|
-
__doc__ =
|
|
33
|
+
@control_n_jobs(decorated_methods=["fit", "predict", "kneighbors", "score"])
|
|
34
|
+
class KNeighborsRegressor(KNeighborsDispatchingBase, _sklearn_KNeighborsRegressor):
|
|
35
|
+
__doc__ = _sklearn_KNeighborsRegressor.__doc__
|
|
34
36
|
if sklearn_check_version("1.2"):
|
|
35
37
|
_parameter_constraints: dict = {
|
|
36
|
-
**
|
|
38
|
+
**_sklearn_KNeighborsRegressor._parameter_constraints
|
|
37
39
|
}
|
|
38
40
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
n_jobs=n_jobs,
|
|
62
|
-
)
|
|
63
|
-
|
|
64
|
-
else:
|
|
65
|
-
|
|
66
|
-
@_deprecate_positional_args
|
|
67
|
-
def __init__(
|
|
68
|
-
self,
|
|
69
|
-
n_neighbors=5,
|
|
70
|
-
*,
|
|
71
|
-
weights="uniform",
|
|
72
|
-
algorithm="auto",
|
|
73
|
-
leaf_size=30,
|
|
74
|
-
p=2,
|
|
75
|
-
metric="minkowski",
|
|
76
|
-
metric_params=None,
|
|
77
|
-
n_jobs=None,
|
|
78
|
-
**kwargs,
|
|
79
|
-
):
|
|
80
|
-
super().__init__(
|
|
81
|
-
n_neighbors=n_neighbors,
|
|
82
|
-
weights=weights,
|
|
83
|
-
algorithm=algorithm,
|
|
84
|
-
leaf_size=leaf_size,
|
|
85
|
-
metric=metric,
|
|
86
|
-
p=p,
|
|
87
|
-
metric_params=metric_params,
|
|
88
|
-
n_jobs=n_jobs,
|
|
89
|
-
**kwargs,
|
|
90
|
-
)
|
|
41
|
+
def __init__(
|
|
42
|
+
self,
|
|
43
|
+
n_neighbors=5,
|
|
44
|
+
*,
|
|
45
|
+
weights="uniform",
|
|
46
|
+
algorithm="auto",
|
|
47
|
+
leaf_size=30,
|
|
48
|
+
p=2,
|
|
49
|
+
metric="minkowski",
|
|
50
|
+
metric_params=None,
|
|
51
|
+
n_jobs=None,
|
|
52
|
+
):
|
|
53
|
+
super().__init__(
|
|
54
|
+
n_neighbors=n_neighbors,
|
|
55
|
+
weights=weights,
|
|
56
|
+
algorithm=algorithm,
|
|
57
|
+
leaf_size=leaf_size,
|
|
58
|
+
metric=metric,
|
|
59
|
+
p=p,
|
|
60
|
+
metric_params=metric_params,
|
|
61
|
+
n_jobs=n_jobs,
|
|
62
|
+
)
|
|
91
63
|
|
|
92
64
|
def fit(self, X, y):
|
|
93
65
|
dispatch(
|
|
@@ -95,7 +67,7 @@ class KNeighborsRegressor(sklearn_KNeighborsRegressor, KNeighborsDispatchingBase
|
|
|
95
67
|
"fit",
|
|
96
68
|
{
|
|
97
69
|
"onedal": self.__class__._onedal_fit,
|
|
98
|
-
"sklearn":
|
|
70
|
+
"sklearn": _sklearn_KNeighborsRegressor.fit,
|
|
99
71
|
},
|
|
100
72
|
X,
|
|
101
73
|
y,
|
|
@@ -105,53 +77,50 @@ class KNeighborsRegressor(sklearn_KNeighborsRegressor, KNeighborsDispatchingBase
|
|
|
105
77
|
@wrap_output_data
|
|
106
78
|
def predict(self, X):
|
|
107
79
|
check_is_fitted(self)
|
|
108
|
-
|
|
109
|
-
self._check_feature_names(X, reset=False)
|
|
80
|
+
check_feature_names(self, X, reset=False)
|
|
110
81
|
return dispatch(
|
|
111
82
|
self,
|
|
112
83
|
"predict",
|
|
113
84
|
{
|
|
114
85
|
"onedal": self.__class__._onedal_predict,
|
|
115
|
-
"sklearn":
|
|
86
|
+
"sklearn": _sklearn_KNeighborsRegressor.predict,
|
|
87
|
+
},
|
|
88
|
+
X,
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
@wrap_output_data
|
|
92
|
+
def score(self, X, y, sample_weight=None):
|
|
93
|
+
check_is_fitted(self)
|
|
94
|
+
check_feature_names(self, X, reset=False)
|
|
95
|
+
return dispatch(
|
|
96
|
+
self,
|
|
97
|
+
"score",
|
|
98
|
+
{
|
|
99
|
+
"onedal": self.__class__._onedal_score,
|
|
100
|
+
"sklearn": _sklearn_KNeighborsRegressor.score,
|
|
116
101
|
},
|
|
117
102
|
X,
|
|
103
|
+
y,
|
|
104
|
+
sample_weight=sample_weight,
|
|
118
105
|
)
|
|
119
106
|
|
|
120
107
|
@wrap_output_data
|
|
121
108
|
def kneighbors(self, X=None, n_neighbors=None, return_distance=True):
|
|
122
109
|
check_is_fitted(self)
|
|
123
|
-
if
|
|
124
|
-
self
|
|
110
|
+
if X is not None:
|
|
111
|
+
check_feature_names(self, X, reset=False)
|
|
125
112
|
return dispatch(
|
|
126
113
|
self,
|
|
127
114
|
"kneighbors",
|
|
128
115
|
{
|
|
129
116
|
"onedal": self.__class__._onedal_kneighbors,
|
|
130
|
-
"sklearn":
|
|
117
|
+
"sklearn": _sklearn_KNeighborsRegressor.kneighbors,
|
|
131
118
|
},
|
|
132
119
|
X,
|
|
133
120
|
n_neighbors=n_neighbors,
|
|
134
121
|
return_distance=return_distance,
|
|
135
122
|
)
|
|
136
123
|
|
|
137
|
-
@wrap_output_data
|
|
138
|
-
def radius_neighbors(
|
|
139
|
-
self, X=None, radius=None, return_distance=True, sort_results=False
|
|
140
|
-
):
|
|
141
|
-
_onedal_estimator = getattr(self, "_onedal_estimator", None)
|
|
142
|
-
|
|
143
|
-
if (
|
|
144
|
-
_onedal_estimator is not None
|
|
145
|
-
or getattr(self, "_tree", 0) is None
|
|
146
|
-
and self._fit_method == "kd_tree"
|
|
147
|
-
):
|
|
148
|
-
sklearn_NearestNeighbors.fit(self, self._fit_X, getattr(self, "_y", None))
|
|
149
|
-
result = sklearn_NearestNeighbors.radius_neighbors(
|
|
150
|
-
self, X, radius, return_distance, sort_results
|
|
151
|
-
)
|
|
152
|
-
|
|
153
|
-
return result
|
|
154
|
-
|
|
155
124
|
def _onedal_fit(self, X, y, queue=None):
|
|
156
125
|
onedal_params = {
|
|
157
126
|
"n_neighbors": self.n_neighbors,
|
|
@@ -161,13 +130,8 @@ class KNeighborsRegressor(sklearn_KNeighborsRegressor, KNeighborsDispatchingBase
|
|
|
161
130
|
"p": self.effective_metric_params_["p"],
|
|
162
131
|
}
|
|
163
132
|
|
|
164
|
-
try:
|
|
165
|
-
requires_y = self._get_tags()["requires_y"]
|
|
166
|
-
except KeyError:
|
|
167
|
-
requires_y = False
|
|
168
|
-
|
|
169
133
|
self._onedal_estimator = onedal_KNeighborsRegressor(**onedal_params)
|
|
170
|
-
self._onedal_estimator.requires_y =
|
|
134
|
+
self._onedal_estimator.requires_y = get_requires_y_tag(self)
|
|
171
135
|
self._onedal_estimator.effective_metric_ = self.effective_metric_
|
|
172
136
|
self._onedal_estimator.effective_metric_params_ = self.effective_metric_params_
|
|
173
137
|
self._onedal_estimator.fit(X, y, queue=queue)
|
|
@@ -184,6 +148,11 @@ class KNeighborsRegressor(sklearn_KNeighborsRegressor, KNeighborsDispatchingBase
|
|
|
184
148
|
X, n_neighbors, return_distance, queue=queue
|
|
185
149
|
)
|
|
186
150
|
|
|
151
|
+
def _onedal_score(self, X, y, sample_weight=None, queue=None):
|
|
152
|
+
return r2_score(
|
|
153
|
+
y, self._onedal_predict(X, queue=queue), sample_weight=sample_weight
|
|
154
|
+
)
|
|
155
|
+
|
|
187
156
|
def _save_attributes(self):
|
|
188
157
|
self.n_features_in_ = self._onedal_estimator.n_features_in_
|
|
189
158
|
self.n_samples_fit_ = self._onedal_estimator.n_samples_fit_
|
|
@@ -192,7 +161,7 @@ class KNeighborsRegressor(sklearn_KNeighborsRegressor, KNeighborsDispatchingBase
|
|
|
192
161
|
self._fit_method = self._onedal_estimator._fit_method
|
|
193
162
|
self._tree = self._onedal_estimator._tree
|
|
194
163
|
|
|
195
|
-
fit.__doc__ =
|
|
196
|
-
predict.__doc__ =
|
|
197
|
-
kneighbors.__doc__ =
|
|
198
|
-
|
|
164
|
+
fit.__doc__ = _sklearn_KNeighborsRegressor.__doc__
|
|
165
|
+
predict.__doc__ = _sklearn_KNeighborsRegressor.predict.__doc__
|
|
166
|
+
kneighbors.__doc__ = _sklearn_KNeighborsRegressor.kneighbors.__doc__
|
|
167
|
+
score.__doc__ = _sklearn_KNeighborsRegressor.score.__doc__
|
|
@@ -14,22 +14,26 @@
|
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
# ===============================================================================
|
|
16
16
|
|
|
17
|
-
from sklearn.neighbors._unsupervised import NearestNeighbors as
|
|
17
|
+
from sklearn.neighbors._unsupervised import NearestNeighbors as _sklearn_NearestNeighbors
|
|
18
18
|
from sklearn.utils.validation import _deprecate_positional_args, check_is_fitted
|
|
19
19
|
|
|
20
20
|
from daal4py.sklearn._n_jobs_support import control_n_jobs
|
|
21
21
|
from daal4py.sklearn._utils import sklearn_check_version
|
|
22
|
+
from daal4py.sklearn.utils.validation import get_requires_y_tag
|
|
22
23
|
from onedal.neighbors import NearestNeighbors as onedal_NearestNeighbors
|
|
23
24
|
|
|
24
25
|
from .._device_offload import dispatch, wrap_output_data
|
|
26
|
+
from ..utils.validation import check_feature_names
|
|
25
27
|
from .common import KNeighborsDispatchingBase
|
|
26
28
|
|
|
27
29
|
|
|
28
|
-
@control_n_jobs(decorated_methods=["fit", "kneighbors"])
|
|
29
|
-
class NearestNeighbors(
|
|
30
|
-
__doc__ =
|
|
30
|
+
@control_n_jobs(decorated_methods=["fit", "kneighbors", "radius_neighbors"])
|
|
31
|
+
class NearestNeighbors(KNeighborsDispatchingBase, _sklearn_NearestNeighbors):
|
|
32
|
+
__doc__ = _sklearn_NearestNeighbors.__doc__
|
|
31
33
|
if sklearn_check_version("1.2"):
|
|
32
|
-
_parameter_constraints: dict = {
|
|
34
|
+
_parameter_constraints: dict = {
|
|
35
|
+
**_sklearn_NearestNeighbors._parameter_constraints
|
|
36
|
+
}
|
|
33
37
|
|
|
34
38
|
@_deprecate_positional_args
|
|
35
39
|
def __init__(
|
|
@@ -60,7 +64,7 @@ class NearestNeighbors(sklearn_NearestNeighbors, KNeighborsDispatchingBase):
|
|
|
60
64
|
"fit",
|
|
61
65
|
{
|
|
62
66
|
"onedal": self.__class__._onedal_fit,
|
|
63
|
-
"sklearn":
|
|
67
|
+
"sklearn": _sklearn_NearestNeighbors.fit,
|
|
64
68
|
},
|
|
65
69
|
X,
|
|
66
70
|
None,
|
|
@@ -70,14 +74,14 @@ class NearestNeighbors(sklearn_NearestNeighbors, KNeighborsDispatchingBase):
|
|
|
70
74
|
@wrap_output_data
|
|
71
75
|
def kneighbors(self, X=None, n_neighbors=None, return_distance=True):
|
|
72
76
|
check_is_fitted(self)
|
|
73
|
-
if
|
|
74
|
-
self
|
|
77
|
+
if X is not None:
|
|
78
|
+
check_feature_names(self, X, reset=False)
|
|
75
79
|
return dispatch(
|
|
76
80
|
self,
|
|
77
81
|
"kneighbors",
|
|
78
82
|
{
|
|
79
83
|
"onedal": self.__class__._onedal_kneighbors,
|
|
80
|
-
"sklearn":
|
|
84
|
+
"sklearn": _sklearn_NearestNeighbors.kneighbors,
|
|
81
85
|
},
|
|
82
86
|
X,
|
|
83
87
|
n_neighbors=n_neighbors,
|
|
@@ -88,19 +92,41 @@ class NearestNeighbors(sklearn_NearestNeighbors, KNeighborsDispatchingBase):
|
|
|
88
92
|
def radius_neighbors(
|
|
89
93
|
self, X=None, radius=None, return_distance=True, sort_results=False
|
|
90
94
|
):
|
|
91
|
-
_onedal_estimator = getattr(self, "_onedal_estimator", None)
|
|
92
|
-
|
|
93
95
|
if (
|
|
94
|
-
_onedal_estimator
|
|
96
|
+
hasattr(self, "_onedal_estimator")
|
|
95
97
|
or getattr(self, "_tree", 0) is None
|
|
96
98
|
and self._fit_method == "kd_tree"
|
|
97
99
|
):
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
100
|
+
_sklearn_NearestNeighbors.fit(self, self._fit_X, getattr(self, "_y", None))
|
|
101
|
+
check_is_fitted(self)
|
|
102
|
+
return dispatch(
|
|
103
|
+
self,
|
|
104
|
+
"radius_neighbors",
|
|
105
|
+
{
|
|
106
|
+
"onedal": None,
|
|
107
|
+
"sklearn": _sklearn_NearestNeighbors.radius_neighbors,
|
|
108
|
+
},
|
|
109
|
+
X,
|
|
110
|
+
radius=radius,
|
|
111
|
+
return_distance=return_distance,
|
|
112
|
+
sort_results=sort_results,
|
|
101
113
|
)
|
|
102
114
|
|
|
103
|
-
|
|
115
|
+
def radius_neighbors_graph(
|
|
116
|
+
self, X=None, radius=None, mode="connectivity", sort_results=False
|
|
117
|
+
):
|
|
118
|
+
return dispatch(
|
|
119
|
+
self,
|
|
120
|
+
"radius_neighbors_graph",
|
|
121
|
+
{
|
|
122
|
+
"onedal": None,
|
|
123
|
+
"sklearn": _sklearn_NearestNeighbors.radius_neighbors_graph,
|
|
124
|
+
},
|
|
125
|
+
X,
|
|
126
|
+
radius=radius,
|
|
127
|
+
mode=mode,
|
|
128
|
+
sort_results=sort_results,
|
|
129
|
+
)
|
|
104
130
|
|
|
105
131
|
def _onedal_fit(self, X, y=None, queue=None):
|
|
106
132
|
onedal_params = {
|
|
@@ -110,13 +136,8 @@ class NearestNeighbors(sklearn_NearestNeighbors, KNeighborsDispatchingBase):
|
|
|
110
136
|
"p": self.effective_metric_params_["p"],
|
|
111
137
|
}
|
|
112
138
|
|
|
113
|
-
try:
|
|
114
|
-
requires_y = self._get_tags()["requires_y"]
|
|
115
|
-
except KeyError:
|
|
116
|
-
requires_y = False
|
|
117
|
-
|
|
118
139
|
self._onedal_estimator = onedal_NearestNeighbors(**onedal_params)
|
|
119
|
-
self._onedal_estimator.requires_y =
|
|
140
|
+
self._onedal_estimator.requires_y = get_requires_y_tag(self)
|
|
120
141
|
self._onedal_estimator.effective_metric_ = self.effective_metric_
|
|
121
142
|
self._onedal_estimator.effective_metric_params_ = self.effective_metric_params_
|
|
122
143
|
self._onedal_estimator.fit(X, y, queue=queue)
|
|
@@ -141,6 +162,9 @@ class NearestNeighbors(sklearn_NearestNeighbors, KNeighborsDispatchingBase):
|
|
|
141
162
|
self._fit_method = self._onedal_estimator._fit_method
|
|
142
163
|
self._tree = self._onedal_estimator._tree
|
|
143
164
|
|
|
144
|
-
fit.__doc__ =
|
|
145
|
-
kneighbors.__doc__ =
|
|
146
|
-
radius_neighbors.__doc__ =
|
|
165
|
+
fit.__doc__ = _sklearn_NearestNeighbors.__doc__
|
|
166
|
+
kneighbors.__doc__ = _sklearn_NearestNeighbors.kneighbors.__doc__
|
|
167
|
+
radius_neighbors.__doc__ = _sklearn_NearestNeighbors.radius_neighbors.__doc__
|
|
168
|
+
radius_neighbors_graph.__doc__ = (
|
|
169
|
+
_sklearn_NearestNeighbors.radius_neighbors_graph.__doc__
|
|
170
|
+
)
|
|
@@ -47,25 +47,27 @@ def test_sklearnex_import_knn_regression(dataframe, queue):
|
|
|
47
47
|
y = _convert_to_dataframe([0, 0, 1, 1], sycl_queue=queue, target_df=dataframe)
|
|
48
48
|
neigh = KNeighborsRegressor(n_neighbors=2).fit(X, y)
|
|
49
49
|
y_test = _convert_to_dataframe([[1.5]], sycl_queue=queue, target_df=dataframe)
|
|
50
|
-
pred = _as_numpy(neigh.predict(y_test))
|
|
50
|
+
pred = _as_numpy(neigh.predict(y_test)).squeeze()
|
|
51
51
|
assert "sklearnex" in neigh.__module__
|
|
52
|
-
assert_allclose(pred,
|
|
52
|
+
assert_allclose(pred, 0.5)
|
|
53
53
|
|
|
54
54
|
|
|
55
|
+
@pytest.mark.parametrize("algorithm", ["auto", "brute"])
|
|
55
56
|
@pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
|
|
56
57
|
@pytest.mark.parametrize(
|
|
57
58
|
"estimator",
|
|
58
59
|
[LocalOutlierFactor, NearestNeighbors],
|
|
59
60
|
)
|
|
60
|
-
def test_sklearnex_kneighbors(estimator, dataframe, queue):
|
|
61
|
+
def test_sklearnex_kneighbors(algorithm, estimator, dataframe, queue):
|
|
61
62
|
X = [[0, 0, 2], [1, 0, 0], [0, 0, 1]]
|
|
62
63
|
X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
63
64
|
test = _convert_to_dataframe([[0, 0, 1.3]], sycl_queue=queue, target_df=dataframe)
|
|
64
|
-
neigh = estimator(n_neighbors=2).fit(X)
|
|
65
|
+
neigh = estimator(n_neighbors=2, algorithm=algorithm).fit(X)
|
|
65
66
|
result = neigh.kneighbors(test, 2, return_distance=False)
|
|
66
67
|
result = _as_numpy(result)
|
|
67
68
|
assert "sklearnex" in neigh.__module__
|
|
68
69
|
assert_allclose(result, [[2, 0]])
|
|
70
|
+
result = neigh.kneighbors()
|
|
69
71
|
|
|
70
72
|
|
|
71
73
|
@pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
# ===============================================================================
|
|
2
|
+
# Copyright 2023 Intel Corporation
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
# ===============================================================================
|
|
16
|
+
|
|
17
|
+
import warnings
|
|
18
|
+
from functools import partial
|
|
19
|
+
|
|
20
|
+
import numpy as np
|
|
21
|
+
import scipy.sparse as sp
|
|
22
|
+
from sklearn.base import clone
|
|
23
|
+
from sklearn.covariance import EmpiricalCovariance as _sklearn_EmpiricalCovariance
|
|
24
|
+
from sklearn.utils.validation import check_array, check_is_fitted
|
|
25
|
+
|
|
26
|
+
from daal4py.sklearn._n_jobs_support import control_n_jobs
|
|
27
|
+
from daal4py.sklearn._utils import daal_check_version, sklearn_check_version
|
|
28
|
+
from daal4py.sklearn.metrics import pairwise_distances
|
|
29
|
+
from onedal._device_offload import support_input_format, support_sycl_format
|
|
30
|
+
from onedal.covariance import EmpiricalCovariance as onedal_EmpiricalCovariance
|
|
31
|
+
from onedal.utils._array_api import _is_numpy_namespace
|
|
32
|
+
from onedal.utils.validation import _num_features
|
|
33
|
+
from sklearnex import config_context
|
|
34
|
+
|
|
35
|
+
from ..._config import get_config
|
|
36
|
+
from ..._device_offload import dispatch, wrap_output_data
|
|
37
|
+
from ..._utils import PatchingConditionsChain, register_hyperparameters
|
|
38
|
+
from ...base import oneDALEstimator
|
|
39
|
+
from ...utils._array_api import _pinvh, enable_array_api, get_namespace, log_likelihood
|
|
40
|
+
from ...utils.validation import assert_all_finite, validate_data
|
|
41
|
+
|
|
42
|
+
# This is a temporary workaround for issues with sklearnex._device_offload._get_host_inputs
|
|
43
|
+
# passing kwargs with sycl queues with other host data will cause failures
|
|
44
|
+
_mahalanobis = support_input_format(partial(pairwise_distances, metric="mahalanobis"))
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
@enable_array_api
|
|
48
|
+
@register_hyperparameters({"fit": ("covariance", "compute")})
|
|
49
|
+
@control_n_jobs(decorated_methods=["fit", "mahalanobis"])
|
|
50
|
+
class EmpiricalCovariance(oneDALEstimator, _sklearn_EmpiricalCovariance):
|
|
51
|
+
__doc__ = _sklearn_EmpiricalCovariance.__doc__
|
|
52
|
+
|
|
53
|
+
if sklearn_check_version("1.2"):
|
|
54
|
+
_parameter_constraints: dict = {
|
|
55
|
+
**_sklearn_EmpiricalCovariance._parameter_constraints,
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
def _set_covariance(self, covariance):
|
|
59
|
+
if not get_config()["use_raw_input"]:
|
|
60
|
+
if sklearn_check_version("1.6"):
|
|
61
|
+
covariance = check_array(covariance, ensure_all_finite=False)
|
|
62
|
+
else:
|
|
63
|
+
covariance = check_array(covariance, force_all_finite=False)
|
|
64
|
+
assert_all_finite(covariance)
|
|
65
|
+
# set covariance
|
|
66
|
+
self.covariance_ = covariance
|
|
67
|
+
# set precision
|
|
68
|
+
if self.store_precision:
|
|
69
|
+
self.precision_ = _pinvh(covariance, check_finite=False)
|
|
70
|
+
else:
|
|
71
|
+
self.precision_ = None
|
|
72
|
+
|
|
73
|
+
def _save_attributes(self):
|
|
74
|
+
assert hasattr(self, "_onedal_estimator")
|
|
75
|
+
if not daal_check_version((2024, "P", 400)) and self.assume_centered:
|
|
76
|
+
xp, _ = get_namespace(self._onedal_estimator.location_)
|
|
77
|
+
location = self._onedal_estimator.location_[None, :]
|
|
78
|
+
self._onedal_estimator.covariance_ += xp.dot(location.T, location)
|
|
79
|
+
self._onedal_estimator.location_ = xp.zeros_like(
|
|
80
|
+
self._onedal_estimator.location_
|
|
81
|
+
)
|
|
82
|
+
self._set_covariance(self._onedal_estimator.covariance_)
|
|
83
|
+
self.location_ = self._onedal_estimator.location_
|
|
84
|
+
|
|
85
|
+
_onedal_covariance = staticmethod(onedal_EmpiricalCovariance)
|
|
86
|
+
|
|
87
|
+
def _onedal_fit(self, X, queue=None):
|
|
88
|
+
if not get_config()["use_raw_input"]:
|
|
89
|
+
xp, _ = get_namespace(X)
|
|
90
|
+
X = validate_data(self, X, dtype=[xp.float64, xp.float32])
|
|
91
|
+
|
|
92
|
+
if X.shape[0] == 1:
|
|
93
|
+
warnings.warn(
|
|
94
|
+
"Only one sample available. You may want to reshape your data array"
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
self._onedal_estimator = self._onedal_covariance(
|
|
98
|
+
method="dense", bias=True, assume_centered=self.assume_centered
|
|
99
|
+
)
|
|
100
|
+
self._onedal_estimator.fit(X, queue=queue)
|
|
101
|
+
self._save_attributes()
|
|
102
|
+
|
|
103
|
+
def _onedal_supported(self, method_name, *data):
|
|
104
|
+
class_name = self.__class__.__name__
|
|
105
|
+
patching_status = PatchingConditionsChain(
|
|
106
|
+
f"sklearn.covariance.{class_name}.{method_name}"
|
|
107
|
+
)
|
|
108
|
+
if method_name in ["fit", "mahalanobis"]:
|
|
109
|
+
(X,) = data
|
|
110
|
+
patching_status.and_conditions(
|
|
111
|
+
[
|
|
112
|
+
(not sp.issparse(X), "X is sparse. Sparse input is not supported."),
|
|
113
|
+
]
|
|
114
|
+
)
|
|
115
|
+
return patching_status
|
|
116
|
+
raise RuntimeError(f"Unknown method {method_name} in {self.__class__.__name__}")
|
|
117
|
+
|
|
118
|
+
_onedal_cpu_supported = _onedal_supported
|
|
119
|
+
_onedal_gpu_supported = _onedal_supported
|
|
120
|
+
|
|
121
|
+
def get_precision(self):
|
|
122
|
+
# use array API-enabled version
|
|
123
|
+
if self.store_precision:
|
|
124
|
+
precision = self.precision_
|
|
125
|
+
else:
|
|
126
|
+
precision = _pinvh(self.covariance_, check_finite=False)
|
|
127
|
+
return precision
|
|
128
|
+
|
|
129
|
+
def fit(self, X, y=None):
|
|
130
|
+
if sklearn_check_version("1.2"):
|
|
131
|
+
self._validate_params()
|
|
132
|
+
dispatch(
|
|
133
|
+
self,
|
|
134
|
+
"fit",
|
|
135
|
+
{
|
|
136
|
+
"onedal": self.__class__._onedal_fit,
|
|
137
|
+
"sklearn": _sklearn_EmpiricalCovariance.fit,
|
|
138
|
+
},
|
|
139
|
+
X,
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
return self
|
|
143
|
+
|
|
144
|
+
@wrap_output_data
|
|
145
|
+
@support_sycl_format
|
|
146
|
+
def score(self, X_test, y=None):
|
|
147
|
+
|
|
148
|
+
check_is_fitted(self)
|
|
149
|
+
# Only covariance evaluated for get_namespace due to dpnp/dpctl
|
|
150
|
+
# support without array_api_dispatch
|
|
151
|
+
xp, _ = get_namespace(X_test, self.covariance_)
|
|
152
|
+
|
|
153
|
+
X = validate_data(
|
|
154
|
+
self,
|
|
155
|
+
X_test,
|
|
156
|
+
dtype=[xp.float64, xp.float32],
|
|
157
|
+
reset=False,
|
|
158
|
+
)
|
|
159
|
+
|
|
160
|
+
location = self.location_
|
|
161
|
+
precision = self.get_precision()
|
|
162
|
+
|
|
163
|
+
est = clone(self)
|
|
164
|
+
est.set_params(assume_centered=True)
|
|
165
|
+
|
|
166
|
+
# test_cov is a numpy array, but calculated on device
|
|
167
|
+
test_cov = est.fit(X - self.location_).covariance_
|
|
168
|
+
if not _is_numpy_namespace(xp):
|
|
169
|
+
test_cov = xp.asarray(test_cov, device=X.device)
|
|
170
|
+
res = log_likelihood(test_cov, self.get_precision())
|
|
171
|
+
|
|
172
|
+
return res
|
|
173
|
+
|
|
174
|
+
@wrap_output_data
|
|
175
|
+
@support_sycl_format
|
|
176
|
+
def error_norm(self, comp_cov, norm="frobenius", scaling=True, squared=True):
|
|
177
|
+
# equivalent to the sklearn implementation but written for array API
|
|
178
|
+
# in the case of numpy-like inputs it will use sklearn's version instead.
|
|
179
|
+
# This can be deprecated if/when sklearn makes the equivalent array API enabled.
|
|
180
|
+
# This includes a validate_data call and an unusual call to get_namespace in
|
|
181
|
+
# order to also support dpnp/dpctl without array_api_dispatch.
|
|
182
|
+
check_is_fitted(self)
|
|
183
|
+
# Only covariance evaluated for get_namespace due to dpnp/dpctl
|
|
184
|
+
# support without array_api_dispatch
|
|
185
|
+
xp, _ = get_namespace(comp_cov, self.covariance_)
|
|
186
|
+
c_cov = validate_data(
|
|
187
|
+
self,
|
|
188
|
+
comp_cov,
|
|
189
|
+
dtype=[xp.float64, xp.float32],
|
|
190
|
+
reset=False,
|
|
191
|
+
)
|
|
192
|
+
|
|
193
|
+
if _is_numpy_namespace(xp):
|
|
194
|
+
# must be done this way is it does not inherit from sklearn
|
|
195
|
+
return _sklearn_EmpiricalCovariance.error_norm(
|
|
196
|
+
self, c_cov, norm=norm, scaling=scaling, squared=squared
|
|
197
|
+
)
|
|
198
|
+
|
|
199
|
+
# compute the error
|
|
200
|
+
error = c_cov - self.covariance_
|
|
201
|
+
# compute the error norm
|
|
202
|
+
if norm == "frobenius":
|
|
203
|
+
squared_norm = xp.matmul(xp.reshape(error, (-1)), xp.reshape(error, (-1)))
|
|
204
|
+
elif norm == "spectral":
|
|
205
|
+
squared_norm = xp.max(xp.linalg.svdvals(xp.matmul(error.T, error)))
|
|
206
|
+
else:
|
|
207
|
+
raise NotImplementedError("Only spectral and frobenius norms are implemented")
|
|
208
|
+
# optionally scale the error norm
|
|
209
|
+
if scaling:
|
|
210
|
+
squared_norm = squared_norm / error.shape[0]
|
|
211
|
+
# finally get either the squared norm or the norm
|
|
212
|
+
if squared:
|
|
213
|
+
result = squared_norm
|
|
214
|
+
else:
|
|
215
|
+
result = xp.sqrt(squared_norm)
|
|
216
|
+
|
|
217
|
+
return result
|
|
218
|
+
|
|
219
|
+
# expose sklearnex pairwise_distances if mahalanobis distance eventually supported
|
|
220
|
+
@support_sycl_format
|
|
221
|
+
def mahalanobis(self, X):
|
|
222
|
+
# This must be done as ```support_input_format``` is insufficient for array API
|
|
223
|
+
# support when attributes are non-numpy.
|
|
224
|
+
check_is_fitted(self)
|
|
225
|
+
precision = self.get_precision()
|
|
226
|
+
loc = self.location_[None, :]
|
|
227
|
+
xp, _ = get_namespace(X, precision, loc)
|
|
228
|
+
# do not check dtype, done in pairwise_distances
|
|
229
|
+
X_in = validate_data(self, X, reset=False)
|
|
230
|
+
|
|
231
|
+
if not _is_numpy_namespace(xp) and isinstance(X_in, np.ndarray):
|
|
232
|
+
# corrects issues with respect to dpnp/dpctl support without array_api_dispatch
|
|
233
|
+
X_in = X
|
|
234
|
+
loc = xp.asarray(loc, device=X.device)
|
|
235
|
+
precision = xp.asarray(precision, device=X.device)
|
|
236
|
+
|
|
237
|
+
with config_context(assume_finite=True):
|
|
238
|
+
try:
|
|
239
|
+
dist = _mahalanobis(X_in, loc, VI=precision)
|
|
240
|
+
|
|
241
|
+
except ValueError as e:
|
|
242
|
+
# Throw the expected sklearn error in an n_feature length violation
|
|
243
|
+
if "Incompatible dimension for X and Y matrices: X.shape[1] ==" in str(e):
|
|
244
|
+
raise ValueError(
|
|
245
|
+
f"X has {_num_features(X)} features, but {self.__class__.__name__} "
|
|
246
|
+
f"is expecting {self.n_features_in_} features as input."
|
|
247
|
+
) from None
|
|
248
|
+
else:
|
|
249
|
+
raise e
|
|
250
|
+
|
|
251
|
+
if not _is_numpy_namespace(xp):
|
|
252
|
+
dist = xp.asarray(dist, device=X.device)
|
|
253
|
+
|
|
254
|
+
return (xp.reshape(dist, (-1,))) ** 2
|
|
255
|
+
|
|
256
|
+
fit.__doc__ = _sklearn_EmpiricalCovariance.fit.__doc__
|
|
257
|
+
mahalanobis.__doc__ = _sklearn_EmpiricalCovariance.mahalanobis.__doc__
|
|
258
|
+
error_norm.__doc__ = _sklearn_EmpiricalCovariance.error_norm.__doc__
|
|
259
|
+
score.__doc__ = _sklearn_EmpiricalCovariance.score.__doc__
|
|
260
|
+
get_precision.__doc__ = _sklearn_EmpiricalCovariance.get_precision.__doc__
|
|
261
|
+
_set_covariance.__doc__ = _sklearn_EmpiricalCovariance._set_covariance.__doc__
|