scikit-learn-intelex 2024.6.0__py310-none-win_amd64.whl → 2024.7.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-2024.6.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.6.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.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +0 -1
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/cluster/k_means.py +8 -0
- {scikit_learn_intelex-2024.6.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.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +64 -13
- {scikit_learn_intelex-2024.6.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.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/decomposition/pca.py +25 -1
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +94 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +8 -35
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +9 -12
- {scikit_learn_intelex-2024.6.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.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/linear_model/linear.py +2 -34
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +79 -59
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/linear_model/ridge.py +7 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +28 -3
- {scikit_learn_intelex-2024.6.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.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +5 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +3 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +3 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/neighbors/_lof.py +9 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +45 -1
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +1 -20
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +1 -20
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +31 -7
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/preview/__init__.py +1 -1
- scikit_learn_intelex-2024.6.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.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/svm/_common.py +19 -21
- {scikit_learn_intelex-2024.6.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.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/tests/_utils.py +143 -20
- scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/tests/_utils_spmd.py +185 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/tests/test_config.py +4 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +12 -4
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/tests/test_patching.py +16 -13
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +21 -9
- {scikit_learn_intelex-2024.6.0.dist-info → scikit_learn_intelex-2024.7.0.dist-info}/METADATA +2 -2
- scikit_learn_intelex-2024.7.0.dist-info/RECORD +122 -0
- scikit_learn_intelex-2024.6.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +0 -257
- scikit_learn_intelex-2024.6.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +0 -17
- scikit_learn_intelex-2024.6.0.dist-info/RECORD +0 -108
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/__init__.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/__main__.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/_utils.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +0 -0
- {scikit_learn_intelex-2024.6.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.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/conftest.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +0 -0
- {scikit_learn_intelex-2024.6.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.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/linear_model/__init__.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +0 -0
- {scikit_learn_intelex-2024.6.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.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -0
- {scikit_learn_intelex-2024.6.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.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -0
- {scikit_learn_intelex-2024.6.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.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +0 -0
- {scikit_learn_intelex-2024.6.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.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +0 -0
- {scikit_learn_intelex-2024.6.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.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/preview/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/preview/cluster/_common.py +0 -0
- {scikit_learn_intelex-2024.6.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.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +0 -0
- {scikit_learn_intelex-2024.6.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.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +0 -0
- {scikit_learn_intelex-2024.6.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.6.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.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +0 -0
- {scikit_learn_intelex-2024.6.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.6.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.6.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.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/neighbors.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/tests/test_common.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +0 -0
- {scikit_learn_intelex-2024.6.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.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/tests/test_parallel.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/utils/__init__.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/utils/_namespace.py +0 -0
- {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -0
- {scikit_learn_intelex-2024.6.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.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/utils/validation.py +0 -0
- {scikit_learn_intelex-2024.6.0.dist-info → scikit_learn_intelex-2024.7.0.dist-info}/LICENSE.txt +0 -0
- {scikit_learn_intelex-2024.6.0.dist-info → scikit_learn_intelex-2024.7.0.dist-info}/WHEEL +0 -0
- {scikit_learn_intelex-2024.6.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
|
|
@@ -53,6 +53,7 @@ def get_patch_map_core(preview=False):
|
|
|
53
53
|
EmpiricalCovariance as EmpiricalCovariance_sklearnex,
|
|
54
54
|
)
|
|
55
55
|
from .preview.decomposition import IncrementalPCA as IncrementalPCA_sklearnex
|
|
56
|
+
from .preview.linear_model import Ridge as Ridge_sklearnex
|
|
56
57
|
|
|
57
58
|
# Since the state of the lru_cache without preview cannot be
|
|
58
59
|
# guaranteed to not have already enabled sklearnex algorithms
|
|
@@ -90,6 +91,15 @@ def get_patch_map_core(preview=False):
|
|
|
90
91
|
None,
|
|
91
92
|
]
|
|
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
|
+
|
|
93
103
|
return mapping
|
|
94
104
|
|
|
95
105
|
from daal4py.sklearn.monkeypatch.dispatcher import _get_map_of_algorithms
|
|
@@ -111,6 +121,9 @@ def get_patch_map_core(preview=False):
|
|
|
111
121
|
import sklearn.decomposition as decomposition_module
|
|
112
122
|
import sklearn.ensemble as ensemble_module
|
|
113
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
|
|
114
127
|
import sklearn.neighbors as neighbors_module
|
|
115
128
|
import sklearn.svm as svm_module
|
|
116
129
|
|
|
@@ -138,11 +151,18 @@ def get_patch_map_core(preview=False):
|
|
|
138
151
|
from .ensemble import ExtraTreesRegressor as ExtraTreesRegressor_sklearnex
|
|
139
152
|
from .ensemble import RandomForestClassifier as RandomForestClassifier_sklearnex
|
|
140
153
|
from .ensemble import RandomForestRegressor as RandomForestRegressor_sklearnex
|
|
154
|
+
from .linear_model import ElasticNet as ElasticNet_sklearnex
|
|
141
155
|
from .linear_model import (
|
|
142
156
|
IncrementalLinearRegression as IncrementalLinearRegression_sklearnex,
|
|
143
157
|
)
|
|
158
|
+
from .linear_model import Lasso as Lasso_sklearnex
|
|
144
159
|
from .linear_model import LinearRegression as LinearRegression_sklearnex
|
|
145
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
|
|
146
166
|
from .neighbors import KNeighborsClassifier as KNeighborsClassifier_sklearnex
|
|
147
167
|
from .neighbors import KNeighborsRegressor as KNeighborsRegressor_sklearnex
|
|
148
168
|
from .neighbors import LocalOutlierFactor as LocalOutlierFactor_sklearnex
|
|
@@ -168,6 +188,32 @@ def get_patch_map_core(preview=False):
|
|
|
168
188
|
mapping["nusvr"] = [[(svm_module, "NuSVR", NuSVR_sklearnex), None]]
|
|
169
189
|
mapping["nusvc"] = [[(svm_module, "NuSVC", NuSVC_sklearnex), None]]
|
|
170
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
|
+
|
|
171
217
|
# Linear Regression
|
|
172
218
|
mapping.pop("linear")
|
|
173
219
|
mapping.pop("linearregression")
|
|
@@ -201,6 +247,54 @@ def get_patch_map_core(preview=False):
|
|
|
201
247
|
]
|
|
202
248
|
mapping["logisticregression"] = mapping["log_reg"]
|
|
203
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
|
+
|
|
204
298
|
# kNN
|
|
205
299
|
mapping.pop("knn_classifier")
|
|
206
300
|
mapping.pop("kneighborsclassifier")
|
|
@@ -38,7 +38,12 @@ from sklearn.tree import (
|
|
|
38
38
|
)
|
|
39
39
|
from sklearn.tree._tree import Tree
|
|
40
40
|
from sklearn.utils import check_random_state, deprecated
|
|
41
|
-
from sklearn.utils.validation import
|
|
41
|
+
from sklearn.utils.validation import (
|
|
42
|
+
_check_sample_weight,
|
|
43
|
+
check_array,
|
|
44
|
+
check_is_fitted,
|
|
45
|
+
check_X_y,
|
|
46
|
+
)
|
|
42
47
|
|
|
43
48
|
from daal4py.sklearn._n_jobs_support import control_n_jobs
|
|
44
49
|
from daal4py.sklearn._utils import (
|
|
@@ -70,7 +75,7 @@ class BaseForest(ABC):
|
|
|
70
75
|
X, y = self._validate_data(
|
|
71
76
|
X,
|
|
72
77
|
y,
|
|
73
|
-
multi_output=
|
|
78
|
+
multi_output=True,
|
|
74
79
|
accept_sparse=False,
|
|
75
80
|
dtype=[np.float64, np.float32],
|
|
76
81
|
force_all_finite=False,
|
|
@@ -78,7 +83,7 @@ class BaseForest(ABC):
|
|
|
78
83
|
)
|
|
79
84
|
|
|
80
85
|
if sample_weight is not None:
|
|
81
|
-
sample_weight =
|
|
86
|
+
sample_weight = _check_sample_weight(sample_weight, X)
|
|
82
87
|
|
|
83
88
|
if y.ndim == 2 and y.shape[1] == 1:
|
|
84
89
|
warnings.warn(
|
|
@@ -289,38 +294,6 @@ class BaseForest(ABC):
|
|
|
289
294
|
"min_bin_size must be integral number but was " "%r" % self.min_bin_size
|
|
290
295
|
)
|
|
291
296
|
|
|
292
|
-
def check_sample_weight(self, sample_weight, X, dtype=None):
|
|
293
|
-
n_samples = _num_samples(X)
|
|
294
|
-
|
|
295
|
-
if dtype is not None and dtype not in [np.float32, np.float64]:
|
|
296
|
-
dtype = np.float64
|
|
297
|
-
|
|
298
|
-
if sample_weight is None:
|
|
299
|
-
sample_weight = np.ones(n_samples, dtype=dtype)
|
|
300
|
-
elif isinstance(sample_weight, numbers.Number):
|
|
301
|
-
sample_weight = np.full(n_samples, sample_weight, dtype=dtype)
|
|
302
|
-
else:
|
|
303
|
-
if dtype is None:
|
|
304
|
-
dtype = [np.float64, np.float32]
|
|
305
|
-
sample_weight = check_array(
|
|
306
|
-
sample_weight,
|
|
307
|
-
accept_sparse=False,
|
|
308
|
-
ensure_2d=False,
|
|
309
|
-
dtype=dtype,
|
|
310
|
-
order="C",
|
|
311
|
-
force_all_finite=False,
|
|
312
|
-
)
|
|
313
|
-
if sample_weight.ndim != 1:
|
|
314
|
-
raise ValueError("Sample weights must be 1D array or scalar")
|
|
315
|
-
|
|
316
|
-
if sample_weight.shape != (n_samples,):
|
|
317
|
-
raise ValueError(
|
|
318
|
-
"sample_weight.shape == {}, expected {}!".format(
|
|
319
|
-
sample_weight.shape, (n_samples,)
|
|
320
|
-
)
|
|
321
|
-
)
|
|
322
|
-
return sample_weight
|
|
323
|
-
|
|
324
297
|
@property
|
|
325
298
|
def estimators_(self):
|
|
326
299
|
if hasattr(self, "_cached_estimators_"):
|
|
@@ -46,11 +46,10 @@ def test_sklearnex_import_rf_classifier(dataframe, queue):
|
|
|
46
46
|
assert_allclose([1], _as_numpy(rf.predict([[0, 0, 0, 0]])))
|
|
47
47
|
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
@pytest.mark.parametrize(
|
|
51
|
-
"dataframe,queue", get_dataframes_and_queues(device_filter_="cpu")
|
|
52
|
-
)
|
|
49
|
+
@pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
|
|
53
50
|
def test_sklearnex_import_rf_regression(dataframe, queue):
|
|
51
|
+
if queue and queue.sycl_device.is_gpu:
|
|
52
|
+
pytest.skip("RF regressor predict for the GPU sycl_queue is buggy.")
|
|
54
53
|
from sklearnex.ensemble import RandomForestRegressor
|
|
55
54
|
|
|
56
55
|
X, y = make_regression(n_features=4, n_informative=2, random_state=0, shuffle=False)
|
|
@@ -69,11 +68,10 @@ def test_sklearnex_import_rf_regression(dataframe, queue):
|
|
|
69
68
|
assert_allclose([-6.839], pred, atol=1e-2)
|
|
70
69
|
|
|
71
70
|
|
|
72
|
-
|
|
73
|
-
@pytest.mark.parametrize(
|
|
74
|
-
"dataframe,queue", get_dataframes_and_queues(device_filter_="cpu")
|
|
75
|
-
)
|
|
71
|
+
@pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
|
|
76
72
|
def test_sklearnex_import_et_classifier(dataframe, queue):
|
|
73
|
+
if queue and queue.sycl_device.is_gpu:
|
|
74
|
+
pytest.skip("ET classifier predict for the GPU sycl_queue is buggy.")
|
|
77
75
|
from sklearnex.ensemble import ExtraTreesClassifier
|
|
78
76
|
|
|
79
77
|
X, y = make_classification(
|
|
@@ -93,11 +91,10 @@ def test_sklearnex_import_et_classifier(dataframe, queue):
|
|
|
93
91
|
assert_allclose([1], _as_numpy(rf.predict([[0, 0, 0, 0]])))
|
|
94
92
|
|
|
95
93
|
|
|
96
|
-
|
|
97
|
-
@pytest.mark.parametrize(
|
|
98
|
-
"dataframe,queue", get_dataframes_and_queues(device_filter_="cpu")
|
|
99
|
-
)
|
|
94
|
+
@pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
|
|
100
95
|
def test_sklearnex_import_et_regression(dataframe, queue):
|
|
96
|
+
if queue and queue.sycl_device.is_gpu:
|
|
97
|
+
pytest.skip("ET regressor predict for the GPU sycl_queue is buggy.")
|
|
101
98
|
from sklearnex.ensemble import ExtraTreesRegressor
|
|
102
99
|
|
|
103
100
|
X, y = make_regression(n_features=1, random_state=0, shuffle=False)
|
|
@@ -15,3 +15,16 @@
|
|
|
15
15
|
# ===============================================================================
|
|
16
16
|
|
|
17
17
|
from daal4py.sklearn.linear_model import ElasticNet, Lasso
|
|
18
|
+
from onedal._device_offload import support_usm_ndarray
|
|
19
|
+
|
|
20
|
+
# Note: `sklearnex.linear_model.ElasticNet` only has functional
|
|
21
|
+
# sycl GPU support. No GPU device will be offloaded.
|
|
22
|
+
ElasticNet.fit = support_usm_ndarray(queue_param=False)(ElasticNet.fit)
|
|
23
|
+
ElasticNet.predict = support_usm_ndarray(queue_param=False)(ElasticNet.predict)
|
|
24
|
+
ElasticNet.score = support_usm_ndarray(queue_param=False)(ElasticNet.score)
|
|
25
|
+
|
|
26
|
+
# Note: `sklearnex.linear_model.Lasso` only has functional
|
|
27
|
+
# sycl GPU support. No GPU device will be offloaded.
|
|
28
|
+
Lasso.fit = support_usm_ndarray(queue_param=False)(Lasso.fit)
|
|
29
|
+
Lasso.predict = support_usm_ndarray(queue_param=False)(Lasso.predict)
|
|
30
|
+
Lasso.score = support_usm_ndarray(queue_param=False)(Lasso.score)
|
|
@@ -27,7 +27,6 @@ from daal4py.sklearn._utils import sklearn_check_version
|
|
|
27
27
|
|
|
28
28
|
from .._device_offload import dispatch, wrap_output_data
|
|
29
29
|
from .._utils import PatchingConditionsChain, get_patch_message, register_hyperparameters
|
|
30
|
-
from ..utils.validation import _assert_all_finite
|
|
31
30
|
|
|
32
31
|
if sklearn_check_version("1.0") and not sklearn_check_version("1.2"):
|
|
33
32
|
from sklearn.linear_model._base import _deprecate_normalize
|
|
@@ -138,19 +137,6 @@ class LinearRegression(sklearn_LinearRegression):
|
|
|
138
137
|
sample_weight=sample_weight,
|
|
139
138
|
)
|
|
140
139
|
|
|
141
|
-
def _test_type_and_finiteness(self, X_in):
|
|
142
|
-
X = X_in if isinstance(X_in, np.ndarray) else np.asarray(X_in)
|
|
143
|
-
|
|
144
|
-
dtype = X.dtype
|
|
145
|
-
if "complex" in str(type(dtype)):
|
|
146
|
-
return False
|
|
147
|
-
|
|
148
|
-
try:
|
|
149
|
-
_assert_all_finite(X)
|
|
150
|
-
except BaseException:
|
|
151
|
-
return False
|
|
152
|
-
return True
|
|
153
|
-
|
|
154
140
|
def _onedal_fit_supported(self, method_name, *data):
|
|
155
141
|
assert method_name == "fit"
|
|
156
142
|
assert len(data) == 3
|
|
@@ -174,7 +160,7 @@ class LinearRegression(sklearn_LinearRegression):
|
|
|
174
160
|
# Check if equations are well defined
|
|
175
161
|
is_underdetermined = n_samples < (n_features + int(self.fit_intercept))
|
|
176
162
|
|
|
177
|
-
|
|
163
|
+
patching_status.and_conditions(
|
|
178
164
|
[
|
|
179
165
|
(sample_weight is None, "Sample weight is not supported."),
|
|
180
166
|
(
|
|
@@ -193,17 +179,6 @@ class LinearRegression(sklearn_LinearRegression):
|
|
|
193
179
|
),
|
|
194
180
|
]
|
|
195
181
|
)
|
|
196
|
-
if not dal_ready:
|
|
197
|
-
return patching_status
|
|
198
|
-
|
|
199
|
-
if not patching_status.and_condition(
|
|
200
|
-
self._test_type_and_finiteness(X), "Input X is not supported."
|
|
201
|
-
):
|
|
202
|
-
return patching_status
|
|
203
|
-
|
|
204
|
-
patching_status.and_condition(
|
|
205
|
-
self._test_type_and_finiteness(y), "Input y is not supported."
|
|
206
|
-
)
|
|
207
182
|
|
|
208
183
|
return patching_status
|
|
209
184
|
|
|
@@ -217,19 +192,13 @@ class LinearRegression(sklearn_LinearRegression):
|
|
|
217
192
|
model_is_sparse = issparse(self.coef_) or (
|
|
218
193
|
self.fit_intercept and issparse(self.intercept_)
|
|
219
194
|
)
|
|
220
|
-
|
|
195
|
+
patching_status.and_conditions(
|
|
221
196
|
[
|
|
222
197
|
(n_samples > 0, "Number of samples is less than 1."),
|
|
223
198
|
(not issparse(data[0]), "Sparse input is not supported."),
|
|
224
199
|
(not model_is_sparse, "Sparse coefficients are not supported."),
|
|
225
200
|
]
|
|
226
201
|
)
|
|
227
|
-
if not dal_ready:
|
|
228
|
-
return patching_status
|
|
229
|
-
|
|
230
|
-
patching_status.and_condition(
|
|
231
|
-
self._test_type_and_finiteness(data[0]), "Input X is not supported."
|
|
232
|
-
)
|
|
233
202
|
|
|
234
203
|
return patching_status
|
|
235
204
|
|
|
@@ -257,7 +226,6 @@ class LinearRegression(sklearn_LinearRegression):
|
|
|
257
226
|
"accept_sparse": ["csr", "csc", "coo"],
|
|
258
227
|
"y_numeric": True,
|
|
259
228
|
"multi_output": True,
|
|
260
|
-
"force_all_finite": False,
|
|
261
229
|
}
|
|
262
230
|
if sklearn_check_version("1.2"):
|
|
263
231
|
X, y = self._validate_data(**check_params)
|