scikit-learn-intelex 2024.5.0__py311-none-win_amd64.whl → 2024.7.0__py311-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-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/_config.py +3 -15
- scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +98 -0
- scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +143 -0
- scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +251 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +1 -1
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +3 -1
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/cluster/k_means.py +8 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +8 -6
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +15 -3
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/conftest.py +11 -1
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +64 -13
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +35 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/decomposition/pca.py +25 -1
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +4 -2
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +109 -1
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +121 -57
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +7 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +16 -2
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +13 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +102 -25
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/linear_model/linear.py +25 -39
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +92 -74
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/linear_model/ridge.py +7 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +10 -10
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +30 -5
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +45 -3
- scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/manifold/t_sne.py +21 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +5 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +3 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +3 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/neighbors/_lof.py +9 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +45 -1
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +1 -20
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +25 -20
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +31 -7
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/preview/__init__.py +1 -1
- scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +19 -0
- scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +228 -0
- scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +266 -0
- scikit_learn_intelex-2024.5.0.data/data/Lib/site-packages/sklearnex/manifold/t_sne.py → scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/__init__.py +19 -17
- scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/ridge.py +419 -0
- scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/tests/test_ridge.py +102 -0
- scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +107 -0
- scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +97 -0
- scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +172 -0
- scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_covariance_spmd.py +107 -0
- scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_pca_spmd.py +128 -0
- scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/tests/test_forest_spmd.py +265 -0
- scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +145 -0
- scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +163 -0
- scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +288 -0
- scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/svm/_common.py +328 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +40 -4
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +31 -2
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +40 -4
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +31 -2
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +12 -20
- scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/tests/_utils.py +328 -0
- scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/tests/_utils_spmd.py +185 -0
- scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/tests/test_common.py +54 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/tests/test_config.py +4 -0
- scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +290 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +12 -4
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/tests/test_patching.py +21 -25
- scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +295 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/utils/_namespace.py +1 -1
- {scikit_learn_intelex-2024.5.0.dist-info → scikit_learn_intelex-2024.7.0.dist-info}/METADATA +5 -2
- scikit_learn_intelex-2024.7.0.dist-info/RECORD +122 -0
- {scikit_learn_intelex-2024.5.0.dist-info → scikit_learn_intelex-2024.7.0.dist-info}/WHEEL +1 -1
- scikit_learn_intelex-2024.5.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +0 -257
- scikit_learn_intelex-2024.5.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +0 -17
- scikit_learn_intelex-2024.5.0.data/data/Lib/site-packages/sklearnex/svm/_common.py +0 -185
- scikit_learn_intelex-2024.5.0.data/data/Lib/site-packages/sklearnex/tests/_utils.py +0 -173
- scikit_learn_intelex-2024.5.0.data/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +0 -231
- scikit_learn_intelex-2024.5.0.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability_tests.py +0 -428
- scikit_learn_intelex-2024.5.0.dist-info/RECORD +0 -104
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/__init__.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/__main__.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/_utils.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/linear_model/__init__.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/linear_model/logistic_path.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/preview/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/preview/cluster/_common.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/preview/cluster/k_means.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/neighbors.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/tests/test_parallel.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/utils/__init__.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/utils/tests/test_finite.py +0 -0
- {scikit_learn_intelex-2024.5.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/utils/validation.py +0 -0
- {scikit_learn_intelex-2024.5.0.dist-info → scikit_learn_intelex-2024.7.0.dist-info}/LICENSE.txt +0 -0
- {scikit_learn_intelex-2024.5.0.dist-info → scikit_learn_intelex-2024.7.0.dist-info}/top_level.txt +0 -0
|
@@ -19,13 +19,14 @@ import warnings
|
|
|
19
19
|
|
|
20
20
|
import numpy as np
|
|
21
21
|
from scipy import linalg
|
|
22
|
-
from sklearn.base import BaseEstimator
|
|
22
|
+
from sklearn.base import BaseEstimator, clone
|
|
23
23
|
from sklearn.covariance import EmpiricalCovariance as sklearn_EmpiricalCovariance
|
|
24
|
+
from sklearn.covariance import log_likelihood
|
|
24
25
|
from sklearn.utils import check_array, gen_batches
|
|
26
|
+
from sklearn.utils.validation import _num_features
|
|
25
27
|
|
|
26
28
|
from daal4py.sklearn._n_jobs_support import control_n_jobs
|
|
27
29
|
from daal4py.sklearn._utils import daal_check_version, sklearn_check_version
|
|
28
|
-
from onedal._device_offload import support_usm_ndarray
|
|
29
30
|
from onedal.covariance import (
|
|
30
31
|
IncrementalEmpiricalCovariance as onedal_IncrementalEmpiricalCovariance,
|
|
31
32
|
)
|
|
@@ -34,6 +35,7 @@ from sklearnex import config_context
|
|
|
34
35
|
from .._device_offload import dispatch, wrap_output_data
|
|
35
36
|
from .._utils import PatchingConditionsChain, register_hyperparameters
|
|
36
37
|
from ..metrics import pairwise_distances
|
|
38
|
+
from ..utils import get_namespace
|
|
37
39
|
|
|
38
40
|
if sklearn_check_version("1.2"):
|
|
39
41
|
from sklearn.utils._param_validation import Interval
|
|
@@ -98,7 +100,6 @@ class IncrementalEmpiricalCovariance(BaseEstimator):
|
|
|
98
100
|
|
|
99
101
|
get_precision = sklearn_EmpiricalCovariance.get_precision
|
|
100
102
|
error_norm = wrap_output_data(sklearn_EmpiricalCovariance.error_norm)
|
|
101
|
-
score = wrap_output_data(sklearn_EmpiricalCovariance.score)
|
|
102
103
|
|
|
103
104
|
def __init__(
|
|
104
105
|
self, *, store_precision=False, assume_centered=False, batch_size=None, copy=True
|
|
@@ -197,6 +198,43 @@ class IncrementalEmpiricalCovariance(BaseEstimator):
|
|
|
197
198
|
|
|
198
199
|
return self
|
|
199
200
|
|
|
201
|
+
@wrap_output_data
|
|
202
|
+
def score(self, X_test, y=None):
|
|
203
|
+
xp, _ = get_namespace(X_test)
|
|
204
|
+
|
|
205
|
+
location = self.location_
|
|
206
|
+
if sklearn_check_version("1.0"):
|
|
207
|
+
X = self._validate_data(
|
|
208
|
+
X_test,
|
|
209
|
+
dtype=[np.float64, np.float32],
|
|
210
|
+
reset=False,
|
|
211
|
+
)
|
|
212
|
+
else:
|
|
213
|
+
X = check_array(
|
|
214
|
+
X_test,
|
|
215
|
+
dtype=[np.float64, np.float32],
|
|
216
|
+
)
|
|
217
|
+
|
|
218
|
+
if "numpy" not in xp.__name__:
|
|
219
|
+
location = xp.asarray(location, device=X_test.device)
|
|
220
|
+
# depending on the sklearn version, check_array
|
|
221
|
+
# and validate_data will return only numpy arrays
|
|
222
|
+
# which will break dpnp/dpctl support. If the
|
|
223
|
+
# array namespace isn't from numpy and the data
|
|
224
|
+
# is now a numpy array, it has been validated and
|
|
225
|
+
# the original can be used.
|
|
226
|
+
if isinstance(X, np.ndarray):
|
|
227
|
+
X = X_test
|
|
228
|
+
|
|
229
|
+
est = clone(self)
|
|
230
|
+
est.set_params(**{"assume_centered": True})
|
|
231
|
+
|
|
232
|
+
# test_cov is a numpy array, but calculated on device
|
|
233
|
+
test_cov = est.fit(X - location).covariance_
|
|
234
|
+
res = log_likelihood(test_cov, self.get_precision())
|
|
235
|
+
|
|
236
|
+
return res
|
|
237
|
+
|
|
200
238
|
def partial_fit(self, X, y=None, check_input=True):
|
|
201
239
|
"""
|
|
202
240
|
Incremental fit with X. All of X is processed as a single batch.
|
|
@@ -293,21 +331,34 @@ class IncrementalEmpiricalCovariance(BaseEstimator):
|
|
|
293
331
|
return self
|
|
294
332
|
|
|
295
333
|
# expose sklearnex pairwise_distances if mahalanobis distance eventually supported
|
|
296
|
-
@wrap_output_data
|
|
297
334
|
def mahalanobis(self, X):
|
|
298
335
|
if sklearn_check_version("1.0"):
|
|
299
|
-
self.
|
|
300
|
-
else:
|
|
301
|
-
check_array(X, copy=self.copy)
|
|
336
|
+
self._check_feature_names(X, reset=False)
|
|
302
337
|
|
|
338
|
+
xp, _ = get_namespace(X)
|
|
303
339
|
precision = self.get_precision()
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
340
|
+
# compute mahalanobis distances
|
|
341
|
+
# pairwise_distances will check n_features (via n_feature matching with
|
|
342
|
+
# self.location_) , and will check for finiteness via check array
|
|
343
|
+
# check_feature_names will match _validate_data functionally
|
|
344
|
+
location = self.location_[np.newaxis, :]
|
|
345
|
+
if "numpy" not in xp.__name__:
|
|
346
|
+
# Guarantee that inputs to pairwise_distances match in type and location
|
|
347
|
+
location = xp.asarray(location, device=X.device)
|
|
348
|
+
|
|
349
|
+
try:
|
|
350
|
+
dist = pairwise_distances(X, location, metric="mahalanobis", VI=precision)
|
|
351
|
+
except ValueError as e:
|
|
352
|
+
# Throw the expected sklearn error in an n_feature length violation
|
|
353
|
+
if "Incompatible dimension for X and Y matrices: X.shape[1] ==" in str(e):
|
|
354
|
+
raise ValueError(
|
|
355
|
+
f"X has {_num_features(X)} features, but {self.__class__.__name__} "
|
|
356
|
+
f"is expecting {self.n_features_in_} features as input."
|
|
357
|
+
)
|
|
358
|
+
else:
|
|
359
|
+
raise e
|
|
309
360
|
|
|
310
|
-
return
|
|
361
|
+
return (xp.reshape(dist, (-1,))) ** 2
|
|
311
362
|
|
|
312
363
|
_onedal_cpu_supported = _onedal_supported
|
|
313
364
|
_onedal_gpu_supported = _onedal_supported
|
|
@@ -16,13 +16,18 @@
|
|
|
16
16
|
|
|
17
17
|
import numpy as np
|
|
18
18
|
import pytest
|
|
19
|
+
from numpy.linalg import slogdet
|
|
19
20
|
from numpy.testing import assert_allclose
|
|
21
|
+
from scipy.linalg import pinvh
|
|
20
22
|
from sklearn.covariance.tests.test_covariance import (
|
|
21
23
|
test_covariance,
|
|
22
24
|
test_EmpiricalCovariance_validates_mahalanobis,
|
|
23
25
|
)
|
|
26
|
+
from sklearn.datasets import load_diabetes
|
|
27
|
+
from sklearn.decomposition import PCA
|
|
24
28
|
|
|
25
29
|
from onedal.tests.utils._dataframes_support import (
|
|
30
|
+
_as_numpy,
|
|
26
31
|
_convert_to_dataframe,
|
|
27
32
|
get_dataframes_and_queues,
|
|
28
33
|
)
|
|
@@ -163,6 +168,36 @@ def test_sklearnex_fit_on_random_data(
|
|
|
163
168
|
assert_allclose(expected_means, result.location_, atol=1e-6)
|
|
164
169
|
|
|
165
170
|
|
|
171
|
+
@pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
|
|
172
|
+
def test_whitened_toy_score(dataframe, queue):
|
|
173
|
+
from sklearnex.covariance import IncrementalEmpiricalCovariance
|
|
174
|
+
|
|
175
|
+
# Load a sklearn toy dataset with sufficient data
|
|
176
|
+
X, _ = load_diabetes(return_X_y=True)
|
|
177
|
+
n = X.shape[1]
|
|
178
|
+
|
|
179
|
+
# Transform the data into uncorrelated, unity variance components
|
|
180
|
+
X = PCA(whiten=True).fit_transform(X)
|
|
181
|
+
|
|
182
|
+
# change dataframe
|
|
183
|
+
X_df = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
184
|
+
|
|
185
|
+
# fit data
|
|
186
|
+
est = IncrementalEmpiricalCovariance()
|
|
187
|
+
est.fit(X_df)
|
|
188
|
+
# location_ attribute approximately zero (10,), covariance_ identity (10,10)
|
|
189
|
+
|
|
190
|
+
# The log-likelihood can be calculated simply due to covariance_
|
|
191
|
+
# use of scipy.linalg.pinvh, np.linalg.sloget and np.cov for estimator
|
|
192
|
+
# independence
|
|
193
|
+
expected_result = (
|
|
194
|
+
-(n - slogdet(pinvh(np.cov(X.T, bias=1)))[1] + n * np.log(2 * np.pi)) / 2
|
|
195
|
+
)
|
|
196
|
+
# expected_result = -14.1780602988
|
|
197
|
+
result = _as_numpy(est.score(X_df))
|
|
198
|
+
assert_allclose(expected_result, result, atol=1e-6)
|
|
199
|
+
|
|
200
|
+
|
|
166
201
|
# Monkeypatch IncrementalEmpiricalCovariance into relevant sklearn.covariance tests
|
|
167
202
|
@pytest.mark.allow_sklearn_fallback
|
|
168
203
|
@pytest.mark.parametrize(
|
|
@@ -32,6 +32,7 @@ if daal_check_version((2024, "P", 100)):
|
|
|
32
32
|
|
|
33
33
|
from .._device_offload import dispatch, wrap_output_data
|
|
34
34
|
from .._utils import PatchingConditionsChain
|
|
35
|
+
from ..utils import get_namespace
|
|
35
36
|
|
|
36
37
|
if sklearn_check_version("1.1") and not sklearn_check_version("1.2"):
|
|
37
38
|
from sklearn.utils import check_scalar
|
|
@@ -42,7 +43,6 @@ if daal_check_version((2024, "P", 100)):
|
|
|
42
43
|
from sklearn.decomposition import PCA as sklearn_PCA
|
|
43
44
|
|
|
44
45
|
from onedal.decomposition import PCA as onedal_PCA
|
|
45
|
-
from sklearnex.utils import get_namespace
|
|
46
46
|
|
|
47
47
|
@control_n_jobs(decorated_methods=["fit", "transform", "fit_transform"])
|
|
48
48
|
class PCA(sklearn_PCA):
|
|
@@ -210,6 +210,29 @@ if daal_check_version((2024, "P", 100)):
|
|
|
210
210
|
# Scikit-learn PCA["covariance_eigh"] was fit
|
|
211
211
|
return self._transform(X_fit, xp, x_is_centered=x_is_centered)
|
|
212
212
|
|
|
213
|
+
@wrap_output_data
|
|
214
|
+
def inverse_transform(self, X):
|
|
215
|
+
xp, _ = get_namespace(X)
|
|
216
|
+
|
|
217
|
+
mean = self.mean_
|
|
218
|
+
if self.whiten:
|
|
219
|
+
components = (
|
|
220
|
+
xp.sqrt(self.explained_variance_[:, np.newaxis]) * self.components_
|
|
221
|
+
)
|
|
222
|
+
else:
|
|
223
|
+
components = self.components_
|
|
224
|
+
|
|
225
|
+
if "numpy" not in xp.__name__:
|
|
226
|
+
# DPCtl and dpnp require inputs to be on the same device for
|
|
227
|
+
# matrix multiplication and division. The type and location
|
|
228
|
+
# of the components and mean are dependent on the sklearn
|
|
229
|
+
# version, this makes sure it is of the same type and on the
|
|
230
|
+
# same device as the data (compute follows data).
|
|
231
|
+
components = xp.asarray(components, device=X.device)
|
|
232
|
+
mean = xp.asarray(mean, device=X.device)
|
|
233
|
+
|
|
234
|
+
return X @ components + mean
|
|
235
|
+
|
|
213
236
|
def _onedal_supported(self, method_name, X):
|
|
214
237
|
class_name = self.__class__.__name__
|
|
215
238
|
patching_status = PatchingConditionsChain(
|
|
@@ -381,6 +404,7 @@ if daal_check_version((2024, "P", 100)):
|
|
|
381
404
|
fit.__doc__ = sklearn_PCA.fit.__doc__
|
|
382
405
|
transform.__doc__ = sklearn_PCA.transform.__doc__
|
|
383
406
|
fit_transform.__doc__ = sklearn_PCA.fit_transform.__doc__
|
|
407
|
+
inverse_transform.__doc__ = sklearn_PCA.inverse_transform.__doc__
|
|
384
408
|
|
|
385
409
|
else:
|
|
386
410
|
from daal4py.sklearn.decomposition import PCA
|
|
@@ -51,6 +51,8 @@ def test_sklearnex_import(dataframe, queue):
|
|
|
51
51
|
assert hasattr(pca, "_onedal_estimator")
|
|
52
52
|
else:
|
|
53
53
|
assert "daal4py" in pca.__module__
|
|
54
|
+
|
|
55
|
+
tol = 1e-5 if _as_numpy(X_transformed).dtype == np.float32 else 1e-7
|
|
54
56
|
assert_allclose([6.30061232, 0.54980396], _as_numpy(pca.singular_values_))
|
|
55
|
-
assert_allclose(X_transformed_expected, _as_numpy(X_transformed))
|
|
56
|
-
assert_allclose(X_transformed_expected, _as_numpy(X_fit_transformed))
|
|
57
|
+
assert_allclose(X_transformed_expected, _as_numpy(X_transformed), rtol=tol)
|
|
58
|
+
assert_allclose(X_transformed_expected, _as_numpy(X_fit_transformed), rtol=tol)
|
|
@@ -45,12 +45,15 @@ def get_patch_map_core(preview=False):
|
|
|
45
45
|
|
|
46
46
|
if _is_new_patching_available():
|
|
47
47
|
import sklearn.covariance as covariance_module
|
|
48
|
+
import sklearn.decomposition as decomposition_module
|
|
48
49
|
|
|
49
50
|
# Preview classes for patching
|
|
50
51
|
from .preview.cluster import KMeans as KMeans_sklearnex
|
|
51
52
|
from .preview.covariance import (
|
|
52
53
|
EmpiricalCovariance as EmpiricalCovariance_sklearnex,
|
|
53
54
|
)
|
|
55
|
+
from .preview.decomposition import IncrementalPCA as IncrementalPCA_sklearnex
|
|
56
|
+
from .preview.linear_model import Ridge as Ridge_sklearnex
|
|
54
57
|
|
|
55
58
|
# Since the state of the lru_cache without preview cannot be
|
|
56
59
|
# guaranteed to not have already enabled sklearnex algorithms
|
|
@@ -62,7 +65,7 @@ def get_patch_map_core(preview=False):
|
|
|
62
65
|
sklearn_obj = mapping["kmeans"][0][1]
|
|
63
66
|
mapping.pop("kmeans")
|
|
64
67
|
mapping["kmeans"] = [
|
|
65
|
-
[(cluster_module, "
|
|
68
|
+
[(cluster_module, "KMeans", KMeans_sklearnex), sklearn_obj]
|
|
66
69
|
]
|
|
67
70
|
|
|
68
71
|
# Covariance
|
|
@@ -76,6 +79,27 @@ def get_patch_map_core(preview=False):
|
|
|
76
79
|
None,
|
|
77
80
|
]
|
|
78
81
|
]
|
|
82
|
+
|
|
83
|
+
# IncrementalPCA
|
|
84
|
+
mapping["incrementalpca"] = [
|
|
85
|
+
[
|
|
86
|
+
(
|
|
87
|
+
decomposition_module,
|
|
88
|
+
"IncrementalPCA",
|
|
89
|
+
IncrementalPCA_sklearnex,
|
|
90
|
+
),
|
|
91
|
+
None,
|
|
92
|
+
]
|
|
93
|
+
]
|
|
94
|
+
|
|
95
|
+
# Ridge
|
|
96
|
+
linear_model_module, _, _ = mapping["ridge"][0][0]
|
|
97
|
+
sklearn_obj = mapping["ridge"][0][1]
|
|
98
|
+
mapping.pop("ridge")
|
|
99
|
+
mapping["ridge"] = [
|
|
100
|
+
[(linear_model_module, "Ridge", Ridge_sklearnex), sklearn_obj]
|
|
101
|
+
]
|
|
102
|
+
|
|
79
103
|
return mapping
|
|
80
104
|
|
|
81
105
|
from daal4py.sklearn.monkeypatch.dispatcher import _get_map_of_algorithms
|
|
@@ -97,6 +121,9 @@ def get_patch_map_core(preview=False):
|
|
|
97
121
|
import sklearn.decomposition as decomposition_module
|
|
98
122
|
import sklearn.ensemble as ensemble_module
|
|
99
123
|
import sklearn.linear_model as linear_model_module
|
|
124
|
+
import sklearn.manifold as manifold_module
|
|
125
|
+
import sklearn.metrics as metrics_module
|
|
126
|
+
import sklearn.model_selection as model_selection_module
|
|
100
127
|
import sklearn.neighbors as neighbors_module
|
|
101
128
|
import sklearn.svm as svm_module
|
|
102
129
|
|
|
@@ -124,11 +151,18 @@ def get_patch_map_core(preview=False):
|
|
|
124
151
|
from .ensemble import ExtraTreesRegressor as ExtraTreesRegressor_sklearnex
|
|
125
152
|
from .ensemble import RandomForestClassifier as RandomForestClassifier_sklearnex
|
|
126
153
|
from .ensemble import RandomForestRegressor as RandomForestRegressor_sklearnex
|
|
154
|
+
from .linear_model import ElasticNet as ElasticNet_sklearnex
|
|
127
155
|
from .linear_model import (
|
|
128
156
|
IncrementalLinearRegression as IncrementalLinearRegression_sklearnex,
|
|
129
157
|
)
|
|
158
|
+
from .linear_model import Lasso as Lasso_sklearnex
|
|
130
159
|
from .linear_model import LinearRegression as LinearRegression_sklearnex
|
|
131
160
|
from .linear_model import LogisticRegression as LogisticRegression_sklearnex
|
|
161
|
+
from .linear_model import Ridge as Ridge_sklearnex
|
|
162
|
+
from .manifold import TSNE as TSNE_sklearnex
|
|
163
|
+
from .metrics import pairwise_distances as pairwise_distances_sklearnex
|
|
164
|
+
from .metrics import roc_auc_score as roc_auc_score_sklearnex
|
|
165
|
+
from .model_selection import train_test_split as train_test_split_sklearnex
|
|
132
166
|
from .neighbors import KNeighborsClassifier as KNeighborsClassifier_sklearnex
|
|
133
167
|
from .neighbors import KNeighborsRegressor as KNeighborsRegressor_sklearnex
|
|
134
168
|
from .neighbors import LocalOutlierFactor as LocalOutlierFactor_sklearnex
|
|
@@ -154,6 +188,32 @@ def get_patch_map_core(preview=False):
|
|
|
154
188
|
mapping["nusvr"] = [[(svm_module, "NuSVR", NuSVR_sklearnex), None]]
|
|
155
189
|
mapping["nusvc"] = [[(svm_module, "NuSVC", NuSVC_sklearnex), None]]
|
|
156
190
|
|
|
191
|
+
# ElasticNet
|
|
192
|
+
mapping.pop("elasticnet")
|
|
193
|
+
mapping["elasticnet"] = [
|
|
194
|
+
[
|
|
195
|
+
(
|
|
196
|
+
linear_model_module,
|
|
197
|
+
"ElasticNet",
|
|
198
|
+
ElasticNet_sklearnex,
|
|
199
|
+
),
|
|
200
|
+
None,
|
|
201
|
+
]
|
|
202
|
+
]
|
|
203
|
+
|
|
204
|
+
# Lasso
|
|
205
|
+
mapping.pop("lasso")
|
|
206
|
+
mapping["lasso"] = [
|
|
207
|
+
[
|
|
208
|
+
(
|
|
209
|
+
linear_model_module,
|
|
210
|
+
"Lasso",
|
|
211
|
+
Lasso_sklearnex,
|
|
212
|
+
),
|
|
213
|
+
None,
|
|
214
|
+
]
|
|
215
|
+
]
|
|
216
|
+
|
|
157
217
|
# Linear Regression
|
|
158
218
|
mapping.pop("linear")
|
|
159
219
|
mapping.pop("linearregression")
|
|
@@ -187,6 +247,54 @@ def get_patch_map_core(preview=False):
|
|
|
187
247
|
]
|
|
188
248
|
mapping["logisticregression"] = mapping["log_reg"]
|
|
189
249
|
|
|
250
|
+
# Ridge
|
|
251
|
+
mapping.pop("ridge")
|
|
252
|
+
mapping["ridge"] = [
|
|
253
|
+
[
|
|
254
|
+
(
|
|
255
|
+
linear_model_module,
|
|
256
|
+
"Ridge",
|
|
257
|
+
Ridge_sklearnex,
|
|
258
|
+
),
|
|
259
|
+
None,
|
|
260
|
+
]
|
|
261
|
+
]
|
|
262
|
+
|
|
263
|
+
# manifold
|
|
264
|
+
mapping.pop("tsne")
|
|
265
|
+
mapping["tsne"] = [
|
|
266
|
+
[
|
|
267
|
+
(manifold_module, "TSNE", TSNE_sklearnex),
|
|
268
|
+
None,
|
|
269
|
+
]
|
|
270
|
+
]
|
|
271
|
+
|
|
272
|
+
# metrics
|
|
273
|
+
mapping.pop("distances")
|
|
274
|
+
mapping.pop("roc_auc_score")
|
|
275
|
+
mapping["distances"] = [
|
|
276
|
+
[
|
|
277
|
+
(metrics_module, "pairwise_distances", pairwise_distances_sklearnex),
|
|
278
|
+
None,
|
|
279
|
+
]
|
|
280
|
+
]
|
|
281
|
+
mapping["pairwise_distances"] = mapping["distances"]
|
|
282
|
+
mapping["roc_auc_score"] = [
|
|
283
|
+
[
|
|
284
|
+
(metrics_module, "roc_auc_score", roc_auc_score_sklearnex),
|
|
285
|
+
None,
|
|
286
|
+
]
|
|
287
|
+
]
|
|
288
|
+
|
|
289
|
+
# model_selection
|
|
290
|
+
mapping.pop("train_test_split")
|
|
291
|
+
mapping["train_test_split"] = [
|
|
292
|
+
[
|
|
293
|
+
(model_selection_module, "train_test_split", train_test_split_sklearnex),
|
|
294
|
+
None,
|
|
295
|
+
]
|
|
296
|
+
]
|
|
297
|
+
|
|
190
298
|
# kNN
|
|
191
299
|
mapping.pop("knn_classifier")
|
|
192
300
|
mapping.pop("kneighborsclassifier")
|