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,440 @@
|
|
|
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
|
+
import numbers
|
|
18
|
+
import warnings
|
|
19
|
+
from functools import partial
|
|
20
|
+
|
|
21
|
+
import numpy as np
|
|
22
|
+
from scipy import linalg
|
|
23
|
+
from sklearn.base import BaseEstimator, clone
|
|
24
|
+
from sklearn.covariance import EmpiricalCovariance as _sklearn_EmpiricalCovariance
|
|
25
|
+
from sklearn.utils import gen_batches
|
|
26
|
+
from sklearn.utils.validation import _num_features, check_is_fitted
|
|
27
|
+
|
|
28
|
+
from daal4py.sklearn._n_jobs_support import control_n_jobs
|
|
29
|
+
from daal4py.sklearn._utils import daal_check_version, sklearn_check_version
|
|
30
|
+
from daal4py.sklearn.metrics import pairwise_distances
|
|
31
|
+
from onedal._device_offload import support_input_format, support_sycl_format
|
|
32
|
+
from onedal.covariance import (
|
|
33
|
+
IncrementalEmpiricalCovariance as onedal_IncrementalEmpiricalCovariance,
|
|
34
|
+
)
|
|
35
|
+
from onedal.utils._array_api import _is_numpy_namespace
|
|
36
|
+
|
|
37
|
+
from .._config import config_context, get_config
|
|
38
|
+
from .._device_offload import dispatch, wrap_output_data
|
|
39
|
+
from .._utils import PatchingConditionsChain, _add_inc_serialization_note
|
|
40
|
+
from ..base import oneDALEstimator
|
|
41
|
+
from ..utils._array_api import _pinvh, enable_array_api, get_namespace, log_likelihood
|
|
42
|
+
from ..utils.validation import validate_data
|
|
43
|
+
|
|
44
|
+
if sklearn_check_version("1.2"):
|
|
45
|
+
from sklearn.utils._param_validation import Interval
|
|
46
|
+
|
|
47
|
+
# This is a temporary workaround for issues with sklearnex._device_offload._get_host_inputs
|
|
48
|
+
# passing kwargs with sycl queues with other host data will cause failures
|
|
49
|
+
_mahalanobis = support_input_format(partial(pairwise_distances, metric="mahalanobis"))
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
@enable_array_api
|
|
53
|
+
@control_n_jobs(decorated_methods=["partial_fit", "fit", "_onedal_finalize_fit"])
|
|
54
|
+
class IncrementalEmpiricalCovariance(oneDALEstimator, BaseEstimator):
|
|
55
|
+
"""
|
|
56
|
+
Incremental maximum likelihood covariance estimator.
|
|
57
|
+
|
|
58
|
+
Estimator that allows for the estimation when the data are split into
|
|
59
|
+
batches. The user can use the ``partial_fit`` method to provide a
|
|
60
|
+
single batch of data or use the ``fit`` method to provide the entire
|
|
61
|
+
dataset.
|
|
62
|
+
|
|
63
|
+
Parameters
|
|
64
|
+
----------
|
|
65
|
+
store_precision : bool, default=False
|
|
66
|
+
Specifies if the estimated precision is stored.
|
|
67
|
+
|
|
68
|
+
assume_centered : bool, default=False
|
|
69
|
+
If True, data are not centered before computation.
|
|
70
|
+
Useful when working with data whose mean is almost, but not exactly
|
|
71
|
+
zero.
|
|
72
|
+
If False (default), data are centered before computation.
|
|
73
|
+
|
|
74
|
+
batch_size : int, default=None
|
|
75
|
+
The number of samples to use for each batch. Only used when calling
|
|
76
|
+
``fit``. If ``batch_size`` is ``None``, then ``batch_size``
|
|
77
|
+
is inferred from the data and set to ``5 * n_features``, to provide
|
|
78
|
+
a balance between approximation accuracy and memory consumption.
|
|
79
|
+
|
|
80
|
+
copy : bool, default=True
|
|
81
|
+
If False, X will be overwritten. ``copy=False`` can be used to
|
|
82
|
+
save memory but is unsafe for general use.
|
|
83
|
+
|
|
84
|
+
Attributes
|
|
85
|
+
----------
|
|
86
|
+
location_ : ndarray of shape (n_features,)
|
|
87
|
+
Estimated location, i.e. the estimated mean.
|
|
88
|
+
|
|
89
|
+
covariance_ : ndarray of shape (n_features, n_features)
|
|
90
|
+
Estimated covariance matrix
|
|
91
|
+
|
|
92
|
+
n_samples_seen_ : int
|
|
93
|
+
The number of samples processed by the estimator. Will be reset on
|
|
94
|
+
new calls to ``fit``, but increments across ``partial_fit`` calls.
|
|
95
|
+
|
|
96
|
+
batch_size_ : int
|
|
97
|
+
Inferred batch size from ``batch_size``.
|
|
98
|
+
|
|
99
|
+
n_features_in_ : int
|
|
100
|
+
Number of features seen during ``fit`` or ``partial_fit``.
|
|
101
|
+
|
|
102
|
+
Notes
|
|
103
|
+
-----
|
|
104
|
+
Sparse data formats are not supported. Input dtype must be ``float32`` or ``float64``.
|
|
105
|
+
|
|
106
|
+
%incremental_serialization_note%
|
|
107
|
+
|
|
108
|
+
Examples
|
|
109
|
+
--------
|
|
110
|
+
>>> import numpy as np
|
|
111
|
+
>>> from sklearnex.covariance import IncrementalEmpiricalCovariance
|
|
112
|
+
>>> inccov = IncrementalEmpiricalCovariance(batch_size=1)
|
|
113
|
+
>>> X = np.array([[1, 2], [3, 4]])
|
|
114
|
+
>>> inccov.partial_fit(X[:1])
|
|
115
|
+
>>> inccov.partial_fit(X[1:])
|
|
116
|
+
>>> inccov.covariance_
|
|
117
|
+
np.array([[1., 1.],[1., 1.]])
|
|
118
|
+
>>> inccov.location_
|
|
119
|
+
np.array([2., 3.])
|
|
120
|
+
>>> inccov.fit(X)
|
|
121
|
+
>>> inccov.covariance_
|
|
122
|
+
np.array([[1., 1.],[1., 1.]])
|
|
123
|
+
>>> inccov.location_
|
|
124
|
+
np.array([2., 3.])
|
|
125
|
+
"""
|
|
126
|
+
|
|
127
|
+
__doc__ = _add_inc_serialization_note(__doc__)
|
|
128
|
+
|
|
129
|
+
_onedal_incremental_covariance = staticmethod(onedal_IncrementalEmpiricalCovariance)
|
|
130
|
+
|
|
131
|
+
if sklearn_check_version("1.2"):
|
|
132
|
+
_parameter_constraints: dict = {
|
|
133
|
+
"store_precision": ["boolean"],
|
|
134
|
+
"assume_centered": ["boolean"],
|
|
135
|
+
"batch_size": [Interval(numbers.Integral, 1, None, closed="left"), None],
|
|
136
|
+
"copy": ["boolean"],
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
def __init__(
|
|
140
|
+
self, *, store_precision=False, assume_centered=False, batch_size=None, copy=True
|
|
141
|
+
):
|
|
142
|
+
self.assume_centered = assume_centered
|
|
143
|
+
self.store_precision = store_precision
|
|
144
|
+
self.batch_size = batch_size
|
|
145
|
+
self.copy = copy
|
|
146
|
+
|
|
147
|
+
def _onedal_supported(self, method_name, *data):
|
|
148
|
+
patching_status = PatchingConditionsChain(
|
|
149
|
+
f"sklearn.covariance.{self.__class__.__name__}.{method_name}"
|
|
150
|
+
)
|
|
151
|
+
return patching_status
|
|
152
|
+
|
|
153
|
+
def _onedal_finalize_fit(self):
|
|
154
|
+
assert hasattr(self, "_onedal_estimator")
|
|
155
|
+
self._onedal_estimator.finalize_fit()
|
|
156
|
+
self._need_to_finalize = False
|
|
157
|
+
|
|
158
|
+
if not daal_check_version((2024, "P", 400)) and self.assume_centered:
|
|
159
|
+
xp, _ = get_namespace(self._onedal_estimator.location_)
|
|
160
|
+
location = self._onedal_estimator.location_[None, :]
|
|
161
|
+
self._onedal_estimator.covariance_ += xp.dot(location.T, location)
|
|
162
|
+
self._onedal_estimator.location_ = xp.zeros_like(xp.squeeze(location))
|
|
163
|
+
if self.store_precision:
|
|
164
|
+
self.precision_ = _pinvh(
|
|
165
|
+
self._onedal_estimator.covariance_, check_finite=False
|
|
166
|
+
)
|
|
167
|
+
else:
|
|
168
|
+
self.precision_ = None
|
|
169
|
+
|
|
170
|
+
@property
|
|
171
|
+
def covariance_(self):
|
|
172
|
+
if hasattr(self, "_onedal_estimator"):
|
|
173
|
+
if self._need_to_finalize:
|
|
174
|
+
self._onedal_finalize_fit()
|
|
175
|
+
return self._onedal_estimator.covariance_
|
|
176
|
+
else:
|
|
177
|
+
raise AttributeError(
|
|
178
|
+
f"'{self.__class__.__name__}' object has no attribute 'covariance_'"
|
|
179
|
+
)
|
|
180
|
+
|
|
181
|
+
@property
|
|
182
|
+
def location_(self):
|
|
183
|
+
if hasattr(self, "_onedal_estimator"):
|
|
184
|
+
if self._need_to_finalize:
|
|
185
|
+
self._onedal_finalize_fit()
|
|
186
|
+
return self._onedal_estimator.location_
|
|
187
|
+
else:
|
|
188
|
+
raise AttributeError(
|
|
189
|
+
f"'{self.__class__.__name__}' object has no attribute 'location_'"
|
|
190
|
+
)
|
|
191
|
+
|
|
192
|
+
def _onedal_partial_fit(self, X, queue=None, check_input=True):
|
|
193
|
+
first_pass = not hasattr(self, "n_samples_seen_") or self.n_samples_seen_ == 0
|
|
194
|
+
|
|
195
|
+
if check_input and not get_config()["use_raw_input"]:
|
|
196
|
+
xp, _ = get_namespace(X)
|
|
197
|
+
X = validate_data(
|
|
198
|
+
self,
|
|
199
|
+
X,
|
|
200
|
+
dtype=[xp.float64, xp.float32],
|
|
201
|
+
reset=first_pass,
|
|
202
|
+
copy=self.copy,
|
|
203
|
+
)
|
|
204
|
+
|
|
205
|
+
onedal_params = {
|
|
206
|
+
"method": "dense",
|
|
207
|
+
"bias": True,
|
|
208
|
+
"assume_centered": self.assume_centered,
|
|
209
|
+
}
|
|
210
|
+
if not hasattr(self, "_onedal_estimator"):
|
|
211
|
+
self._onedal_estimator = self._onedal_incremental_covariance(**onedal_params)
|
|
212
|
+
try:
|
|
213
|
+
if first_pass:
|
|
214
|
+
self.n_samples_seen_ = X.shape[0]
|
|
215
|
+
self.n_features_in_ = X.shape[1]
|
|
216
|
+
else:
|
|
217
|
+
self.n_samples_seen_ += X.shape[0]
|
|
218
|
+
|
|
219
|
+
self._onedal_estimator.partial_fit(X, queue=queue)
|
|
220
|
+
finally:
|
|
221
|
+
self._need_to_finalize = True
|
|
222
|
+
|
|
223
|
+
return self
|
|
224
|
+
|
|
225
|
+
def get_precision(self):
|
|
226
|
+
if self.store_precision:
|
|
227
|
+
precision = self.precision_
|
|
228
|
+
else:
|
|
229
|
+
precision = _pinvh(self.covariance_, check_finite=False)
|
|
230
|
+
return precision
|
|
231
|
+
|
|
232
|
+
def partial_fit(self, X, y=None, check_input=True):
|
|
233
|
+
"""
|
|
234
|
+
Incremental fit with X. All of X is processed as a single batch.
|
|
235
|
+
|
|
236
|
+
Parameters
|
|
237
|
+
----------
|
|
238
|
+
X : array-like of shape (n_samples, n_features)
|
|
239
|
+
Training data, where `n_samples` is the number of samples and
|
|
240
|
+
`n_features` is the number of features.
|
|
241
|
+
|
|
242
|
+
y : Ignored
|
|
243
|
+
Not used, present for API consistency by convention.
|
|
244
|
+
|
|
245
|
+
check_input : bool, default=True
|
|
246
|
+
Run check_array on X.
|
|
247
|
+
|
|
248
|
+
Returns
|
|
249
|
+
-------
|
|
250
|
+
self : IncrementalEmpiricalCovariance
|
|
251
|
+
Returns the instance itself.
|
|
252
|
+
"""
|
|
253
|
+
if sklearn_check_version("1.2") and check_input:
|
|
254
|
+
self._validate_params()
|
|
255
|
+
return dispatch(
|
|
256
|
+
self,
|
|
257
|
+
"partial_fit",
|
|
258
|
+
{
|
|
259
|
+
"onedal": self.__class__._onedal_partial_fit,
|
|
260
|
+
"sklearn": None,
|
|
261
|
+
},
|
|
262
|
+
X,
|
|
263
|
+
check_input=check_input,
|
|
264
|
+
)
|
|
265
|
+
|
|
266
|
+
def fit(self, X, y=None):
|
|
267
|
+
"""
|
|
268
|
+
Fit the model with X, using minibatches of size ``batch_size``.
|
|
269
|
+
|
|
270
|
+
Parameters
|
|
271
|
+
----------
|
|
272
|
+
X : array-like of shape (n_samples, n_features)
|
|
273
|
+
Training data, where `n_samples` is the number of samples and
|
|
274
|
+
`n_features` is the number of features.
|
|
275
|
+
|
|
276
|
+
y : Ignored
|
|
277
|
+
Not used, present for API consistency by convention.
|
|
278
|
+
|
|
279
|
+
Returns
|
|
280
|
+
-------
|
|
281
|
+
self : IncrementalEmpiricalCovariance
|
|
282
|
+
Returns the instance itself.
|
|
283
|
+
"""
|
|
284
|
+
if sklearn_check_version("1.2"):
|
|
285
|
+
self._validate_params()
|
|
286
|
+
return dispatch(
|
|
287
|
+
self,
|
|
288
|
+
"fit",
|
|
289
|
+
{
|
|
290
|
+
"onedal": self.__class__._onedal_fit,
|
|
291
|
+
"sklearn": None,
|
|
292
|
+
},
|
|
293
|
+
X,
|
|
294
|
+
)
|
|
295
|
+
|
|
296
|
+
def _onedal_fit(self, X, queue=None):
|
|
297
|
+
self.n_samples_seen_ = 0
|
|
298
|
+
if hasattr(self, "_onedal_estimator"):
|
|
299
|
+
self._onedal_estimator._reset()
|
|
300
|
+
|
|
301
|
+
if not get_config()["use_raw_input"]:
|
|
302
|
+
xp, _ = get_namespace(X)
|
|
303
|
+
X = validate_data(self, X, dtype=[xp.float64, xp.float32], copy=self.copy)
|
|
304
|
+
|
|
305
|
+
self.batch_size_ = self.batch_size if self.batch_size else 5 * self.n_features_in_
|
|
306
|
+
|
|
307
|
+
if X.shape[0] == 1:
|
|
308
|
+
warnings.warn(
|
|
309
|
+
"Only one sample available. You may want to reshape your data array"
|
|
310
|
+
)
|
|
311
|
+
|
|
312
|
+
for batch in gen_batches(X.shape[0], self.batch_size_):
|
|
313
|
+
X_batch = X[batch, ...]
|
|
314
|
+
self._onedal_partial_fit(X_batch, queue=queue, check_input=False)
|
|
315
|
+
|
|
316
|
+
self._onedal_finalize_fit()
|
|
317
|
+
|
|
318
|
+
return self
|
|
319
|
+
|
|
320
|
+
@wrap_output_data
|
|
321
|
+
@support_sycl_format
|
|
322
|
+
def score(self, X_test, y=None):
|
|
323
|
+
|
|
324
|
+
check_is_fitted(self)
|
|
325
|
+
# Only covariance evaluated for get_namespace due to dpnp/dpctl
|
|
326
|
+
# support without array_api_dispatch
|
|
327
|
+
xp, _ = get_namespace(X_test, self.covariance_)
|
|
328
|
+
|
|
329
|
+
X = validate_data(
|
|
330
|
+
self,
|
|
331
|
+
X_test,
|
|
332
|
+
dtype=[xp.float64, xp.float32],
|
|
333
|
+
reset=False,
|
|
334
|
+
)
|
|
335
|
+
|
|
336
|
+
location = self.location_
|
|
337
|
+
precision = self.get_precision()
|
|
338
|
+
|
|
339
|
+
est = clone(self)
|
|
340
|
+
est.set_params(assume_centered=True)
|
|
341
|
+
|
|
342
|
+
# test_cov is a numpy array, but calculated on device
|
|
343
|
+
test_cov = est.fit(X - self.location_).covariance_
|
|
344
|
+
if not _is_numpy_namespace(xp):
|
|
345
|
+
test_cov = xp.asarray(test_cov, device=X_test.device)
|
|
346
|
+
res = log_likelihood(test_cov, self.get_precision())
|
|
347
|
+
|
|
348
|
+
return res
|
|
349
|
+
|
|
350
|
+
@wrap_output_data
|
|
351
|
+
@support_sycl_format
|
|
352
|
+
def error_norm(self, comp_cov, norm="frobenius", scaling=True, squared=True):
|
|
353
|
+
# equivalent to the sklearn implementation but written for array API
|
|
354
|
+
# in the case of numpy-like inputs it will use sklearn's version instead.
|
|
355
|
+
# This can be deprecated if/when sklearn makes the equivalent array API enabled.
|
|
356
|
+
# This includes a validate_data call and an unusual call to get_namespace in
|
|
357
|
+
# order to also support dpnp/dpctl without array_api_dispatch.
|
|
358
|
+
check_is_fitted(self)
|
|
359
|
+
# Only covariance evaluated for get_namespace due to dpnp/dpctl
|
|
360
|
+
# support without array_api_dispatch
|
|
361
|
+
xp, _ = get_namespace(self.covariance_)
|
|
362
|
+
c_cov = validate_data(
|
|
363
|
+
self,
|
|
364
|
+
comp_cov,
|
|
365
|
+
dtype=[xp.float64, xp.float32],
|
|
366
|
+
reset=False,
|
|
367
|
+
)
|
|
368
|
+
|
|
369
|
+
if _is_numpy_namespace(xp):
|
|
370
|
+
# must be done this way is it does not inherit from sklearn
|
|
371
|
+
return _sklearn_EmpiricalCovariance.error_norm(
|
|
372
|
+
self, c_cov, norm=norm, scaling=scaling, squared=squared
|
|
373
|
+
)
|
|
374
|
+
|
|
375
|
+
# compute the error
|
|
376
|
+
error = c_cov - self.covariance_
|
|
377
|
+
# compute the error norm
|
|
378
|
+
if norm == "frobenius":
|
|
379
|
+
# variance from sklearn version to leverage BLAS GEMM
|
|
380
|
+
# squared_norm = xp.sum(error**2)
|
|
381
|
+
squared_norm = xp.matmul(xp.reshape(error, (-1)), xp.reshape(error, (-1)))
|
|
382
|
+
elif norm == "spectral":
|
|
383
|
+
squared_norm = xp.max(xp.linalg.svdvals(xp.matmul(error.T, error)))
|
|
384
|
+
else:
|
|
385
|
+
raise NotImplementedError("Only spectral and frobenius norms are implemented")
|
|
386
|
+
# optionally scale the error norm
|
|
387
|
+
if scaling:
|
|
388
|
+
squared_norm = squared_norm / error.shape[0]
|
|
389
|
+
# finally get either the squared norm or the norm
|
|
390
|
+
if squared:
|
|
391
|
+
result = squared_norm
|
|
392
|
+
else:
|
|
393
|
+
result = xp.sqrt(squared_norm)
|
|
394
|
+
|
|
395
|
+
return result
|
|
396
|
+
|
|
397
|
+
# expose sklearnex pairwise_distances if mahalanobis distance eventually supported
|
|
398
|
+
@support_sycl_format
|
|
399
|
+
def mahalanobis(self, X):
|
|
400
|
+
# This must be done as ```support_input_format``` is insufficient for array API
|
|
401
|
+
# support when attributes are non-numpy.
|
|
402
|
+
check_is_fitted(self)
|
|
403
|
+
precision = self.get_precision()
|
|
404
|
+
loc = self.location_[None, :]
|
|
405
|
+
xp, _ = get_namespace(X, precision, loc)
|
|
406
|
+
# do not check dtype, done in pairwise_distances
|
|
407
|
+
X_in = validate_data(self, X, reset=False)
|
|
408
|
+
|
|
409
|
+
if not _is_numpy_namespace(xp) and isinstance(X_in, np.ndarray):
|
|
410
|
+
# corrects issues with respect to dpnp/dpctl support without array_api_dispatch
|
|
411
|
+
X_in = X
|
|
412
|
+
loc = xp.asarray(loc, device=X.device)
|
|
413
|
+
precision = xp.asarray(precision, device=X.device)
|
|
414
|
+
|
|
415
|
+
with config_context(assume_finite=True):
|
|
416
|
+
try:
|
|
417
|
+
dist = _mahalanobis(X_in, loc, VI=precision)
|
|
418
|
+
|
|
419
|
+
except ValueError as e:
|
|
420
|
+
# Throw the expected sklearn error in an n_feature length violation
|
|
421
|
+
if "Incompatible dimension for X and Y matrices: X.shape[1] ==" in str(e):
|
|
422
|
+
raise ValueError(
|
|
423
|
+
f"X has {_num_features(X)} features, but {self.__class__.__name__} "
|
|
424
|
+
f"is expecting {self.n_features_in_} features as input."
|
|
425
|
+
) from None
|
|
426
|
+
else:
|
|
427
|
+
raise e
|
|
428
|
+
|
|
429
|
+
if not _is_numpy_namespace(xp):
|
|
430
|
+
dist = xp.asarray(dist, device=X.device)
|
|
431
|
+
|
|
432
|
+
return (xp.reshape(dist, (-1,))) ** 2
|
|
433
|
+
|
|
434
|
+
_onedal_cpu_supported = _onedal_supported
|
|
435
|
+
_onedal_gpu_supported = _onedal_supported
|
|
436
|
+
|
|
437
|
+
mahalanobis.__doc__ = _sklearn_EmpiricalCovariance.mahalanobis.__doc__
|
|
438
|
+
error_norm.__doc__ = _sklearn_EmpiricalCovariance.error_norm.__doc__
|
|
439
|
+
score.__doc__ = _sklearn_EmpiricalCovariance.score.__doc__
|
|
440
|
+
get_precision.__doc__ = _sklearn_EmpiricalCovariance.get_precision.__doc__
|