scikit-learn-intelex 2025.10.0__py313-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.cp313-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.cp313-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-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/decomposition/__init__.py +19 -0
- 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-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/__init__.py +29 -0
- 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-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/coordinate_descent.py +17 -0
- 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-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/manifold/__init__.py +19 -0
- 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-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/__init__.py +19 -0
- 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-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils/__init__.py +21 -0
- 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.cp313-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp313-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/__init__.py +20 -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-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/__init__.py +20 -0
- 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-2025.10.0.data/data/Lib/site-packages/onedal/neighbors/__init__.py +19 -0
- 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-2025.10.0.data/data/Lib/site-packages/sklearnex/__init__.py +69 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/__main__.py +58 -0
- 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-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +338 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +405 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +455 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/__init__.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/dbscan.py +199 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +399 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +38 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +157 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/conftest.py +82 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/covariance/__init__.py +19 -0
- 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/__init__.py +19 -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-2025.10.0.data/data/Lib/site-packages/sklearnex/dispatcher.py +572 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +629 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dummy/__init__.py +19 -0
- 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-2025.10.0.data/data/Lib/site-packages/sklearnex/ensemble/__init__.py +29 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/ensemble/_forest.py +1799 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +196 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/glob/__main__.py +72 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/glob/dispatcher.py +101 -0
- 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-2025.10.0.data/data/Lib/site-packages/sklearnex/manifold/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/manifold/t_sne.py +28 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +256 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/metrics/__init__.py +23 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/metrics/pairwise.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/metrics/ranking.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +39 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/model_selection/__init__.py +21 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/model_selection/split.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +34 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/__init__.py +27 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/_lof.py +189 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/common.py +313 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +189 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +167 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +170 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +82 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/__init__.py +17 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +261 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +112 -0
- 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/__init__.py +25 -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-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +30 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +26 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +21 -0
- 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-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +20 -0
- 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-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +23 -0
- 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/__init__.py +19 -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-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +21 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/incremental_linear_model.py +28 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +24 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +21 -0
- 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-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +23 -0
- 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/__init__.py +29 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/_common.py +403 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/nusvc.py +278 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/nusvr.py +158 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/svc.py +306 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/svr.py +155 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +124 -0
- 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-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +269 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +111 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_parallel.py +48 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_patching.py +418 -0
- 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-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/__init__.py +19 -0
- 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/LICENSE.txt +202 -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-2025.10.0.dist-info/WHEEL +5 -0
- scikit_learn_intelex-2025.10.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,493 @@
|
|
|
1
|
+
# ==============================================================================
|
|
2
|
+
# Copyright 2020 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
|
+
# daal4py KNN scikit-learn-compatible base classes
|
|
18
|
+
|
|
19
|
+
import logging
|
|
20
|
+
import numbers
|
|
21
|
+
import warnings
|
|
22
|
+
|
|
23
|
+
import numpy as np
|
|
24
|
+
from scipy import sparse as sp
|
|
25
|
+
from sklearn.base import is_classifier, is_regressor
|
|
26
|
+
from sklearn.neighbors import VALID_METRICS
|
|
27
|
+
from sklearn.neighbors._ball_tree import BallTree
|
|
28
|
+
from sklearn.neighbors._base import KNeighborsMixin as BaseKNeighborsMixin
|
|
29
|
+
from sklearn.neighbors._base import NeighborsBase as BaseNeighborsBase
|
|
30
|
+
from sklearn.neighbors._base import RadiusNeighborsMixin as BaseRadiusNeighborsMixin
|
|
31
|
+
from sklearn.neighbors._kd_tree import KDTree
|
|
32
|
+
from sklearn.utils.multiclass import check_classification_targets
|
|
33
|
+
from sklearn.utils.validation import check_array, check_is_fitted, check_X_y
|
|
34
|
+
|
|
35
|
+
import daal4py as d4p
|
|
36
|
+
|
|
37
|
+
from .._utils import (
|
|
38
|
+
PatchingConditionsChain,
|
|
39
|
+
get_patch_message,
|
|
40
|
+
getFPType,
|
|
41
|
+
sklearn_check_version,
|
|
42
|
+
)
|
|
43
|
+
from ..utils.validation import check_feature_names, check_n_features, get_requires_y_tag
|
|
44
|
+
|
|
45
|
+
if not sklearn_check_version("1.2"):
|
|
46
|
+
from sklearn.neighbors._base import _check_weights
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def training_algorithm(method, fptype, params):
|
|
50
|
+
if method == "brute":
|
|
51
|
+
train_alg = d4p.bf_knn_classification_training
|
|
52
|
+
|
|
53
|
+
else:
|
|
54
|
+
train_alg = d4p.kdtree_knn_classification_training
|
|
55
|
+
|
|
56
|
+
params["fptype"] = fptype
|
|
57
|
+
return train_alg(**params)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def prediction_algorithm(method, fptype, params):
|
|
61
|
+
if method == "brute":
|
|
62
|
+
predict_alg = d4p.bf_knn_classification_prediction
|
|
63
|
+
else:
|
|
64
|
+
predict_alg = d4p.kdtree_knn_classification_prediction
|
|
65
|
+
|
|
66
|
+
params["fptype"] = fptype
|
|
67
|
+
return predict_alg(**params)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def parse_auto_method(estimator, method, n_samples, n_features):
|
|
71
|
+
result_method = method
|
|
72
|
+
|
|
73
|
+
if method in ["auto", "ball_tree"]:
|
|
74
|
+
condition = (
|
|
75
|
+
estimator.n_neighbors is not None
|
|
76
|
+
and estimator.n_neighbors >= estimator.n_samples_fit_ // 2
|
|
77
|
+
)
|
|
78
|
+
if estimator.metric == "precomputed" or n_features > 11 or condition:
|
|
79
|
+
result_method = "brute"
|
|
80
|
+
else:
|
|
81
|
+
if estimator.effective_metric_ in VALID_METRICS["kd_tree"]:
|
|
82
|
+
result_method = "kd_tree"
|
|
83
|
+
else:
|
|
84
|
+
result_method = "brute"
|
|
85
|
+
|
|
86
|
+
return result_method
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def daal4py_fit(estimator, X, fptype):
|
|
90
|
+
estimator._fit_X = X
|
|
91
|
+
estimator._fit_method = estimator.algorithm
|
|
92
|
+
estimator.effective_metric_ = "euclidean"
|
|
93
|
+
estimator._tree = None
|
|
94
|
+
weights = getattr(estimator, "weights", "uniform")
|
|
95
|
+
|
|
96
|
+
params = {
|
|
97
|
+
"method": "defaultDense",
|
|
98
|
+
"k": estimator.n_neighbors,
|
|
99
|
+
"voteWeights": "voteUniform" if weights == "uniform" else "voteDistance",
|
|
100
|
+
"resultsToCompute": "computeIndicesOfNeighbors|computeDistances",
|
|
101
|
+
"resultsToEvaluate": (
|
|
102
|
+
"none" if getattr(estimator, "_y", None) is None else "computeClassLabels"
|
|
103
|
+
),
|
|
104
|
+
}
|
|
105
|
+
if hasattr(estimator, "classes_"):
|
|
106
|
+
params["nClasses"] = len(estimator.classes_)
|
|
107
|
+
|
|
108
|
+
if getattr(estimator, "_y", None) is None:
|
|
109
|
+
labels = None
|
|
110
|
+
else:
|
|
111
|
+
labels = estimator._y.reshape(-1, 1)
|
|
112
|
+
|
|
113
|
+
method = parse_auto_method(
|
|
114
|
+
estimator, estimator.algorithm, estimator.n_samples_fit_, estimator.n_features_in_
|
|
115
|
+
)
|
|
116
|
+
estimator._fit_method = method
|
|
117
|
+
train_alg = training_algorithm(method, fptype, params)
|
|
118
|
+
estimator._daal_model = train_alg.compute(X, labels).model
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def daal4py_kneighbors(estimator, X=None, n_neighbors=None, return_distance=True):
|
|
122
|
+
n_features = getattr(estimator, "n_features_in_", None)
|
|
123
|
+
shape = getattr(X, "shape", None)
|
|
124
|
+
if n_features and shape and len(shape) > 1 and shape[1] != n_features:
|
|
125
|
+
raise ValueError(
|
|
126
|
+
(
|
|
127
|
+
f"X has {X.shape[1]} features, "
|
|
128
|
+
f"but kneighbors is expecting {n_features} features as input"
|
|
129
|
+
)
|
|
130
|
+
)
|
|
131
|
+
|
|
132
|
+
check_is_fitted(estimator)
|
|
133
|
+
|
|
134
|
+
if n_neighbors is None:
|
|
135
|
+
n_neighbors = estimator.n_neighbors
|
|
136
|
+
elif n_neighbors <= 0:
|
|
137
|
+
raise ValueError("Expected n_neighbors > 0. Got %d" % n_neighbors)
|
|
138
|
+
else:
|
|
139
|
+
if not isinstance(n_neighbors, numbers.Integral):
|
|
140
|
+
raise TypeError(
|
|
141
|
+
"n_neighbors does not take %s value, "
|
|
142
|
+
"enter integer value" % type(n_neighbors)
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
if X is not None:
|
|
146
|
+
query_is_train = False
|
|
147
|
+
X = check_array(X, accept_sparse="csr", dtype=[np.float64, np.float32])
|
|
148
|
+
else:
|
|
149
|
+
query_is_train = True
|
|
150
|
+
X = estimator._fit_X
|
|
151
|
+
# Include an extra neighbor to account for the sample itself being
|
|
152
|
+
# returned, which is removed later
|
|
153
|
+
n_neighbors += 1
|
|
154
|
+
|
|
155
|
+
n_samples_fit = estimator.n_samples_fit_
|
|
156
|
+
if n_neighbors > n_samples_fit:
|
|
157
|
+
raise ValueError(
|
|
158
|
+
"Expected n_neighbors <= n_samples, "
|
|
159
|
+
" but n_samples = %d, n_neighbors = %d" % (n_samples_fit, n_neighbors)
|
|
160
|
+
)
|
|
161
|
+
|
|
162
|
+
chunked_results = None
|
|
163
|
+
|
|
164
|
+
try:
|
|
165
|
+
fptype = getFPType(X)
|
|
166
|
+
except ValueError:
|
|
167
|
+
fptype = None
|
|
168
|
+
|
|
169
|
+
weights = getattr(estimator, "weights", "uniform")
|
|
170
|
+
|
|
171
|
+
params = {
|
|
172
|
+
"method": "defaultDense",
|
|
173
|
+
"k": n_neighbors,
|
|
174
|
+
"voteWeights": "voteUniform" if weights == "uniform" else "voteDistance",
|
|
175
|
+
"resultsToCompute": "computeIndicesOfNeighbors|computeDistances",
|
|
176
|
+
"resultsToEvaluate": (
|
|
177
|
+
"none" if getattr(estimator, "_y", None) is None else "computeClassLabels"
|
|
178
|
+
),
|
|
179
|
+
}
|
|
180
|
+
if hasattr(estimator, "classes_"):
|
|
181
|
+
params["nClasses"] = len(estimator.classes_)
|
|
182
|
+
|
|
183
|
+
method = parse_auto_method(
|
|
184
|
+
estimator, estimator._fit_method, estimator.n_samples_fit_, n_features
|
|
185
|
+
)
|
|
186
|
+
|
|
187
|
+
predict_alg = prediction_algorithm(method, fptype, params)
|
|
188
|
+
prediction_result = predict_alg.compute(X, estimator._daal_model)
|
|
189
|
+
|
|
190
|
+
distances = prediction_result.distances
|
|
191
|
+
indices = prediction_result.indices
|
|
192
|
+
|
|
193
|
+
if method == "kd_tree":
|
|
194
|
+
for i in range(distances.shape[0]):
|
|
195
|
+
seq = distances[i].argsort()
|
|
196
|
+
indices[i] = indices[i][seq]
|
|
197
|
+
distances[i] = distances[i][seq]
|
|
198
|
+
|
|
199
|
+
if return_distance:
|
|
200
|
+
results = distances, indices.astype(int)
|
|
201
|
+
else:
|
|
202
|
+
results = indices.astype(int)
|
|
203
|
+
|
|
204
|
+
if chunked_results is not None:
|
|
205
|
+
if return_distance:
|
|
206
|
+
neigh_dist, neigh_ind = zip(*chunked_results)
|
|
207
|
+
results = np.vstack(neigh_dist), np.vstack(neigh_ind)
|
|
208
|
+
else:
|
|
209
|
+
results = np.vstack(chunked_results)
|
|
210
|
+
|
|
211
|
+
if not query_is_train:
|
|
212
|
+
return results
|
|
213
|
+
# If the query data is the same as the indexed data, we would like
|
|
214
|
+
# to ignore the first nearest neighbor of every sample, i.e
|
|
215
|
+
# the sample itself.
|
|
216
|
+
if return_distance:
|
|
217
|
+
neigh_dist, neigh_ind = results
|
|
218
|
+
else:
|
|
219
|
+
neigh_ind = results
|
|
220
|
+
|
|
221
|
+
n_queries, _ = X.shape
|
|
222
|
+
sample_range = np.arange(n_queries)[:, None]
|
|
223
|
+
sample_mask = neigh_ind != sample_range
|
|
224
|
+
|
|
225
|
+
# Corner case: When the number of duplicates are more
|
|
226
|
+
# than the number of neighbors, the first NN will not
|
|
227
|
+
# be the sample, but a duplicate.
|
|
228
|
+
# In that case mask the first duplicate.
|
|
229
|
+
dup_gr_nbrs = np.all(sample_mask, axis=1)
|
|
230
|
+
sample_mask[:, 0][dup_gr_nbrs] = False
|
|
231
|
+
neigh_ind = np.reshape(neigh_ind[sample_mask], (n_queries, n_neighbors - 1))
|
|
232
|
+
|
|
233
|
+
if return_distance:
|
|
234
|
+
neigh_dist = np.reshape(neigh_dist[sample_mask], (n_queries, n_neighbors - 1))
|
|
235
|
+
return neigh_dist, neigh_ind
|
|
236
|
+
return neigh_ind
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
def validate_data(
|
|
240
|
+
estimator, X, y=None, reset=True, validate_separately=False, **check_params
|
|
241
|
+
):
|
|
242
|
+
if y is None:
|
|
243
|
+
requires_y = get_requires_y_tag(estimator)
|
|
244
|
+
|
|
245
|
+
if requires_y:
|
|
246
|
+
raise ValueError(
|
|
247
|
+
f"This {estimator.__class__.__name__} estimator "
|
|
248
|
+
f"requires y to be passed, but the target y is None."
|
|
249
|
+
)
|
|
250
|
+
X = check_array(X, **check_params)
|
|
251
|
+
out = X, y
|
|
252
|
+
else:
|
|
253
|
+
if validate_separately:
|
|
254
|
+
# We need this because some estimators validate X and y
|
|
255
|
+
# separately, and in general, separately calling check_array()
|
|
256
|
+
# on X and y isn't equivalent to just calling check_X_y()
|
|
257
|
+
# :(
|
|
258
|
+
check_X_params, check_y_params = validate_separately
|
|
259
|
+
X = check_array(X, **check_X_params)
|
|
260
|
+
y = check_array(y, **check_y_params)
|
|
261
|
+
else:
|
|
262
|
+
X, y = check_X_y(X, y, **check_params)
|
|
263
|
+
out = X, y
|
|
264
|
+
|
|
265
|
+
if check_params.get("ensure_2d", True):
|
|
266
|
+
check_n_features(estimator, X, reset=reset)
|
|
267
|
+
|
|
268
|
+
return out
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
class NeighborsBase(BaseNeighborsBase):
|
|
272
|
+
def __init__(
|
|
273
|
+
self,
|
|
274
|
+
n_neighbors=None,
|
|
275
|
+
radius=None,
|
|
276
|
+
algorithm="auto",
|
|
277
|
+
leaf_size=30,
|
|
278
|
+
metric="minkowski",
|
|
279
|
+
p=2,
|
|
280
|
+
metric_params=None,
|
|
281
|
+
n_jobs=None,
|
|
282
|
+
):
|
|
283
|
+
super().__init__(
|
|
284
|
+
n_neighbors=n_neighbors,
|
|
285
|
+
radius=radius,
|
|
286
|
+
algorithm=algorithm,
|
|
287
|
+
leaf_size=leaf_size,
|
|
288
|
+
metric=metric,
|
|
289
|
+
p=p,
|
|
290
|
+
metric_params=metric_params,
|
|
291
|
+
n_jobs=n_jobs,
|
|
292
|
+
)
|
|
293
|
+
|
|
294
|
+
def _fit(self, X, y=None):
|
|
295
|
+
if self.metric_params is not None and "p" in self.metric_params:
|
|
296
|
+
if self.p is not None:
|
|
297
|
+
warnings.warn(
|
|
298
|
+
"Parameter p is found in metric_params. "
|
|
299
|
+
"The corresponding parameter from __init__ "
|
|
300
|
+
"is ignored.",
|
|
301
|
+
SyntaxWarning,
|
|
302
|
+
stacklevel=2,
|
|
303
|
+
)
|
|
304
|
+
|
|
305
|
+
if hasattr(self, "weights") and not sklearn_check_version("1.2"):
|
|
306
|
+
self.weights = _check_weights(self.weights)
|
|
307
|
+
|
|
308
|
+
check_feature_names(self, X, reset=True)
|
|
309
|
+
|
|
310
|
+
X_incorrect_type = isinstance(
|
|
311
|
+
X, (KDTree, BallTree, NeighborsBase, BaseNeighborsBase)
|
|
312
|
+
)
|
|
313
|
+
single_output = True
|
|
314
|
+
self._daal_model = None
|
|
315
|
+
shape = None
|
|
316
|
+
correct_n_classes = True
|
|
317
|
+
|
|
318
|
+
requires_y = get_requires_y_tag(self)
|
|
319
|
+
|
|
320
|
+
if y is not None or requires_y:
|
|
321
|
+
if not X_incorrect_type or y is None:
|
|
322
|
+
X, y = validate_data(
|
|
323
|
+
self,
|
|
324
|
+
X,
|
|
325
|
+
y,
|
|
326
|
+
accept_sparse="csr",
|
|
327
|
+
multi_output=True,
|
|
328
|
+
dtype=[np.float64, np.float32],
|
|
329
|
+
)
|
|
330
|
+
single_output = False if y.ndim > 1 and y.shape[1] > 1 else True
|
|
331
|
+
|
|
332
|
+
shape = y.shape
|
|
333
|
+
|
|
334
|
+
if is_classifier(self) or is_regressor(self):
|
|
335
|
+
if y.ndim == 1 or y.ndim == 2 and y.shape[1] == 1:
|
|
336
|
+
self.outputs_2d_ = False
|
|
337
|
+
y = y.reshape((-1, 1))
|
|
338
|
+
else:
|
|
339
|
+
self.outputs_2d_ = True
|
|
340
|
+
|
|
341
|
+
if is_classifier(self):
|
|
342
|
+
check_classification_targets(y)
|
|
343
|
+
self.classes_ = []
|
|
344
|
+
self._y = np.empty(y.shape, dtype=int)
|
|
345
|
+
for k in range(self._y.shape[1]):
|
|
346
|
+
classes, self._y[:, k] = np.unique(y[:, k], return_inverse=True)
|
|
347
|
+
self.classes_.append(classes)
|
|
348
|
+
|
|
349
|
+
if not self.outputs_2d_:
|
|
350
|
+
self.classes_ = self.classes_[0]
|
|
351
|
+
self._y = self._y.ravel()
|
|
352
|
+
|
|
353
|
+
n_classes = len(self.classes_)
|
|
354
|
+
if n_classes < 2:
|
|
355
|
+
correct_n_classes = False
|
|
356
|
+
else:
|
|
357
|
+
self._y = y
|
|
358
|
+
else:
|
|
359
|
+
if not X_incorrect_type:
|
|
360
|
+
X, _ = validate_data(
|
|
361
|
+
self, X, accept_sparse="csr", dtype=[np.float64, np.float32]
|
|
362
|
+
)
|
|
363
|
+
|
|
364
|
+
if not X_incorrect_type:
|
|
365
|
+
self.n_samples_fit_ = X.shape[0]
|
|
366
|
+
self.n_features_in_ = X.shape[1]
|
|
367
|
+
|
|
368
|
+
try:
|
|
369
|
+
fptype = getFPType(X)
|
|
370
|
+
except ValueError:
|
|
371
|
+
fptype = None
|
|
372
|
+
|
|
373
|
+
weights = getattr(self, "weights", "uniform")
|
|
374
|
+
|
|
375
|
+
def stock_fit(self, X, y):
|
|
376
|
+
result = super(NeighborsBase, self)._fit(X, y)
|
|
377
|
+
return result
|
|
378
|
+
|
|
379
|
+
if self.n_neighbors is not None:
|
|
380
|
+
if self.n_neighbors <= 0:
|
|
381
|
+
raise ValueError("Expected n_neighbors > 0. Got %d" % self.n_neighbors)
|
|
382
|
+
if not isinstance(self.n_neighbors, numbers.Integral):
|
|
383
|
+
raise TypeError(
|
|
384
|
+
"n_neighbors does not take %s value, "
|
|
385
|
+
"enter integer value" % type(self.n_neighbors)
|
|
386
|
+
)
|
|
387
|
+
|
|
388
|
+
_patching_status = PatchingConditionsChain(
|
|
389
|
+
"sklearn.neighbors.KNeighborsMixin.kneighbors"
|
|
390
|
+
)
|
|
391
|
+
_dal_ready = _patching_status.and_conditions(
|
|
392
|
+
[
|
|
393
|
+
(
|
|
394
|
+
self.metric == "minkowski"
|
|
395
|
+
and self.p == 2
|
|
396
|
+
or self.metric == "euclidean",
|
|
397
|
+
f"'{self.metric}' (p={self.p}) metric is not supported. "
|
|
398
|
+
"Only 'euclidean' or 'minkowski' with p=2 metrics are supported.",
|
|
399
|
+
),
|
|
400
|
+
(not X_incorrect_type, "X is not Tree or Neighbors instance or array."),
|
|
401
|
+
(
|
|
402
|
+
weights in ["uniform", "distance"],
|
|
403
|
+
f"'{weights}' weights is not supported. "
|
|
404
|
+
"Only 'uniform' and 'distance' weights are supported.",
|
|
405
|
+
),
|
|
406
|
+
(
|
|
407
|
+
self.algorithm in ["brute", "kd_tree", "auto", "ball_tree"],
|
|
408
|
+
f"'{self.algorithm}' algorithm is not supported. "
|
|
409
|
+
"Only 'brute', 'kd_tree', 'auto' and 'ball_tree' "
|
|
410
|
+
"algorithms are supported.",
|
|
411
|
+
),
|
|
412
|
+
(single_output, "Multiple outputs are not supported."),
|
|
413
|
+
(fptype is not None, "Unable to get dtype."),
|
|
414
|
+
(not sp.issparse(X), "X is sparse. Sparse input is not supported."),
|
|
415
|
+
(correct_n_classes, "Number of classes < 2."),
|
|
416
|
+
]
|
|
417
|
+
)
|
|
418
|
+
_patching_status.write_log()
|
|
419
|
+
if _dal_ready:
|
|
420
|
+
try:
|
|
421
|
+
daal4py_fit(self, X, fptype)
|
|
422
|
+
result = self
|
|
423
|
+
except RuntimeError:
|
|
424
|
+
logging.info(
|
|
425
|
+
"sklearn.neighbors.KNeighborsMixin."
|
|
426
|
+
"kneighbors: " + get_patch_message("sklearn_after_daal")
|
|
427
|
+
)
|
|
428
|
+
result = stock_fit(self, X, y)
|
|
429
|
+
else:
|
|
430
|
+
result = stock_fit(self, X, y)
|
|
431
|
+
|
|
432
|
+
if y is not None and is_regressor(self):
|
|
433
|
+
self._y = y if shape is None else y.reshape(shape)
|
|
434
|
+
|
|
435
|
+
return result
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
class KNeighborsMixin(BaseKNeighborsMixin):
|
|
439
|
+
def kneighbors(self, X=None, n_neighbors=None, return_distance=True):
|
|
440
|
+
daal_model = getattr(self, "_daal_model", None)
|
|
441
|
+
if X is not None and self.metric != "precomputed":
|
|
442
|
+
X = check_array(X, accept_sparse="csr", dtype=[np.float64, np.float32])
|
|
443
|
+
x = self._fit_X if X is None else X
|
|
444
|
+
try:
|
|
445
|
+
fptype = getFPType(x)
|
|
446
|
+
except ValueError:
|
|
447
|
+
fptype = None
|
|
448
|
+
|
|
449
|
+
_patching_status = PatchingConditionsChain(
|
|
450
|
+
"sklearn.neighbors.KNeighborsMixin.kneighbors"
|
|
451
|
+
)
|
|
452
|
+
_dal_ready = _patching_status.and_conditions(
|
|
453
|
+
[
|
|
454
|
+
(daal_model is not None, "oneDAL model was not trained."),
|
|
455
|
+
(fptype is not None, "Unable to get dtype."),
|
|
456
|
+
(not sp.issparse(X), "X is sparse. Sparse input is not supported."),
|
|
457
|
+
]
|
|
458
|
+
)
|
|
459
|
+
_patching_status.write_log()
|
|
460
|
+
|
|
461
|
+
if _dal_ready:
|
|
462
|
+
result = daal4py_kneighbors(self, X, n_neighbors, return_distance)
|
|
463
|
+
else:
|
|
464
|
+
if (
|
|
465
|
+
daal_model is not None
|
|
466
|
+
or getattr(self, "_tree", 0) is None
|
|
467
|
+
and self._fit_method == "kd_tree"
|
|
468
|
+
):
|
|
469
|
+
BaseNeighborsBase._fit(self, self._fit_X, getattr(self, "_y", None))
|
|
470
|
+
result = super(KNeighborsMixin, self).kneighbors(
|
|
471
|
+
X, n_neighbors, return_distance
|
|
472
|
+
)
|
|
473
|
+
|
|
474
|
+
return result
|
|
475
|
+
|
|
476
|
+
|
|
477
|
+
class RadiusNeighborsMixin(BaseRadiusNeighborsMixin):
|
|
478
|
+
def radius_neighbors(
|
|
479
|
+
self, X=None, radius=None, return_distance=True, sort_results=False
|
|
480
|
+
):
|
|
481
|
+
daal_model = getattr(self, "_daal_model", None)
|
|
482
|
+
|
|
483
|
+
if (
|
|
484
|
+
daal_model is not None
|
|
485
|
+
or getattr(self, "_tree", 0) is None
|
|
486
|
+
and self._fit_method == "kd_tree"
|
|
487
|
+
):
|
|
488
|
+
BaseNeighborsBase._fit(self, self._fit_X, getattr(self, "_y", None))
|
|
489
|
+
result = BaseRadiusNeighborsMixin.radius_neighbors(
|
|
490
|
+
self, X, radius, return_distance, sort_results
|
|
491
|
+
)
|
|
492
|
+
|
|
493
|
+
return result
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# ==============================================================================
|
|
2
|
+
# Copyright 2020 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
|
+
# daal4py KNN classification scikit-learn-compatible classes
|
|
18
|
+
|
|
19
|
+
import numpy as np
|
|
20
|
+
from scipy import sparse as sp
|
|
21
|
+
from sklearn.base import ClassifierMixin as BaseClassifierMixin
|
|
22
|
+
from sklearn.neighbors._classification import (
|
|
23
|
+
KNeighborsClassifier as BaseKNeighborsClassifier,
|
|
24
|
+
)
|
|
25
|
+
from sklearn.utils.validation import check_array
|
|
26
|
+
|
|
27
|
+
from .._utils import PatchingConditionsChain, getFPType, sklearn_check_version
|
|
28
|
+
from ..utils.validation import check_feature_names
|
|
29
|
+
from ._base import KNeighborsMixin, NeighborsBase, parse_auto_method, prediction_algorithm
|
|
30
|
+
|
|
31
|
+
if not sklearn_check_version("1.2"):
|
|
32
|
+
from sklearn.neighbors._base import _check_weights
|
|
33
|
+
|
|
34
|
+
from sklearn.utils.validation import _deprecate_positional_args
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def daal4py_classifier_predict(estimator, X, base_predict):
|
|
38
|
+
check_feature_names(estimator, X, reset=False)
|
|
39
|
+
X = check_array(X, accept_sparse="csr", dtype=[np.float64, np.float32])
|
|
40
|
+
daal_model = getattr(estimator, "_daal_model", None)
|
|
41
|
+
n_features = getattr(estimator, "n_features_in_", None)
|
|
42
|
+
shape = getattr(X, "shape", None)
|
|
43
|
+
if n_features and shape and len(shape) > 1 and shape[1] != n_features:
|
|
44
|
+
raise ValueError(
|
|
45
|
+
(
|
|
46
|
+
f"X has {X.shape[1]} features, "
|
|
47
|
+
f"but KNNClassifier is expecting "
|
|
48
|
+
f"{n_features} features as input"
|
|
49
|
+
)
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
try:
|
|
53
|
+
fptype = getFPType(X)
|
|
54
|
+
except ValueError:
|
|
55
|
+
fptype = None
|
|
56
|
+
|
|
57
|
+
_patching_status = PatchingConditionsChain(
|
|
58
|
+
"sklearn.neighbors.KNeighborsClassifier.predict"
|
|
59
|
+
)
|
|
60
|
+
_dal_ready = _patching_status.and_conditions(
|
|
61
|
+
[
|
|
62
|
+
(daal_model is not None, "oneDAL model was not trained."),
|
|
63
|
+
(fptype is not None, "Unable to get dtype."),
|
|
64
|
+
(not sp.issparse(X), "X is sparse. Sparse input is not supported."),
|
|
65
|
+
]
|
|
66
|
+
)
|
|
67
|
+
_patching_status.write_log()
|
|
68
|
+
|
|
69
|
+
if _dal_ready:
|
|
70
|
+
params = {
|
|
71
|
+
"method": "defaultDense",
|
|
72
|
+
"k": estimator.n_neighbors,
|
|
73
|
+
"nClasses": len(estimator.classes_),
|
|
74
|
+
"voteWeights": (
|
|
75
|
+
"voteUniform" if estimator.weights == "uniform" else "voteDistance"
|
|
76
|
+
),
|
|
77
|
+
"resultsToEvaluate": "computeClassLabels",
|
|
78
|
+
"resultsToCompute": "",
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
method = parse_auto_method(
|
|
82
|
+
estimator, estimator.algorithm, estimator.n_samples_fit_, n_features
|
|
83
|
+
)
|
|
84
|
+
predict_alg = prediction_algorithm(method, fptype, params)
|
|
85
|
+
prediction_result = predict_alg.compute(X, daal_model)
|
|
86
|
+
result = estimator.classes_.take(
|
|
87
|
+
np.asarray(prediction_result.prediction.ravel(), dtype=np.intp)
|
|
88
|
+
)
|
|
89
|
+
else:
|
|
90
|
+
result = base_predict(estimator, X)
|
|
91
|
+
|
|
92
|
+
return result
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
class KNeighborsClassifier(KNeighborsMixin, BaseClassifierMixin, NeighborsBase):
|
|
96
|
+
__doc__ = BaseKNeighborsClassifier.__doc__
|
|
97
|
+
|
|
98
|
+
@_deprecate_positional_args
|
|
99
|
+
def __init__(
|
|
100
|
+
self,
|
|
101
|
+
n_neighbors=5,
|
|
102
|
+
*,
|
|
103
|
+
weights="uniform",
|
|
104
|
+
algorithm="auto",
|
|
105
|
+
leaf_size=30,
|
|
106
|
+
p=2,
|
|
107
|
+
metric="minkowski",
|
|
108
|
+
metric_params=None,
|
|
109
|
+
n_jobs=None,
|
|
110
|
+
**kwargs,
|
|
111
|
+
):
|
|
112
|
+
super().__init__(
|
|
113
|
+
n_neighbors=n_neighbors,
|
|
114
|
+
algorithm=algorithm,
|
|
115
|
+
leaf_size=leaf_size,
|
|
116
|
+
metric=metric,
|
|
117
|
+
p=p,
|
|
118
|
+
metric_params=metric_params,
|
|
119
|
+
n_jobs=n_jobs,
|
|
120
|
+
**kwargs,
|
|
121
|
+
)
|
|
122
|
+
self.weights = weights
|
|
123
|
+
|
|
124
|
+
def fit(self, X, y):
|
|
125
|
+
return NeighborsBase._fit(self, X, y)
|
|
126
|
+
|
|
127
|
+
def predict(self, X):
|
|
128
|
+
return daal4py_classifier_predict(self, X, BaseKNeighborsClassifier.predict)
|
|
129
|
+
|
|
130
|
+
def predict_proba(self, X):
|
|
131
|
+
check_feature_names(self, X, reset=False)
|
|
132
|
+
return BaseKNeighborsClassifier.predict_proba(self, X)
|
|
133
|
+
|
|
134
|
+
fit.__doc__ = BaseKNeighborsClassifier.fit.__doc__
|
|
135
|
+
predict.__doc__ = BaseKNeighborsClassifier.predict.__doc__
|
|
136
|
+
predict_proba.__doc__ = BaseKNeighborsClassifier.predict_proba.__doc__
|
scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_regression.py
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# ==============================================================================
|
|
2
|
+
# Copyright 2020 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
|
+
# daal4py KNN regression scikit-learn-compatible classes
|
|
18
|
+
|
|
19
|
+
from sklearn.base import RegressorMixin
|
|
20
|
+
from sklearn.neighbors._regression import KNeighborsRegressor as BaseKNeighborsRegressor
|
|
21
|
+
|
|
22
|
+
from .._utils import sklearn_check_version
|
|
23
|
+
from ..utils.validation import check_feature_names
|
|
24
|
+
from ._base import KNeighborsMixin, NeighborsBase
|
|
25
|
+
|
|
26
|
+
if not sklearn_check_version("1.2"):
|
|
27
|
+
from sklearn.neighbors._base import _check_weights
|
|
28
|
+
|
|
29
|
+
from sklearn.utils.validation import _deprecate_positional_args
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class KNeighborsRegressor(KNeighborsMixin, RegressorMixin, NeighborsBase):
|
|
33
|
+
__doc__ = BaseKNeighborsRegressor.__doc__
|
|
34
|
+
|
|
35
|
+
@_deprecate_positional_args
|
|
36
|
+
def __init__(
|
|
37
|
+
self,
|
|
38
|
+
n_neighbors=5,
|
|
39
|
+
*,
|
|
40
|
+
weights="uniform",
|
|
41
|
+
algorithm="auto",
|
|
42
|
+
leaf_size=30,
|
|
43
|
+
p=2,
|
|
44
|
+
metric="minkowski",
|
|
45
|
+
metric_params=None,
|
|
46
|
+
n_jobs=None,
|
|
47
|
+
**kwargs,
|
|
48
|
+
):
|
|
49
|
+
super().__init__(
|
|
50
|
+
n_neighbors=n_neighbors,
|
|
51
|
+
algorithm=algorithm,
|
|
52
|
+
leaf_size=leaf_size,
|
|
53
|
+
metric=metric,
|
|
54
|
+
p=p,
|
|
55
|
+
metric_params=metric_params,
|
|
56
|
+
n_jobs=n_jobs,
|
|
57
|
+
**kwargs,
|
|
58
|
+
)
|
|
59
|
+
self.weights = weights
|
|
60
|
+
|
|
61
|
+
def _more_tags(self):
|
|
62
|
+
return BaseKNeighborsRegressor._more_tags(self)
|
|
63
|
+
|
|
64
|
+
def fit(self, X, y):
|
|
65
|
+
return NeighborsBase._fit(self, X, y)
|
|
66
|
+
|
|
67
|
+
def predict(self, X):
|
|
68
|
+
check_feature_names(self, X, reset=False)
|
|
69
|
+
return BaseKNeighborsRegressor.predict(self, X)
|
|
70
|
+
|
|
71
|
+
fit.__doc__ = BaseKNeighborsRegressor.fit.__doc__
|
|
72
|
+
predict.__doc__ = BaseKNeighborsRegressor.predict.__doc__
|