scikit-learn-intelex 2025.8.0__py310-none-win_amd64.whl → 2025.9.0__py310-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.
Potentially problematic release.
This version of scikit-learn-intelex might be problematic. Click here for more details.
- scikit_learn_intelex-2025.9.0.data/data/Lib/site-packages/daal4py/_daal4py.cp310-win_amd64.pyd +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/mb/__init__.py +19 -8
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/mb/logistic_regression_builders.py +17 -23
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/mpi_transceiver.cp310-win_amd64.pyd +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +57 -128
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/_models_info.py +5 -2
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/validation.py +2 -2
- scikit_learn_intelex-2025.9.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp310-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.9.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp310-win_amd64.pyd +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/covariance/covariance.py +1 -8
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/covariance/incremental_covariance.py +13 -18
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/covariance/tests/test_covariance.py +3 -3
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +3 -1
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/datatypes/_dlpack.py +8 -5
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/datatypes/tests/test_data.py +69 -1
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/decomposition/incremental_pca.py +39 -40
- scikit_learn_intelex-2025.9.0.data/data/Lib/site-packages/onedal/decomposition/pca.py +124 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/decomposition/tests/test_incremental_pca.py +11 -5
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/linear_model/logistic_regression.py +20 -1
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/neighbors/neighbors.py +5 -4
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/_config.py +0 -5
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +139 -100
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +30 -0
- scikit_learn_intelex-2025.9.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +558 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +56 -2
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +115 -39
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +110 -122
- scikit_learn_intelex-2025.9.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +260 -0
- scikit_learn_intelex-2025.9.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +406 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +55 -1
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +7 -4
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_covariance_spmd.py +7 -4
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +7 -2
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +6 -4
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +2 -2
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_pca_spmd.py +19 -6
- scikit_learn_intelex-2025.9.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +23 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +136 -13
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/svm/_common.py +71 -8
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/tests/test_common.py +0 -1
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +1 -1
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/tests/test_patching.py +7 -3
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/utils/_array_api.py +65 -1
- {scikit_learn_intelex-2025.8.0.dist-info → scikit_learn_intelex-2025.9.0.dist-info}/METADATA +83 -92
- scikit_learn_intelex-2025.9.0.dist-info/RECORD +259 -0
- scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/daal4py/_daal4py.cp310-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp310-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp310-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/onedal/decomposition/pca.py +0 -200
- scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +0 -428
- scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +0 -128
- scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +0 -227
- scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +0 -19
- scikit_learn_intelex-2025.8.0.dist-info/RECORD +0 -259
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/__main__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/mb/gbt_convertors.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/mb/tree_based_builders.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/_n_jobs_support.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/_utils.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/dbscan.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/k_means.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/tests/test_dbscan.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/decomposition/_pca.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/AdaBoostClassifier.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/GBTDAAL.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/_forest.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/tests/test_decision_forest.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/_coordinate_descent.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/_linear.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/_ridge.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/coordinate_descent.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/linear.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_loss.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/ridge.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_linear.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_ridge.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/manifold/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/manifold/_t_sne.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/metrics/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/metrics/_pairwise.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/metrics/_ranking.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/model_selection/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/model_selection/_split.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/model_selection/tests/test_split.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/dispatcher.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_monkeypatch.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_patching.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/utils/_launch_algorithms.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_base.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_classification.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_regression.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_unsupervised.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/tests/test_kneighbors.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/svm/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/svm/svm.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/base.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/tests/test_utils.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/_config.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/_device_offload.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/basic_statistics/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/basic_statistics/basic_statistics.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/basic_statistics/incremental_basic_statistics.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/basic_statistics/tests/test_basic_statistics.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/basic_statistics/tests/test_incremental_basic_statistics.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/basic_statistics/tests/utils.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/cluster/dbscan.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/cluster/kmeans.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/cluster/kmeans_init.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/cluster/tests/test_dbscan.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/cluster/tests/test_kmeans.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/cluster/tests/test_kmeans_init.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/common/_backend.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/common/_estimator_checks.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/common/_mixin.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/common/hyperparameters.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/common/tests/test_sycl.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/covariance/tests/test_incremental_covariance.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/datatypes/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/datatypes/_sycl_usm.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/datatypes/tests/common.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/ensemble/forest.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/ensemble/tests/test_random_forest.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/linear_model/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/linear_model/incremental_linear_model.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/linear_model/linear_model.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_linear_regression.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_ridge_regression.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_linear_regression.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_logistic_regression.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_ridge.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/neighbors/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/neighbors/tests/test_knn_classification.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/primitives/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/primitives/get_tree.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/primitives/kernel_functions.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/primitives/tests/test_kernel_functions.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/svm/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/svm/svm.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/svm/tests/test_csr_svm.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/svm/tests/test_nusvc.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/svm/tests/test_nusvr.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/svm/tests/test_svc.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/svm/tests/test_svr.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/tests/test_common.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/tests/utils/_dataframes_support.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/tests/utils/_device_selection.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/utils/_array_api.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/utils/_sycl_queue_manager.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/utils/_third_party.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/utils/tests/test_validation.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/onedal/utils/validation.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/__main__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/_device_offload.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/_utils.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/base.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/cluster/k_means.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/conftest.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/linear_model/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/linear_model/incremental_ridge.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/linear_model/linear.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/linear_model/ridge.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_ridge.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_ridge.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/manifold/t_sne.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/neighbors/_lof.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/preview/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/incremental_covariance.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/incremental_pca.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/tests/test_forest_spmd.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/incremental_linear_model.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/tests/test_config.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/tests/test_hyperparameters.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/tests/test_parallel.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/tests/utils/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/tests/utils/base.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/tests/utils/spmd.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/utils/__init__.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/utils/tests/test_validation.py +0 -0
- {scikit_learn_intelex-2025.8.0.data → scikit_learn_intelex-2025.9.0.data}/data/Lib/site-packages/sklearnex/utils/validation.py +0 -0
- {scikit_learn_intelex-2025.8.0.dist-info → scikit_learn_intelex-2025.9.0.dist-info}/LICENSE.txt +0 -0
- {scikit_learn_intelex-2025.8.0.dist-info → scikit_learn_intelex-2025.9.0.dist-info}/WHEEL +0 -0
- {scikit_learn_intelex-2025.8.0.dist-info → scikit_learn_intelex-2025.9.0.dist-info}/top_level.txt +0 -0
scikit_learn_intelex-2025.9.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py
ADDED
|
@@ -0,0 +1,260 @@
|
|
|
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 sklearnex import config_context
|
|
33
|
+
|
|
34
|
+
from ..._config import get_config
|
|
35
|
+
from ..._device_offload import dispatch, wrap_output_data
|
|
36
|
+
from ..._utils import PatchingConditionsChain, register_hyperparameters
|
|
37
|
+
from ...base import oneDALEstimator
|
|
38
|
+
from ...utils._array_api import _pinvh, enable_array_api, get_namespace, log_likelihood
|
|
39
|
+
from ...utils.validation import assert_all_finite, validate_data
|
|
40
|
+
|
|
41
|
+
# This is a temporary workaround for issues with sklearnex._device_offload._get_host_inputs
|
|
42
|
+
# passing kwargs with sycl queues with other host data will cause failures
|
|
43
|
+
_mahalanobis = support_input_format(partial(pairwise_distances, metric="mahalanobis"))
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
@enable_array_api
|
|
47
|
+
@register_hyperparameters({"fit": ("covariance", "compute")})
|
|
48
|
+
@control_n_jobs(decorated_methods=["fit", "mahalanobis"])
|
|
49
|
+
class EmpiricalCovariance(oneDALEstimator, _sklearn_EmpiricalCovariance):
|
|
50
|
+
__doc__ = _sklearn_EmpiricalCovariance.__doc__
|
|
51
|
+
|
|
52
|
+
if sklearn_check_version("1.2"):
|
|
53
|
+
_parameter_constraints: dict = {
|
|
54
|
+
**_sklearn_EmpiricalCovariance._parameter_constraints,
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
def _set_covariance(self, covariance):
|
|
58
|
+
if not get_config()["use_raw_input"]:
|
|
59
|
+
if sklearn_check_version("1.6"):
|
|
60
|
+
covariance = check_array(covariance, ensure_all_finite=False)
|
|
61
|
+
else:
|
|
62
|
+
covariance = check_array(covariance, force_all_finite=False)
|
|
63
|
+
assert_all_finite(covariance)
|
|
64
|
+
# set covariance
|
|
65
|
+
self.covariance_ = covariance
|
|
66
|
+
# set precision
|
|
67
|
+
if self.store_precision:
|
|
68
|
+
self.precision_ = _pinvh(covariance, check_finite=False)
|
|
69
|
+
else:
|
|
70
|
+
self.precision_ = None
|
|
71
|
+
|
|
72
|
+
def _save_attributes(self):
|
|
73
|
+
assert hasattr(self, "_onedal_estimator")
|
|
74
|
+
if not daal_check_version((2024, "P", 400)) and self.assume_centered:
|
|
75
|
+
xp, _ = get_namespace(self._onedal_estimator.location_)
|
|
76
|
+
location = self._onedal_estimator.location_[None, :]
|
|
77
|
+
self._onedal_estimator.covariance_ += xp.dot(location.T, location)
|
|
78
|
+
self._onedal_estimator.location_ = xp.zeros_like(
|
|
79
|
+
self._onedal_estimator.location_
|
|
80
|
+
)
|
|
81
|
+
self._set_covariance(self._onedal_estimator.covariance_)
|
|
82
|
+
self.location_ = self._onedal_estimator.location_
|
|
83
|
+
|
|
84
|
+
_onedal_covariance = staticmethod(onedal_EmpiricalCovariance)
|
|
85
|
+
|
|
86
|
+
def _onedal_fit(self, X, queue=None):
|
|
87
|
+
if not get_config()["use_raw_input"]:
|
|
88
|
+
xp, _ = get_namespace(X)
|
|
89
|
+
X = validate_data(self, X, dtype=[xp.float64, xp.float32])
|
|
90
|
+
|
|
91
|
+
if X.shape[0] == 1:
|
|
92
|
+
warnings.warn(
|
|
93
|
+
"Only one sample available. You may want to reshape your data array"
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
self._onedal_estimator = self._onedal_covariance(
|
|
97
|
+
method="dense", bias=True, assume_centered=self.assume_centered
|
|
98
|
+
)
|
|
99
|
+
self._onedal_estimator.fit(X, queue=queue)
|
|
100
|
+
self._save_attributes()
|
|
101
|
+
|
|
102
|
+
def _onedal_supported(self, method_name, *data):
|
|
103
|
+
class_name = self.__class__.__name__
|
|
104
|
+
patching_status = PatchingConditionsChain(
|
|
105
|
+
f"sklearn.covariance.{class_name}.{method_name}"
|
|
106
|
+
)
|
|
107
|
+
if method_name in ["fit", "mahalanobis"]:
|
|
108
|
+
(X,) = data
|
|
109
|
+
patching_status.and_conditions(
|
|
110
|
+
[
|
|
111
|
+
(not sp.issparse(X), "X is sparse. Sparse input is not supported."),
|
|
112
|
+
]
|
|
113
|
+
)
|
|
114
|
+
return patching_status
|
|
115
|
+
raise RuntimeError(f"Unknown method {method_name} in {self.__class__.__name__}")
|
|
116
|
+
|
|
117
|
+
_onedal_cpu_supported = _onedal_supported
|
|
118
|
+
_onedal_gpu_supported = _onedal_supported
|
|
119
|
+
|
|
120
|
+
def get_precision(self):
|
|
121
|
+
# use array API-enabled version
|
|
122
|
+
if self.store_precision:
|
|
123
|
+
precision = self.precision_
|
|
124
|
+
else:
|
|
125
|
+
precision = _pinvh(self.covariance_, check_finite=False)
|
|
126
|
+
return precision
|
|
127
|
+
|
|
128
|
+
def fit(self, X, y=None):
|
|
129
|
+
if sklearn_check_version("1.2"):
|
|
130
|
+
self._validate_params()
|
|
131
|
+
dispatch(
|
|
132
|
+
self,
|
|
133
|
+
"fit",
|
|
134
|
+
{
|
|
135
|
+
"onedal": self.__class__._onedal_fit,
|
|
136
|
+
"sklearn": _sklearn_EmpiricalCovariance.fit,
|
|
137
|
+
},
|
|
138
|
+
X,
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
return self
|
|
142
|
+
|
|
143
|
+
@wrap_output_data
|
|
144
|
+
@support_sycl_format
|
|
145
|
+
def score(self, X_test, y=None):
|
|
146
|
+
|
|
147
|
+
check_is_fitted(self)
|
|
148
|
+
# Only covariance evaluated for get_namespace due to dpnp/dpctl
|
|
149
|
+
# support without array_api_dispatch
|
|
150
|
+
xp, _ = get_namespace(X_test, self.covariance_)
|
|
151
|
+
|
|
152
|
+
X = validate_data(
|
|
153
|
+
self,
|
|
154
|
+
X_test,
|
|
155
|
+
dtype=[xp.float64, xp.float32],
|
|
156
|
+
reset=False,
|
|
157
|
+
)
|
|
158
|
+
|
|
159
|
+
location = self.location_
|
|
160
|
+
precision = self.get_precision()
|
|
161
|
+
|
|
162
|
+
est = clone(self)
|
|
163
|
+
est.set_params(assume_centered=True)
|
|
164
|
+
|
|
165
|
+
# test_cov is a numpy array, but calculated on device
|
|
166
|
+
test_cov = est.fit(X - self.location_).covariance_
|
|
167
|
+
if not _is_numpy_namespace(xp):
|
|
168
|
+
test_cov = xp.asarray(test_cov, device=X.device)
|
|
169
|
+
res = log_likelihood(test_cov, self.get_precision())
|
|
170
|
+
|
|
171
|
+
return res
|
|
172
|
+
|
|
173
|
+
@wrap_output_data
|
|
174
|
+
@support_sycl_format
|
|
175
|
+
def error_norm(self, comp_cov, norm="frobenius", scaling=True, squared=True):
|
|
176
|
+
# equivalent to the sklearn implementation but written for array API
|
|
177
|
+
# in the case of numpy-like inputs it will use sklearn's version instead.
|
|
178
|
+
# This can be deprecated if/when sklearn makes the equivalent array API enabled.
|
|
179
|
+
# This includes a validate_data call and an unusual call to get_namespace in
|
|
180
|
+
# order to also support dpnp/dpctl without array_api_dispatch.
|
|
181
|
+
check_is_fitted(self)
|
|
182
|
+
# Only covariance evaluated for get_namespace due to dpnp/dpctl
|
|
183
|
+
# support without array_api_dispatch
|
|
184
|
+
xp, _ = get_namespace(comp_cov, self.covariance_)
|
|
185
|
+
c_cov = validate_data(
|
|
186
|
+
self,
|
|
187
|
+
comp_cov,
|
|
188
|
+
dtype=[xp.float64, xp.float32],
|
|
189
|
+
reset=False,
|
|
190
|
+
)
|
|
191
|
+
|
|
192
|
+
if _is_numpy_namespace(xp):
|
|
193
|
+
# must be done this way is it does not inherit from sklearn
|
|
194
|
+
return _sklearn_EmpiricalCovariance.error_norm(
|
|
195
|
+
self, c_cov, norm=norm, scaling=scaling, squared=squared
|
|
196
|
+
)
|
|
197
|
+
|
|
198
|
+
# compute the error
|
|
199
|
+
error = c_cov - self.covariance_
|
|
200
|
+
# compute the error norm
|
|
201
|
+
if norm == "frobenius":
|
|
202
|
+
squared_norm = xp.matmul(xp.reshape(error, (-1)), xp.reshape(error, (-1)))
|
|
203
|
+
elif norm == "spectral":
|
|
204
|
+
squared_norm = xp.max(xp.linalg.svdvals(xp.matmul(error.T, error)))
|
|
205
|
+
else:
|
|
206
|
+
raise NotImplementedError("Only spectral and frobenius norms are implemented")
|
|
207
|
+
# optionally scale the error norm
|
|
208
|
+
if scaling:
|
|
209
|
+
squared_norm = squared_norm / error.shape[0]
|
|
210
|
+
# finally get either the squared norm or the norm
|
|
211
|
+
if squared:
|
|
212
|
+
result = squared_norm
|
|
213
|
+
else:
|
|
214
|
+
result = xp.sqrt(squared_norm)
|
|
215
|
+
|
|
216
|
+
return result
|
|
217
|
+
|
|
218
|
+
# expose sklearnex pairwise_distances if mahalanobis distance eventually supported
|
|
219
|
+
@support_sycl_format
|
|
220
|
+
def mahalanobis(self, X):
|
|
221
|
+
# This must be done as ```support_input_format``` is insufficient for array API
|
|
222
|
+
# support when attributes are non-numpy.
|
|
223
|
+
check_is_fitted(self)
|
|
224
|
+
precision = self.get_precision()
|
|
225
|
+
loc = self.location_[None, :]
|
|
226
|
+
xp, _ = get_namespace(X, precision, loc)
|
|
227
|
+
# do not check dtype, done in pairwise_distances
|
|
228
|
+
X_in = validate_data(self, X, reset=False)
|
|
229
|
+
|
|
230
|
+
if not _is_numpy_namespace(xp) and isinstance(X_in, np.ndarray):
|
|
231
|
+
# corrects issues with respect to dpnp/dpctl support without array_api_dispatch
|
|
232
|
+
X_in = X
|
|
233
|
+
loc = xp.asarray(loc, device=X.device)
|
|
234
|
+
precision = xp.asarray(precision, device=X.device)
|
|
235
|
+
|
|
236
|
+
with config_context(assume_finite=True):
|
|
237
|
+
try:
|
|
238
|
+
dist = _mahalanobis(X_in, loc, VI=precision)
|
|
239
|
+
|
|
240
|
+
except ValueError as e:
|
|
241
|
+
# Throw the expected sklearn error in an n_feature length violation
|
|
242
|
+
if "Incompatible dimension for X and Y matrices: X.shape[1] ==" in str(e):
|
|
243
|
+
raise ValueError(
|
|
244
|
+
f"X has {_num_features(X)} features, but {self.__class__.__name__} "
|
|
245
|
+
f"is expecting {self.n_features_in_} features as input."
|
|
246
|
+
) from None
|
|
247
|
+
else:
|
|
248
|
+
raise e
|
|
249
|
+
|
|
250
|
+
if not _is_numpy_namespace(xp):
|
|
251
|
+
dist = xp.asarray(dist, device=X.device)
|
|
252
|
+
|
|
253
|
+
return (xp.reshape(dist, (-1,))) ** 2
|
|
254
|
+
|
|
255
|
+
fit.__doc__ = _sklearn_EmpiricalCovariance.fit.__doc__
|
|
256
|
+
mahalanobis.__doc__ = _sklearn_EmpiricalCovariance.mahalanobis.__doc__
|
|
257
|
+
error_norm.__doc__ = _sklearn_EmpiricalCovariance.error_norm.__doc__
|
|
258
|
+
score.__doc__ = _sklearn_EmpiricalCovariance.score.__doc__
|
|
259
|
+
get_precision.__doc__ = _sklearn_EmpiricalCovariance.get_precision.__doc__
|
|
260
|
+
_set_covariance.__doc__ = _sklearn_EmpiricalCovariance._set_covariance.__doc__
|
|
@@ -0,0 +1,406 @@
|
|
|
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 numpy as np
|
|
18
|
+
import scipy.sparse as sp
|
|
19
|
+
from sklearn.decomposition import IncrementalPCA as _sklearn_IncrementalPCA
|
|
20
|
+
from sklearn.utils import check_array, gen_batches
|
|
21
|
+
from sklearn.utils.validation import check_is_fitted
|
|
22
|
+
|
|
23
|
+
from daal4py.sklearn._n_jobs_support import control_n_jobs
|
|
24
|
+
from daal4py.sklearn._utils import sklearn_check_version
|
|
25
|
+
from onedal.decomposition import IncrementalPCA as onedal_IncrementalPCA
|
|
26
|
+
|
|
27
|
+
from ..._config import get_config
|
|
28
|
+
from ..._device_offload import dispatch, wrap_output_data
|
|
29
|
+
from ..._utils import PatchingConditionsChain, _add_inc_serialization_note
|
|
30
|
+
from ...base import oneDALEstimator
|
|
31
|
+
from ...utils._array_api import enable_array_api, get_namespace
|
|
32
|
+
from ...utils.validation import validate_data
|
|
33
|
+
|
|
34
|
+
if sklearn_check_version("1.2"):
|
|
35
|
+
from sklearn.utils._param_validation import StrOptions
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
@enable_array_api
|
|
39
|
+
@control_n_jobs(
|
|
40
|
+
decorated_methods=["fit", "partial_fit", "transform", "_onedal_finalize_fit"]
|
|
41
|
+
)
|
|
42
|
+
class IncrementalPCA(oneDALEstimator, _sklearn_IncrementalPCA):
|
|
43
|
+
__doc__ = _sklearn_IncrementalPCA.__doc__
|
|
44
|
+
|
|
45
|
+
if sklearn_check_version("1.2"):
|
|
46
|
+
_parameter_constraints: dict = {
|
|
47
|
+
**_sklearn_IncrementalPCA._parameter_constraints,
|
|
48
|
+
"svd_solver": [StrOptions({"auto", "covariance_eigh", "onedal_svd"})],
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
def __init__(
|
|
52
|
+
self,
|
|
53
|
+
n_components=None,
|
|
54
|
+
*,
|
|
55
|
+
whiten=False,
|
|
56
|
+
copy=True,
|
|
57
|
+
batch_size=None,
|
|
58
|
+
svd_solver="auto",
|
|
59
|
+
):
|
|
60
|
+
super().__init__(
|
|
61
|
+
n_components=n_components, whiten=whiten, copy=copy, batch_size=batch_size
|
|
62
|
+
)
|
|
63
|
+
self.svd_solver = svd_solver
|
|
64
|
+
self._need_to_finalize = False
|
|
65
|
+
# Note: use of the onedal_svd solver will cause partial result to grow proportionally
|
|
66
|
+
# to the input data and for that reason is not the default, which is contrary
|
|
67
|
+
# to the scikit-learn implementation.
|
|
68
|
+
|
|
69
|
+
_onedal_incremental_pca = staticmethod(onedal_IncrementalPCA)
|
|
70
|
+
|
|
71
|
+
def _set_n_components(self, n_components, n_samples, n_features, first_pass):
|
|
72
|
+
# extracted from sklearn's ``IncrementalPCA.partial_fit``. This is a
|
|
73
|
+
# maintenance burden that cannot be easily separated from sklearn.
|
|
74
|
+
if n_components is None:
|
|
75
|
+
if self._components_ is None:
|
|
76
|
+
self._n_components_ = min(n_samples, n_features)
|
|
77
|
+
else:
|
|
78
|
+
self._n_components_ = self.components_.shape[0]
|
|
79
|
+
elif not 1 <= n_components <= n_features:
|
|
80
|
+
raise ValueError(
|
|
81
|
+
"n_components=%r invalid for n_features=%d, need "
|
|
82
|
+
"more rows than columns for IncrementalPCA "
|
|
83
|
+
"processing" % (self.n_components, n_features)
|
|
84
|
+
)
|
|
85
|
+
elif n_components > n_samples and (
|
|
86
|
+
not sklearn_check_version("1.6") or first_pass
|
|
87
|
+
):
|
|
88
|
+
raise ValueError(
|
|
89
|
+
"n_components=%r must be less or equal to "
|
|
90
|
+
"the batch number of samples "
|
|
91
|
+
"%d" % (self.n_components, n_samples)
|
|
92
|
+
+ (
|
|
93
|
+
" for the first partial_fit call."
|
|
94
|
+
if sklearn_check_version("1.6")
|
|
95
|
+
else ""
|
|
96
|
+
)
|
|
97
|
+
)
|
|
98
|
+
else:
|
|
99
|
+
self._n_components_ = n_components
|
|
100
|
+
|
|
101
|
+
# the private variables are used to not trigger _onedal_finalize_fit
|
|
102
|
+
if (self._components_ is not None) and (
|
|
103
|
+
self._components_.shape[0] != self._n_components_
|
|
104
|
+
):
|
|
105
|
+
raise ValueError(
|
|
106
|
+
"Number of input features has changed from %i "
|
|
107
|
+
"to %i between calls to partial_fit! Try "
|
|
108
|
+
"setting n_components to a fixed value."
|
|
109
|
+
% (self.components_.shape[0], self.n_components_)
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
def _compute_noise_variance(self, n_sf_min, xp):
|
|
113
|
+
# generally replicates capability seen in sklearn.PCA._fit_full
|
|
114
|
+
explained_variance = self._onedal_estimator.explained_variance_
|
|
115
|
+
if self._n_components_ < n_sf_min:
|
|
116
|
+
if explained_variance.shape[0] == n_sf_min:
|
|
117
|
+
return xp.mean(explained_variance[self._n_components_ :])
|
|
118
|
+
elif explained_variance.shape[0] < n_sf_min:
|
|
119
|
+
# replicates capability seen in sklearn.PCA._fit_truncated
|
|
120
|
+
# this is necessary as oneDAL will fit only to self.n_components
|
|
121
|
+
# which leads to self.explained_variance_ not containing the
|
|
122
|
+
# full information (and therefore can't replicate
|
|
123
|
+
# sklearn.PCA._fit_full)
|
|
124
|
+
resid_var = xp.sum(self._onedal_estimator.var_) - xp.sum(
|
|
125
|
+
explained_variance
|
|
126
|
+
)
|
|
127
|
+
return resid_var / (n_sf_min - self._n_components_)
|
|
128
|
+
else:
|
|
129
|
+
return 0.0
|
|
130
|
+
|
|
131
|
+
def _onedal_transform(self, X, queue=None):
|
|
132
|
+
# does not batch out data like sklearn's ``IncrementalPCA.transform``
|
|
133
|
+
if self._need_to_finalize:
|
|
134
|
+
self._onedal_finalize_fit()
|
|
135
|
+
if not get_config()["use_raw_input"]:
|
|
136
|
+
xp, _ = get_namespace(X)
|
|
137
|
+
X = validate_data(self, X, dtype=[xp.float64, xp.float32], reset=False)
|
|
138
|
+
return self._onedal_estimator.predict(X, queue=queue)
|
|
139
|
+
|
|
140
|
+
def _onedal_fit_transform(self, X, queue=None):
|
|
141
|
+
X = self._onedal_fit(X, queue=queue)
|
|
142
|
+
return self._onedal_estimator.predict(X, queue=queue)
|
|
143
|
+
|
|
144
|
+
def _onedal_partial_fit(self, X, check_input=True, queue=None):
|
|
145
|
+
first_pass = not hasattr(self, "components_")
|
|
146
|
+
if first_pass:
|
|
147
|
+
self._components_ = None
|
|
148
|
+
|
|
149
|
+
if check_input:
|
|
150
|
+
if not get_config()["use_raw_input"]:
|
|
151
|
+
xp, _ = get_namespace(X)
|
|
152
|
+
X = validate_data(
|
|
153
|
+
self, X, dtype=[xp.float64, xp.float32], reset=first_pass
|
|
154
|
+
)
|
|
155
|
+
else:
|
|
156
|
+
self.n_features_in_ = X.shape[1]
|
|
157
|
+
|
|
158
|
+
n_samples, n_features = X.shape
|
|
159
|
+
|
|
160
|
+
self._set_n_components(self.n_components, n_samples, n_features, first_pass)
|
|
161
|
+
|
|
162
|
+
if not hasattr(self, "n_samples_seen_"):
|
|
163
|
+
self.n_samples_seen_ = n_samples
|
|
164
|
+
else:
|
|
165
|
+
self.n_samples_seen_ += n_samples
|
|
166
|
+
|
|
167
|
+
onedal_params = {
|
|
168
|
+
"n_components": self._n_components_,
|
|
169
|
+
"whiten": self.whiten,
|
|
170
|
+
"method": "svd" if self.svd_solver == "onedal_svd" else "cov",
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
if not hasattr(self, "_onedal_estimator"):
|
|
174
|
+
self._onedal_estimator = self._onedal_incremental_pca(**onedal_params)
|
|
175
|
+
self._onedal_estimator.partial_fit(X, queue=queue)
|
|
176
|
+
self._need_to_finalize = True
|
|
177
|
+
|
|
178
|
+
def _onedal_finalize_fit(self):
|
|
179
|
+
assert hasattr(self, "_onedal_estimator")
|
|
180
|
+
self._onedal_estimator.finalize_fit()
|
|
181
|
+
xp, _ = get_namespace(
|
|
182
|
+
self._onedal_estimator.explained_variance_,
|
|
183
|
+
self._onedal_estimator.singular_values_,
|
|
184
|
+
)
|
|
185
|
+
|
|
186
|
+
# set attributes needed for transform
|
|
187
|
+
self._mean_ = self._onedal_estimator.mean_
|
|
188
|
+
self._components_ = self._onedal_estimator.components_
|
|
189
|
+
# oneDAL PCA eigenvalues are not guaranteed to be >=0 and must be clipped.
|
|
190
|
+
# This is likely due to accumulated numerical error in the oneDAL calculation.
|
|
191
|
+
self._explained_variance_ = xp.clip(
|
|
192
|
+
self._onedal_estimator.explained_variance_, 0.0, None
|
|
193
|
+
)
|
|
194
|
+
|
|
195
|
+
# set other attributes
|
|
196
|
+
self.singular_values_ = self._onedal_estimator.singular_values_
|
|
197
|
+
# NOTE: This covers up a numerical accuracy issue in oneDAL online PCA which
|
|
198
|
+
# can yield NaN values for singular values. Replace in place using array API
|
|
199
|
+
self.singular_values_[...] = xp.where(
|
|
200
|
+
xp.isnan(self.singular_values_), 0, self.singular_values_
|
|
201
|
+
)
|
|
202
|
+
self.explained_variance_ratio_ = self._onedal_estimator.explained_variance_ratio_
|
|
203
|
+
self.var_ = self._onedal_estimator.var_
|
|
204
|
+
|
|
205
|
+
# calculate the noise variance
|
|
206
|
+
self.noise_variance_ = self._compute_noise_variance(
|
|
207
|
+
min(self.n_samples_seen_, self.n_features_in_), xp
|
|
208
|
+
)
|
|
209
|
+
|
|
210
|
+
self._need_to_finalize = False
|
|
211
|
+
|
|
212
|
+
def _onedal_fit(self, X, queue=None):
|
|
213
|
+
# Taken from sklearn for conformance purposes
|
|
214
|
+
self.components_ = None
|
|
215
|
+
|
|
216
|
+
if not get_config()["use_raw_input"]:
|
|
217
|
+
if sklearn_check_version("1.2"):
|
|
218
|
+
self._validate_params()
|
|
219
|
+
xp, _ = get_namespace(X)
|
|
220
|
+
X = validate_data(self, X, dtype=[xp.float64, xp.float32], copy=self.copy)
|
|
221
|
+
else:
|
|
222
|
+
self.n_features_in_ = X.shape[1]
|
|
223
|
+
|
|
224
|
+
n_samples, n_features = X.shape
|
|
225
|
+
|
|
226
|
+
if self.batch_size is None:
|
|
227
|
+
self.batch_size_ = 5 * n_features
|
|
228
|
+
else:
|
|
229
|
+
self.batch_size_ = self.batch_size
|
|
230
|
+
|
|
231
|
+
self.n_samples_seen_ = 0
|
|
232
|
+
if hasattr(self, "_onedal_estimator"):
|
|
233
|
+
self._onedal_estimator._reset()
|
|
234
|
+
|
|
235
|
+
for batch in gen_batches(
|
|
236
|
+
n_samples, self.batch_size_, min_batch_size=self.n_components or 0
|
|
237
|
+
):
|
|
238
|
+
X_batch = X[batch, ...]
|
|
239
|
+
self._onedal_partial_fit(X_batch, queue=queue)
|
|
240
|
+
|
|
241
|
+
self._onedal_finalize_fit()
|
|
242
|
+
|
|
243
|
+
return X
|
|
244
|
+
|
|
245
|
+
def _onedal_cpu_supported(self, method_name, *data):
|
|
246
|
+
patching_status = PatchingConditionsChain(
|
|
247
|
+
f"sklearn.decomposition.{self.__class__.__name__}.{method_name}"
|
|
248
|
+
)
|
|
249
|
+
X = data[0]
|
|
250
|
+
if "fit" in method_name:
|
|
251
|
+
patching_status.and_conditions(
|
|
252
|
+
[(not sp.issparse(X), "Sparse input is not supported")]
|
|
253
|
+
)
|
|
254
|
+
else:
|
|
255
|
+
patching_status.and_conditions(
|
|
256
|
+
[
|
|
257
|
+
(not sp.issparse(X), "Sparse input is not supported"),
|
|
258
|
+
(hasattr(self, "_onedal_estimator"), "oneDAL model was not trained"),
|
|
259
|
+
]
|
|
260
|
+
)
|
|
261
|
+
return patching_status
|
|
262
|
+
|
|
263
|
+
def _onedal_gpu_supported(self, method_name, *data):
|
|
264
|
+
patching_status = PatchingConditionsChain(
|
|
265
|
+
f"sklearn.decomposition.{self.__class__.__name__}.{method_name}"
|
|
266
|
+
)
|
|
267
|
+
# onedal_svd doesn't exist for GPU
|
|
268
|
+
X = data[0]
|
|
269
|
+
if "fit" in method_name:
|
|
270
|
+
patching_status.and_conditions(
|
|
271
|
+
[
|
|
272
|
+
(not sp.issparse(X), "Sparse input is not supported"),
|
|
273
|
+
(self.svd_solver != "onedal_svd", "onedal_svd not supported on GPU"),
|
|
274
|
+
]
|
|
275
|
+
)
|
|
276
|
+
else:
|
|
277
|
+
patching_status.and_conditions(
|
|
278
|
+
[
|
|
279
|
+
(not sp.issparse(X), "Sparse input is not supported"),
|
|
280
|
+
(hasattr(self, "_onedal_estimator"), "oneDAL model was not trained"),
|
|
281
|
+
]
|
|
282
|
+
)
|
|
283
|
+
return patching_status
|
|
284
|
+
|
|
285
|
+
def partial_fit(self, X, y=None, check_input=True):
|
|
286
|
+
if sklearn_check_version("1.2") and check_input:
|
|
287
|
+
self._validate_params()
|
|
288
|
+
|
|
289
|
+
dispatch(
|
|
290
|
+
self,
|
|
291
|
+
"partial_fit",
|
|
292
|
+
{
|
|
293
|
+
"onedal": self.__class__._onedal_partial_fit,
|
|
294
|
+
"sklearn": _sklearn_IncrementalPCA.partial_fit,
|
|
295
|
+
},
|
|
296
|
+
X,
|
|
297
|
+
check_input=check_input,
|
|
298
|
+
)
|
|
299
|
+
return self
|
|
300
|
+
|
|
301
|
+
def fit(self, X, y=None):
|
|
302
|
+
if sklearn_check_version("1.2"):
|
|
303
|
+
self._validate_params()
|
|
304
|
+
|
|
305
|
+
dispatch(
|
|
306
|
+
self,
|
|
307
|
+
"fit",
|
|
308
|
+
{
|
|
309
|
+
"onedal": self.__class__._onedal_fit,
|
|
310
|
+
"sklearn": _sklearn_IncrementalPCA.fit,
|
|
311
|
+
},
|
|
312
|
+
X,
|
|
313
|
+
)
|
|
314
|
+
return self
|
|
315
|
+
|
|
316
|
+
@wrap_output_data
|
|
317
|
+
def transform(self, X):
|
|
318
|
+
check_is_fitted(self)
|
|
319
|
+
return dispatch(
|
|
320
|
+
self,
|
|
321
|
+
"transform",
|
|
322
|
+
{
|
|
323
|
+
"onedal": self.__class__._onedal_transform,
|
|
324
|
+
"sklearn": _sklearn_IncrementalPCA.transform,
|
|
325
|
+
},
|
|
326
|
+
X,
|
|
327
|
+
)
|
|
328
|
+
|
|
329
|
+
@wrap_output_data
|
|
330
|
+
def fit_transform(self, X, y=None, **fit_params):
|
|
331
|
+
if sklearn_check_version("1.2"):
|
|
332
|
+
self._validate_params()
|
|
333
|
+
return dispatch(
|
|
334
|
+
self,
|
|
335
|
+
"fit_transform",
|
|
336
|
+
{
|
|
337
|
+
"onedal": self.__class__._onedal_fit_transform,
|
|
338
|
+
"sklearn": _sklearn_IncrementalPCA.fit_transform,
|
|
339
|
+
},
|
|
340
|
+
X,
|
|
341
|
+
)
|
|
342
|
+
|
|
343
|
+
# set properties for deleting the onedal_estimator model if:
|
|
344
|
+
# n_components_, components_, mean_ or explained_variance_ are
|
|
345
|
+
# changed. This assists in speeding up multiple uses of onedal
|
|
346
|
+
# transform as a model must now only be generated once.
|
|
347
|
+
|
|
348
|
+
@property
|
|
349
|
+
def n_components_(self):
|
|
350
|
+
if hasattr(self, "_onedal_estimator") and self._need_to_finalize:
|
|
351
|
+
self._onedal_finalize_fit()
|
|
352
|
+
return self._n_components_
|
|
353
|
+
|
|
354
|
+
@n_components_.setter
|
|
355
|
+
def n_components_(self, value):
|
|
356
|
+
if hasattr(self, "_onedal_estimator"):
|
|
357
|
+
self._onedal_estimator.n_components_ = value
|
|
358
|
+
self._onedal_estimator._onedal_model = None
|
|
359
|
+
self._n_components_ = value
|
|
360
|
+
|
|
361
|
+
@property
|
|
362
|
+
def components_(self):
|
|
363
|
+
if hasattr(self, "_onedal_estimator") and self._need_to_finalize:
|
|
364
|
+
self._onedal_finalize_fit()
|
|
365
|
+
return self._components_
|
|
366
|
+
|
|
367
|
+
@components_.setter
|
|
368
|
+
def components_(self, value):
|
|
369
|
+
if hasattr(self, "_onedal_estimator"):
|
|
370
|
+
self._onedal_estimator.components_ = value
|
|
371
|
+
self._onedal_estimator._onedal_model = None
|
|
372
|
+
self._components_ = value
|
|
373
|
+
|
|
374
|
+
@property
|
|
375
|
+
def mean_(self):
|
|
376
|
+
if hasattr(self, "_onedal_estimator") and self._need_to_finalize:
|
|
377
|
+
self._onedal_finalize_fit()
|
|
378
|
+
return self._mean_
|
|
379
|
+
|
|
380
|
+
@mean_.setter
|
|
381
|
+
def mean_(self, value):
|
|
382
|
+
if hasattr(self, "_onedal_estimator"):
|
|
383
|
+
self._onedal_estimator.mean_ = value
|
|
384
|
+
self._onedal_estimator._onedal_model = None
|
|
385
|
+
self._mean_ = value
|
|
386
|
+
|
|
387
|
+
@property
|
|
388
|
+
def explained_variance_(self):
|
|
389
|
+
if hasattr(self, "_onedal_estimator") and self._need_to_finalize:
|
|
390
|
+
self._onedal_finalize_fit()
|
|
391
|
+
return self._explained_variance_
|
|
392
|
+
|
|
393
|
+
@explained_variance_.setter
|
|
394
|
+
def explained_variance_(self, value):
|
|
395
|
+
if hasattr(self, "_onedal_estimator"):
|
|
396
|
+
self._onedal_estimator.explained_variance_ = value
|
|
397
|
+
self._onedal_estimator._onedal_model = None
|
|
398
|
+
self._explained_variance_ = value
|
|
399
|
+
|
|
400
|
+
__doc__ = _add_inc_serialization_note(
|
|
401
|
+
_sklearn_IncrementalPCA.__doc__ + "\n" + r"%incremental_serialization_note%"
|
|
402
|
+
)
|
|
403
|
+
fit.__doc__ = _sklearn_IncrementalPCA.fit.__doc__
|
|
404
|
+
fit_transform.__doc__ = _sklearn_IncrementalPCA.fit_transform.__doc__
|
|
405
|
+
transform.__doc__ = _sklearn_IncrementalPCA.transform.__doc__
|
|
406
|
+
partial_fit.__doc__ = _sklearn_IncrementalPCA.partial_fit.__doc__
|