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,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__
|
|
@@ -0,0 +1,112 @@
|
|
|
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 numpy as np
|
|
18
|
+
import pytest
|
|
19
|
+
from numpy.testing import assert_allclose
|
|
20
|
+
|
|
21
|
+
from daal4py.sklearn._utils import daal_check_version
|
|
22
|
+
from onedal.tests.utils._dataframes_support import (
|
|
23
|
+
_convert_to_dataframe,
|
|
24
|
+
get_dataframes_and_queues,
|
|
25
|
+
)
|
|
26
|
+
from sklearnex.preview.covariance import EmpiricalCovariance
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@pytest.fixture
|
|
30
|
+
def hyperparameters(request):
|
|
31
|
+
hparams = EmpiricalCovariance.get_hyperparameters("fit")
|
|
32
|
+
|
|
33
|
+
def restore_hyperparameters():
|
|
34
|
+
EmpiricalCovariance.reset_hyperparameters("fit")
|
|
35
|
+
|
|
36
|
+
request.addfinalizer(restore_hyperparameters)
|
|
37
|
+
return hparams
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
@pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
|
|
41
|
+
@pytest.mark.parametrize("macro_block", [None, 2])
|
|
42
|
+
@pytest.mark.parametrize("grain_size", [None, 2])
|
|
43
|
+
@pytest.mark.parametrize("assume_centered", [True, False])
|
|
44
|
+
def test_sklearnex_import_covariance(
|
|
45
|
+
hyperparameters, dataframe, queue, macro_block, grain_size, assume_centered
|
|
46
|
+
):
|
|
47
|
+
X = np.array([[0, 1], [0, 1], [0, 1], [0, 1], [0, 1], [0, 1]])
|
|
48
|
+
|
|
49
|
+
X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
50
|
+
empcov = EmpiricalCovariance(assume_centered=assume_centered)
|
|
51
|
+
|
|
52
|
+
if daal_check_version((2025, "P", 700)):
|
|
53
|
+
if macro_block is not None:
|
|
54
|
+
if queue and queue.sycl_device.is_gpu:
|
|
55
|
+
pytest.skip("Test for CPU-only functionality")
|
|
56
|
+
hyperparameters.cpu_macro_block = macro_block
|
|
57
|
+
if grain_size is not None:
|
|
58
|
+
if queue and queue.sycl_device.is_gpu:
|
|
59
|
+
pytest.skip("Test for CPU-only functionality")
|
|
60
|
+
hyperparameters.cpu_grain_size = grain_size
|
|
61
|
+
|
|
62
|
+
result = empcov.fit(X)
|
|
63
|
+
|
|
64
|
+
expected_covariance = np.array([[0, 0], [0, 0]])
|
|
65
|
+
expected_means = np.array([0, 0])
|
|
66
|
+
|
|
67
|
+
if assume_centered:
|
|
68
|
+
expected_covariance = np.array([[0, 0], [0, 1]])
|
|
69
|
+
else:
|
|
70
|
+
expected_means = np.array([0, 1])
|
|
71
|
+
|
|
72
|
+
assert_allclose(expected_covariance, result.covariance_)
|
|
73
|
+
assert_allclose(expected_means, result.location_)
|
|
74
|
+
|
|
75
|
+
X = np.array([[1, 2], [3, 6]])
|
|
76
|
+
|
|
77
|
+
X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
78
|
+
result = empcov.fit(X)
|
|
79
|
+
|
|
80
|
+
if assume_centered:
|
|
81
|
+
expected_covariance = np.array([[5, 10], [10, 20]])
|
|
82
|
+
else:
|
|
83
|
+
expected_covariance = np.array([[1, 2], [2, 4]])
|
|
84
|
+
expected_means = np.array([2, 4])
|
|
85
|
+
|
|
86
|
+
assert_allclose(expected_covariance, result.covariance_)
|
|
87
|
+
assert_allclose(expected_means, result.location_)
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
@pytest.mark.skipif(
|
|
91
|
+
not daal_check_version((2025, "P", 700)),
|
|
92
|
+
reason="Functionality introduced in a later version",
|
|
93
|
+
)
|
|
94
|
+
@pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
|
|
95
|
+
@pytest.mark.parametrize("assume_centered", [True, False])
|
|
96
|
+
def test_non_batched_covariance(hyperparameters, dataframe, queue, assume_centered):
|
|
97
|
+
if queue and queue.sycl_device.is_gpu:
|
|
98
|
+
pytest.skip("Test for CPU-only functionality")
|
|
99
|
+
|
|
100
|
+
from sklearnex.preview.covariance import EmpiricalCovariance
|
|
101
|
+
|
|
102
|
+
X = np.random.default_rng(seed=123).random(size=(20, 5))
|
|
103
|
+
|
|
104
|
+
hyperparameters.cpu_max_cols_batched = np.iinfo(np.int32).max
|
|
105
|
+
res_batched = EmpiricalCovariance(assume_centered=assume_centered).fit(X).covariance_
|
|
106
|
+
|
|
107
|
+
hyperparameters.cpu_max_cols_batched = 1
|
|
108
|
+
res_non_batched = (
|
|
109
|
+
EmpiricalCovariance(assume_centered=assume_centered).fit(X).covariance_
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
np.testing.assert_allclose(res_non_batched, res_batched)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# ===============================================================================
|
|
2
|
+
# Copyright 2024 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
|
+
from .incremental_pca import IncrementalPCA
|
|
18
|
+
|
|
19
|
+
__all__ = ["IncrementalPCA"]
|