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
|
@@ -20,13 +20,13 @@ from abc import ABC
|
|
|
20
20
|
import numpy as np
|
|
21
21
|
from sklearn.exceptions import NotFittedError
|
|
22
22
|
from sklearn.linear_model import LinearRegression as sklearn_LinearRegression
|
|
23
|
+
from sklearn.metrics import r2_score
|
|
23
24
|
|
|
24
25
|
from daal4py.sklearn._n_jobs_support import control_n_jobs
|
|
25
26
|
from daal4py.sklearn._utils import sklearn_check_version
|
|
26
27
|
|
|
27
28
|
from .._device_offload import dispatch, wrap_output_data
|
|
28
29
|
from .._utils import PatchingConditionsChain, get_patch_message, register_hyperparameters
|
|
29
|
-
from ..utils.validation import _assert_all_finite
|
|
30
30
|
|
|
31
31
|
if sklearn_check_version("1.0") and not sklearn_check_version("1.2"):
|
|
32
32
|
from sklearn.linear_model._base import _deprecate_normalize
|
|
@@ -123,18 +123,19 @@ class LinearRegression(sklearn_LinearRegression):
|
|
|
123
123
|
X,
|
|
124
124
|
)
|
|
125
125
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
126
|
+
@wrap_output_data
|
|
127
|
+
def score(self, X, y, sample_weight=None):
|
|
128
|
+
return dispatch(
|
|
129
|
+
self,
|
|
130
|
+
"score",
|
|
131
|
+
{
|
|
132
|
+
"onedal": self.__class__._onedal_score,
|
|
133
|
+
"sklearn": sklearn_LinearRegression.score,
|
|
134
|
+
},
|
|
135
|
+
X,
|
|
136
|
+
y,
|
|
137
|
+
sample_weight=sample_weight,
|
|
138
|
+
)
|
|
138
139
|
|
|
139
140
|
def _onedal_fit_supported(self, method_name, *data):
|
|
140
141
|
assert method_name == "fit"
|
|
@@ -159,7 +160,7 @@ class LinearRegression(sklearn_LinearRegression):
|
|
|
159
160
|
# Check if equations are well defined
|
|
160
161
|
is_underdetermined = n_samples < (n_features + int(self.fit_intercept))
|
|
161
162
|
|
|
162
|
-
|
|
163
|
+
patching_status.and_conditions(
|
|
163
164
|
[
|
|
164
165
|
(sample_weight is None, "Sample weight is not supported."),
|
|
165
166
|
(
|
|
@@ -178,53 +179,33 @@ class LinearRegression(sklearn_LinearRegression):
|
|
|
178
179
|
),
|
|
179
180
|
]
|
|
180
181
|
)
|
|
181
|
-
if not dal_ready:
|
|
182
|
-
return patching_status
|
|
183
|
-
|
|
184
|
-
if not patching_status.and_condition(
|
|
185
|
-
self._test_type_and_finiteness(X), "Input X is not supported."
|
|
186
|
-
):
|
|
187
|
-
return patching_status
|
|
188
|
-
|
|
189
|
-
patching_status.and_condition(
|
|
190
|
-
self._test_type_and_finiteness(y), "Input y is not supported."
|
|
191
|
-
)
|
|
192
182
|
|
|
193
183
|
return patching_status
|
|
194
184
|
|
|
195
185
|
def _onedal_predict_supported(self, method_name, *data):
|
|
196
|
-
assert method_name == "predict"
|
|
197
|
-
assert len(data) == 1
|
|
198
|
-
|
|
199
186
|
class_name = self.__class__.__name__
|
|
200
187
|
patching_status = PatchingConditionsChain(
|
|
201
188
|
f"sklearn.linear_model.{class_name}.predict"
|
|
202
189
|
)
|
|
203
190
|
|
|
204
|
-
n_samples = _num_samples(
|
|
191
|
+
n_samples = _num_samples(data[0])
|
|
205
192
|
model_is_sparse = issparse(self.coef_) or (
|
|
206
193
|
self.fit_intercept and issparse(self.intercept_)
|
|
207
194
|
)
|
|
208
|
-
|
|
195
|
+
patching_status.and_conditions(
|
|
209
196
|
[
|
|
210
197
|
(n_samples > 0, "Number of samples is less than 1."),
|
|
211
|
-
(not issparse(
|
|
198
|
+
(not issparse(data[0]), "Sparse input is not supported."),
|
|
212
199
|
(not model_is_sparse, "Sparse coefficients are not supported."),
|
|
213
200
|
]
|
|
214
201
|
)
|
|
215
|
-
if not dal_ready:
|
|
216
|
-
return patching_status
|
|
217
|
-
|
|
218
|
-
patching_status.and_condition(
|
|
219
|
-
self._test_type_and_finiteness(*data), "Input X is not supported."
|
|
220
|
-
)
|
|
221
202
|
|
|
222
203
|
return patching_status
|
|
223
204
|
|
|
224
205
|
def _onedal_supported(self, method_name, *data):
|
|
225
206
|
if method_name == "fit":
|
|
226
207
|
return self._onedal_fit_supported(method_name, *data)
|
|
227
|
-
if method_name
|
|
208
|
+
if method_name in ["predict", "score"]:
|
|
228
209
|
return self._onedal_predict_supported(method_name, *data)
|
|
229
210
|
raise RuntimeError(f"Unknown method {method_name} in {self.__class__.__name__}")
|
|
230
211
|
|
|
@@ -245,7 +226,6 @@ class LinearRegression(sklearn_LinearRegression):
|
|
|
245
226
|
"accept_sparse": ["csr", "csc", "coo"],
|
|
246
227
|
"y_numeric": True,
|
|
247
228
|
"multi_output": True,
|
|
248
|
-
"force_all_finite": False,
|
|
249
229
|
}
|
|
250
230
|
if sklearn_check_version("1.2"):
|
|
251
231
|
X, y = self._validate_data(**check_params)
|
|
@@ -286,6 +266,11 @@ class LinearRegression(sklearn_LinearRegression):
|
|
|
286
266
|
res = self._onedal_estimator.predict(X, queue=queue)
|
|
287
267
|
return res
|
|
288
268
|
|
|
269
|
+
def _onedal_score(self, X, y, sample_weight=None, queue=None):
|
|
270
|
+
return r2_score(
|
|
271
|
+
y, self._onedal_predict(X, queue=queue), sample_weight=sample_weight
|
|
272
|
+
)
|
|
273
|
+
|
|
289
274
|
def get_coef_(self):
|
|
290
275
|
return self.coef_
|
|
291
276
|
|
|
@@ -314,3 +299,4 @@ class LinearRegression(sklearn_LinearRegression):
|
|
|
314
299
|
|
|
315
300
|
fit.__doc__ = sklearn_LinearRegression.fit.__doc__
|
|
316
301
|
predict.__doc__ = sklearn_LinearRegression.predict.__doc__
|
|
302
|
+
score.__doc__ = sklearn_LinearRegression.score.__doc__
|
|
@@ -21,18 +21,6 @@ from daal4py.sklearn._utils import daal_check_version
|
|
|
21
21
|
from daal4py.sklearn.linear_model.logistic_path import (
|
|
22
22
|
LogisticRegression as LogisticRegression_daal4py,
|
|
23
23
|
)
|
|
24
|
-
from daal4py.sklearn.linear_model.logistic_path import daal4py_fit, daal4py_predict
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
class BaseLogisticRegression(ABC):
|
|
28
|
-
def _save_attributes(self):
|
|
29
|
-
assert hasattr(self, "_onedal_estimator")
|
|
30
|
-
self.classes_ = self._onedal_estimator.classes_
|
|
31
|
-
self.coef_ = self._onedal_estimator.coef_
|
|
32
|
-
self.intercept_ = self._onedal_estimator.intercept_
|
|
33
|
-
self.n_features_in_ = self._onedal_estimator.n_features_in_
|
|
34
|
-
self.n_iter_ = self._onedal_estimator.n_iter_
|
|
35
|
-
|
|
36
24
|
|
|
37
25
|
if daal_check_version((2024, "P", 1)):
|
|
38
26
|
import numpy as np
|
|
@@ -40,16 +28,27 @@ if daal_check_version((2024, "P", 1)):
|
|
|
40
28
|
from sklearn.linear_model import LogisticRegression as sklearn_LogisticRegression
|
|
41
29
|
from sklearn.metrics import accuracy_score
|
|
42
30
|
from sklearn.utils.multiclass import type_of_target
|
|
43
|
-
from sklearn.utils.validation import check_X_y
|
|
31
|
+
from sklearn.utils.validation import check_array, check_is_fitted, check_X_y
|
|
44
32
|
|
|
45
33
|
from daal4py.sklearn._n_jobs_support import control_n_jobs
|
|
46
34
|
from daal4py.sklearn._utils import sklearn_check_version
|
|
35
|
+
from daal4py.sklearn.linear_model.logistic_path import daal4py_fit, daal4py_predict
|
|
47
36
|
from onedal.linear_model import LogisticRegression as onedal_LogisticRegression
|
|
48
37
|
from onedal.utils import _num_samples
|
|
49
38
|
|
|
50
39
|
from .._device_offload import dispatch, wrap_output_data
|
|
51
40
|
from .._utils import PatchingConditionsChain, get_patch_message
|
|
52
|
-
|
|
41
|
+
|
|
42
|
+
_sparsity_enabled = daal_check_version((2024, "P", 700))
|
|
43
|
+
|
|
44
|
+
class BaseLogisticRegression(ABC):
|
|
45
|
+
def _save_attributes(self):
|
|
46
|
+
assert hasattr(self, "_onedal_estimator")
|
|
47
|
+
self.classes_ = self._onedal_estimator.classes_
|
|
48
|
+
self.coef_ = self._onedal_estimator.coef_
|
|
49
|
+
self.intercept_ = self._onedal_estimator.intercept_
|
|
50
|
+
self.n_features_in_ = self._onedal_estimator.n_features_in_
|
|
51
|
+
self.n_iter_ = self._onedal_estimator.n_iter_
|
|
53
52
|
|
|
54
53
|
@control_n_jobs(
|
|
55
54
|
decorated_methods=[
|
|
@@ -82,7 +81,7 @@ if daal_check_version((2024, "P", 1)):
|
|
|
82
81
|
random_state=None,
|
|
83
82
|
solver="lbfgs",
|
|
84
83
|
max_iter=100,
|
|
85
|
-
multi_class="auto",
|
|
84
|
+
multi_class="deprecated" if sklearn_check_version("1.5") else "auto",
|
|
86
85
|
verbose=0,
|
|
87
86
|
warm_start=False,
|
|
88
87
|
n_jobs=None,
|
|
@@ -109,8 +108,6 @@ if daal_check_version((2024, "P", 1)):
|
|
|
109
108
|
_onedal_cpu_fit = daal4py_fit
|
|
110
109
|
|
|
111
110
|
def fit(self, X, y, sample_weight=None):
|
|
112
|
-
if sklearn_check_version("1.0"):
|
|
113
|
-
self._check_feature_names(X, reset=True)
|
|
114
111
|
if sklearn_check_version("1.2"):
|
|
115
112
|
self._validate_params()
|
|
116
113
|
dispatch(
|
|
@@ -128,8 +125,6 @@ if daal_check_version((2024, "P", 1)):
|
|
|
128
125
|
|
|
129
126
|
@wrap_output_data
|
|
130
127
|
def predict(self, X):
|
|
131
|
-
if sklearn_check_version("1.0"):
|
|
132
|
-
self._check_feature_names(X, reset=False)
|
|
133
128
|
return dispatch(
|
|
134
129
|
self,
|
|
135
130
|
"predict",
|
|
@@ -142,11 +137,9 @@ if daal_check_version((2024, "P", 1)):
|
|
|
142
137
|
|
|
143
138
|
@wrap_output_data
|
|
144
139
|
def predict_proba(self, X):
|
|
145
|
-
if sklearn_check_version("1.0"):
|
|
146
|
-
self._check_feature_names(X, reset=False)
|
|
147
140
|
return dispatch(
|
|
148
141
|
self,
|
|
149
|
-
"
|
|
142
|
+
"predict_proba",
|
|
150
143
|
{
|
|
151
144
|
"onedal": self.__class__._onedal_predict_proba,
|
|
152
145
|
"sklearn": sklearn_LogisticRegression.predict_proba,
|
|
@@ -156,11 +149,9 @@ if daal_check_version((2024, "P", 1)):
|
|
|
156
149
|
|
|
157
150
|
@wrap_output_data
|
|
158
151
|
def predict_log_proba(self, X):
|
|
159
|
-
if sklearn_check_version("1.0"):
|
|
160
|
-
self._check_feature_names(X, reset=False)
|
|
161
152
|
return dispatch(
|
|
162
153
|
self,
|
|
163
|
-
"
|
|
154
|
+
"predict_log_proba",
|
|
164
155
|
{
|
|
165
156
|
"onedal": self.__class__._onedal_predict_log_proba,
|
|
166
157
|
"sklearn": sklearn_LogisticRegression.predict_log_proba,
|
|
@@ -170,8 +161,6 @@ if daal_check_version((2024, "P", 1)):
|
|
|
170
161
|
|
|
171
162
|
@wrap_output_data
|
|
172
163
|
def score(self, X, y, sample_weight=None):
|
|
173
|
-
if sklearn_check_version("1.0"):
|
|
174
|
-
self._check_feature_names(X, reset=False)
|
|
175
164
|
return dispatch(
|
|
176
165
|
self,
|
|
177
166
|
"score",
|
|
@@ -189,17 +178,6 @@ if daal_check_version((2024, "P", 1)):
|
|
|
189
178
|
y, self._onedal_predict(X, queue=queue), sample_weight=sample_weight
|
|
190
179
|
)
|
|
191
180
|
|
|
192
|
-
def _test_type_and_finiteness(self, X_in):
|
|
193
|
-
X = np.asarray(X_in)
|
|
194
|
-
|
|
195
|
-
if np.iscomplexobj(X):
|
|
196
|
-
return False
|
|
197
|
-
try:
|
|
198
|
-
_assert_all_finite(X)
|
|
199
|
-
except BaseException:
|
|
200
|
-
return False
|
|
201
|
-
return True
|
|
202
|
-
|
|
203
181
|
def _onedal_gpu_fit_supported(self, method_name, *data):
|
|
204
182
|
assert method_name == "fit"
|
|
205
183
|
assert len(data) == 3
|
|
@@ -210,7 +188,12 @@ if daal_check_version((2024, "P", 1)):
|
|
|
210
188
|
f"sklearn.linear_model.{class_name}.fit"
|
|
211
189
|
)
|
|
212
190
|
|
|
213
|
-
|
|
191
|
+
target_type = (
|
|
192
|
+
type_of_target(y, input_name="y")
|
|
193
|
+
if sklearn_check_version("1.1")
|
|
194
|
+
else type_of_target(y)
|
|
195
|
+
)
|
|
196
|
+
patching_status.and_conditions(
|
|
214
197
|
[
|
|
215
198
|
(self.penalty == "l2", "Only l2 penalty is supported."),
|
|
216
199
|
(self.dual == False, "dual=True is not supported."),
|
|
@@ -228,24 +211,12 @@ if daal_check_version((2024, "P", 1)):
|
|
|
228
211
|
(self.l1_ratio is None, "l1 ratio is not supported."),
|
|
229
212
|
(sample_weight is None, "Sample weight is not supported."),
|
|
230
213
|
(
|
|
231
|
-
|
|
214
|
+
target_type == "binary",
|
|
232
215
|
"Only binary classification is supported",
|
|
233
216
|
),
|
|
234
217
|
]
|
|
235
218
|
)
|
|
236
219
|
|
|
237
|
-
if not dal_ready:
|
|
238
|
-
return patching_status
|
|
239
|
-
|
|
240
|
-
if not patching_status.and_condition(
|
|
241
|
-
self._test_type_and_finiteness(X), "Input X is not supported."
|
|
242
|
-
):
|
|
243
|
-
return patching_status
|
|
244
|
-
|
|
245
|
-
patching_status.and_condition(
|
|
246
|
-
self._test_type_and_finiteness(y), "Input y is not supported."
|
|
247
|
-
)
|
|
248
|
-
|
|
249
220
|
return patching_status
|
|
250
221
|
|
|
251
222
|
def _onedal_gpu_predict_supported(self, method_name, *data):
|
|
@@ -269,7 +240,7 @@ if daal_check_version((2024, "P", 1)):
|
|
|
269
240
|
[
|
|
270
241
|
(n_samples > 0, "Number of samples is less than 1."),
|
|
271
242
|
(
|
|
272
|
-
not any([issparse(i) for i in data]),
|
|
243
|
+
(not any([issparse(i) for i in data])) or _sparsity_enabled,
|
|
273
244
|
"Sparse input is not supported.",
|
|
274
245
|
),
|
|
275
246
|
(not model_is_sparse, "Sparse coefficients are not supported."),
|
|
@@ -279,12 +250,6 @@ if daal_check_version((2024, "P", 1)):
|
|
|
279
250
|
),
|
|
280
251
|
]
|
|
281
252
|
)
|
|
282
|
-
if not dal_ready:
|
|
283
|
-
return patching_status
|
|
284
|
-
|
|
285
|
-
patching_status.and_condition(
|
|
286
|
-
self._test_type_and_finiteness(*data), "Input X is not supported."
|
|
287
|
-
)
|
|
288
253
|
|
|
289
254
|
return patching_status
|
|
290
255
|
|
|
@@ -315,24 +280,29 @@ if daal_check_version((2024, "P", 1)):
|
|
|
315
280
|
}
|
|
316
281
|
self._onedal_estimator = onedal_LogisticRegression(**onedal_params)
|
|
317
282
|
|
|
318
|
-
def _onedal_fit(self, X, y, sample_weight, queue=None):
|
|
283
|
+
def _onedal_fit(self, X, y, sample_weight=None, queue=None):
|
|
319
284
|
if queue is None or queue.sycl_device.is_cpu:
|
|
320
285
|
return self._onedal_cpu_fit(X, y, sample_weight)
|
|
321
286
|
|
|
322
287
|
assert sample_weight is None
|
|
323
288
|
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
if sklearn_check_version("1.2"):
|
|
333
|
-
X, y = self._validate_data(**check_params)
|
|
289
|
+
if sklearn_check_version("1.0"):
|
|
290
|
+
X, y = self._validate_data(
|
|
291
|
+
X,
|
|
292
|
+
y,
|
|
293
|
+
accept_sparse=_sparsity_enabled,
|
|
294
|
+
accept_large_sparse=_sparsity_enabled,
|
|
295
|
+
dtype=[np.float64, np.float32],
|
|
296
|
+
)
|
|
334
297
|
else:
|
|
335
|
-
X, y = check_X_y(
|
|
298
|
+
X, y = check_X_y(
|
|
299
|
+
X,
|
|
300
|
+
y,
|
|
301
|
+
accept_sparse=_sparsity_enabled,
|
|
302
|
+
accept_large_sparse=_sparsity_enabled,
|
|
303
|
+
dtype=[np.float64, np.float32],
|
|
304
|
+
)
|
|
305
|
+
|
|
336
306
|
self._initialize_onedal_estimator()
|
|
337
307
|
try:
|
|
338
308
|
self._onedal_estimator.fit(X, y, queue=queue)
|
|
@@ -350,7 +320,23 @@ if daal_check_version((2024, "P", 1)):
|
|
|
350
320
|
if queue is None or queue.sycl_device.is_cpu:
|
|
351
321
|
return daal4py_predict(self, X, "computeClassLabels")
|
|
352
322
|
|
|
353
|
-
|
|
323
|
+
check_is_fitted(self)
|
|
324
|
+
if sklearn_check_version("1.0"):
|
|
325
|
+
X = self._validate_data(
|
|
326
|
+
X,
|
|
327
|
+
reset=False,
|
|
328
|
+
accept_sparse=_sparsity_enabled,
|
|
329
|
+
accept_large_sparse=_sparsity_enabled,
|
|
330
|
+
dtype=[np.float64, np.float32],
|
|
331
|
+
)
|
|
332
|
+
else:
|
|
333
|
+
X = check_array(
|
|
334
|
+
X,
|
|
335
|
+
accept_sparse=_sparsity_enabled,
|
|
336
|
+
accept_large_sparse=_sparsity_enabled,
|
|
337
|
+
dtype=[np.float64, np.float32],
|
|
338
|
+
)
|
|
339
|
+
|
|
354
340
|
assert hasattr(self, "_onedal_estimator")
|
|
355
341
|
return self._onedal_estimator.predict(X, queue=queue)
|
|
356
342
|
|
|
@@ -358,7 +344,23 @@ if daal_check_version((2024, "P", 1)):
|
|
|
358
344
|
if queue is None or queue.sycl_device.is_cpu:
|
|
359
345
|
return daal4py_predict(self, X, "computeClassProbabilities")
|
|
360
346
|
|
|
361
|
-
|
|
347
|
+
check_is_fitted(self)
|
|
348
|
+
if sklearn_check_version("1.0"):
|
|
349
|
+
X = self._validate_data(
|
|
350
|
+
X,
|
|
351
|
+
reset=False,
|
|
352
|
+
accept_sparse=_sparsity_enabled,
|
|
353
|
+
accept_large_sparse=_sparsity_enabled,
|
|
354
|
+
dtype=[np.float64, np.float32],
|
|
355
|
+
)
|
|
356
|
+
else:
|
|
357
|
+
X = check_array(
|
|
358
|
+
X,
|
|
359
|
+
accept_sparse=_sparsity_enabled,
|
|
360
|
+
accept_large_sparse=_sparsity_enabled,
|
|
361
|
+
dtype=[np.float64, np.float32],
|
|
362
|
+
)
|
|
363
|
+
|
|
362
364
|
assert hasattr(self, "_onedal_estimator")
|
|
363
365
|
return self._onedal_estimator.predict_proba(X, queue=queue)
|
|
364
366
|
|
|
@@ -366,7 +368,23 @@ if daal_check_version((2024, "P", 1)):
|
|
|
366
368
|
if queue is None or queue.sycl_device.is_cpu:
|
|
367
369
|
return daal4py_predict(self, X, "computeClassLogProbabilities")
|
|
368
370
|
|
|
369
|
-
|
|
371
|
+
check_is_fitted(self)
|
|
372
|
+
if sklearn_check_version("1.0"):
|
|
373
|
+
X = self._validate_data(
|
|
374
|
+
X,
|
|
375
|
+
reset=False,
|
|
376
|
+
accept_sparse=_sparsity_enabled,
|
|
377
|
+
accept_large_sparse=_sparsity_enabled,
|
|
378
|
+
dtype=[np.float64, np.float32],
|
|
379
|
+
)
|
|
380
|
+
else:
|
|
381
|
+
X = check_array(
|
|
382
|
+
X,
|
|
383
|
+
accept_sparse=_sparsity_enabled,
|
|
384
|
+
accept_large_sparse=_sparsity_enabled,
|
|
385
|
+
dtype=[np.float64, np.float32],
|
|
386
|
+
)
|
|
387
|
+
|
|
370
388
|
assert hasattr(self, "_onedal_estimator")
|
|
371
389
|
return self._onedal_estimator.predict_log_proba(X, queue=queue)
|
|
372
390
|
|
|
@@ -15,3 +15,10 @@
|
|
|
15
15
|
# ===============================================================================
|
|
16
16
|
|
|
17
17
|
from daal4py.sklearn.linear_model import Ridge
|
|
18
|
+
from onedal._device_offload import support_usm_ndarray
|
|
19
|
+
|
|
20
|
+
# Note: `sklearnex.linear_model.Ridge` only has functional
|
|
21
|
+
# sycl GPU support. No GPU device will be offloaded.
|
|
22
|
+
Ridge.fit = support_usm_ndarray(queue_param=False)(Ridge.fit)
|
|
23
|
+
Ridge.predict = support_usm_ndarray(queue_param=False)(Ridge.predict)
|
|
24
|
+
Ridge.score = support_usm_ndarray(queue_param=False)(Ridge.score)
|
|
@@ -47,7 +47,7 @@ def test_sklearnex_fit_on_gold_data(dataframe, queue, fit_intercept, macro_block
|
|
|
47
47
|
|
|
48
48
|
y_pred = inclin.predict(X_df)
|
|
49
49
|
|
|
50
|
-
tol = 2e-6 if dtype == np.float32 else 1e-7
|
|
50
|
+
tol = 2e-6 if y_pred.dtype == np.float32 else 1e-7
|
|
51
51
|
assert_allclose(inclin.coef_, [1], atol=tol)
|
|
52
52
|
if fit_intercept:
|
|
53
53
|
assert_allclose(inclin.intercept_, [0], atol=tol)
|
|
@@ -82,15 +82,15 @@ def test_sklearnex_partial_fit_on_gold_data(
|
|
|
82
82
|
)
|
|
83
83
|
inclin.partial_fit(X_split_df, y_split_df)
|
|
84
84
|
|
|
85
|
+
X_df = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
86
|
+
y_pred = inclin.predict(X_df)
|
|
87
|
+
|
|
85
88
|
assert inclin.n_features_in_ == 1
|
|
86
|
-
tol = 2e-6 if dtype == np.float32 else 1e-7
|
|
89
|
+
tol = 2e-6 if y_pred.dtype == np.float32 else 1e-7
|
|
87
90
|
assert_allclose(inclin.coef_, [[1]], atol=tol)
|
|
88
91
|
if fit_intercept:
|
|
89
92
|
assert_allclose(inclin.intercept_, 3, atol=tol)
|
|
90
93
|
|
|
91
|
-
X_df = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
92
|
-
y_pred = inclin.predict(X_df)
|
|
93
|
-
|
|
94
94
|
assert_allclose(_as_numpy(y_pred), y, atol=tol)
|
|
95
95
|
|
|
96
96
|
|
|
@@ -122,15 +122,15 @@ def test_sklearnex_partial_fit_multitarget_on_gold_data(
|
|
|
122
122
|
)
|
|
123
123
|
inclin.partial_fit(X_split_df, y_split_df)
|
|
124
124
|
|
|
125
|
+
X_df = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
126
|
+
y_pred = inclin.predict(X_df)
|
|
127
|
+
|
|
125
128
|
assert inclin.n_features_in_ == 2
|
|
126
|
-
tol = 7e-6 if dtype == np.float32 else 1e-7
|
|
129
|
+
tol = 7e-6 if y_pred.dtype == np.float32 else 1e-7
|
|
127
130
|
assert_allclose(inclin.coef_, [1.0, 2.0], atol=tol)
|
|
128
131
|
if fit_intercept:
|
|
129
132
|
assert_allclose(inclin.intercept_, 3.0, atol=tol)
|
|
130
133
|
|
|
131
|
-
X_df = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
132
|
-
y_pred = inclin.predict(X_df)
|
|
133
|
-
|
|
134
134
|
assert_allclose(_as_numpy(y_pred), y, atol=tol)
|
|
135
135
|
|
|
136
136
|
|
|
@@ -181,7 +181,7 @@ def test_sklearnex_partial_fit_on_random_data(
|
|
|
181
181
|
)
|
|
182
182
|
inclin.partial_fit(X_split_df, y_split_df)
|
|
183
183
|
|
|
184
|
-
tol = 1e-4 if dtype == np.float32 else 1e-7
|
|
184
|
+
tol = 1e-4 if inclin.coef_.dtype == np.float32 else 1e-7
|
|
185
185
|
assert_allclose(coef, inclin.coef_.T, atol=tol)
|
|
186
186
|
|
|
187
187
|
if fit_intercept:
|
|
@@ -20,6 +20,10 @@ from numpy.testing import assert_allclose
|
|
|
20
20
|
from sklearn.datasets import make_regression
|
|
21
21
|
|
|
22
22
|
from daal4py.sklearn._utils import daal_check_version
|
|
23
|
+
from daal4py.sklearn.linear_model.tests.test_ridge import (
|
|
24
|
+
_test_multivariate_ridge_alpha_shape,
|
|
25
|
+
_test_multivariate_ridge_coefficients,
|
|
26
|
+
)
|
|
23
27
|
from onedal.tests.utils._dataframes_support import (
|
|
24
28
|
_as_numpy,
|
|
25
29
|
_convert_to_dataframe,
|
|
@@ -52,37 +56,46 @@ def test_sklearnex_import_linear(dataframe, queue, dtype, macro_block):
|
|
|
52
56
|
assert "sklearnex" in linreg.__module__
|
|
53
57
|
assert linreg.n_features_in_ == 2
|
|
54
58
|
|
|
55
|
-
tol = 1e-5 if dtype == np.float32 else 1e-7
|
|
59
|
+
tol = 1e-5 if _as_numpy(linreg.coef_).dtype == np.float32 else 1e-7
|
|
56
60
|
assert_allclose(_as_numpy(linreg.intercept_), 3.0, rtol=tol)
|
|
57
61
|
assert_allclose(_as_numpy(linreg.coef_), [1.0, 2.0], rtol=tol)
|
|
58
62
|
|
|
59
63
|
|
|
60
|
-
|
|
64
|
+
@pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
|
|
65
|
+
def test_sklearnex_import_ridge(dataframe, queue):
|
|
61
66
|
from sklearnex.linear_model import Ridge
|
|
62
67
|
|
|
63
68
|
X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
|
|
64
69
|
y = np.dot(X, np.array([1, 2])) + 3
|
|
70
|
+
X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
71
|
+
y = _convert_to_dataframe(y, sycl_queue=queue, target_df=dataframe)
|
|
65
72
|
ridgereg = Ridge().fit(X, y)
|
|
66
73
|
assert "daal4py" in ridgereg.__module__
|
|
67
74
|
assert_allclose(ridgereg.intercept_, 4.5)
|
|
68
75
|
assert_allclose(ridgereg.coef_, [0.8, 1.4])
|
|
69
76
|
|
|
70
77
|
|
|
71
|
-
|
|
78
|
+
@pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
|
|
79
|
+
def test_sklearnex_import_lasso(dataframe, queue):
|
|
72
80
|
from sklearnex.linear_model import Lasso
|
|
73
81
|
|
|
74
82
|
X = [[0, 0], [1, 1], [2, 2]]
|
|
75
83
|
y = [0, 1, 2]
|
|
84
|
+
X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
85
|
+
y = _convert_to_dataframe(y, sycl_queue=queue, target_df=dataframe)
|
|
76
86
|
lasso = Lasso(alpha=0.1).fit(X, y)
|
|
77
87
|
assert "daal4py" in lasso.__module__
|
|
78
88
|
assert_allclose(lasso.intercept_, 0.15)
|
|
79
89
|
assert_allclose(lasso.coef_, [0.85, 0.0])
|
|
80
90
|
|
|
81
91
|
|
|
82
|
-
|
|
92
|
+
@pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
|
|
93
|
+
def test_sklearnex_import_elastic(dataframe, queue):
|
|
83
94
|
from sklearnex.linear_model import ElasticNet
|
|
84
95
|
|
|
85
96
|
X, y = make_regression(n_features=2, random_state=0)
|
|
97
|
+
X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
|
|
98
|
+
y = _convert_to_dataframe(y, sycl_queue=queue, target_df=dataframe)
|
|
86
99
|
elasticnet = ElasticNet(random_state=0).fit(X, y)
|
|
87
100
|
assert "daal4py" in elasticnet.__module__
|
|
88
101
|
assert_allclose(elasticnet.intercept_, 1.451, atol=1e-3)
|
|
@@ -113,5 +126,17 @@ def test_sklearnex_reconstruct_model(dataframe, queue, dtype):
|
|
|
113
126
|
|
|
114
127
|
y_pred = linreg.predict(X)
|
|
115
128
|
|
|
116
|
-
tol = 1e-5 if dtype == np.float32 else 1e-7
|
|
129
|
+
tol = 1e-5 if _as_numpy(y_pred).dtype == np.float32 else 1e-7
|
|
117
130
|
assert_allclose(gtr, _as_numpy(y_pred), rtol=tol)
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
def test_sklearnex_multivariate_ridge_coefs():
|
|
134
|
+
from sklearnex.linear_model import Ridge
|
|
135
|
+
|
|
136
|
+
_test_multivariate_ridge_coefficients(Ridge, random_state=0)
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
def test_sklearnex_multivariate_ridge_alpha_shape():
|
|
140
|
+
from sklearnex.linear_model import Ridge
|
|
141
|
+
|
|
142
|
+
_test_multivariate_ridge_alpha_shape(Ridge, random_state=0)
|
|
@@ -14,8 +14,11 @@
|
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
# ===============================================================================
|
|
16
16
|
|
|
17
|
+
import numpy as np
|
|
17
18
|
import pytest
|
|
18
|
-
from
|
|
19
|
+
from numpy.testing import assert_allclose, assert_array_equal
|
|
20
|
+
from scipy.sparse import csr_matrix
|
|
21
|
+
from sklearn.datasets import load_breast_cancer, load_iris, make_classification
|
|
19
22
|
from sklearn.metrics import accuracy_score
|
|
20
23
|
from sklearn.model_selection import train_test_split
|
|
21
24
|
|
|
@@ -24,7 +27,9 @@ from onedal.tests.utils._dataframes_support import (
|
|
|
24
27
|
_as_numpy,
|
|
25
28
|
_convert_to_dataframe,
|
|
26
29
|
get_dataframes_and_queues,
|
|
30
|
+
get_queues,
|
|
27
31
|
)
|
|
32
|
+
from sklearnex import config_context
|
|
28
33
|
|
|
29
34
|
|
|
30
35
|
def prepare_input(X, y, dataframe, queue):
|
|
@@ -38,8 +43,7 @@ def prepare_input(X, y, dataframe, queue):
|
|
|
38
43
|
|
|
39
44
|
|
|
40
45
|
@pytest.mark.parametrize(
|
|
41
|
-
"dataframe,queue",
|
|
42
|
-
get_dataframes_and_queues(device_filter_="cpu"),
|
|
46
|
+
"dataframe,queue", get_dataframes_and_queues(device_filter_="cpu")
|
|
43
47
|
)
|
|
44
48
|
def test_sklearnex_multiclass_classification(dataframe, queue):
|
|
45
49
|
from sklearnex.linear_model import LogisticRegression
|
|
@@ -89,3 +93,41 @@ def test_sklearnex_binary_classification(dataframe, queue):
|
|
|
89
93
|
|
|
90
94
|
y_pred = _as_numpy(logreg.predict(X_test))
|
|
91
95
|
assert accuracy_score(y_test, y_pred) > 0.95
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
if daal_check_version((2024, "P", 700)):
|
|
99
|
+
|
|
100
|
+
@pytest.mark.parametrize("queue", get_queues("gpu"))
|
|
101
|
+
@pytest.mark.parametrize("dtype", [np.float32, np.float64])
|
|
102
|
+
@pytest.mark.parametrize(
|
|
103
|
+
"dims", [(3007, 17, 0.05), (50000, 100, 0.01), (512, 10, 0.5)]
|
|
104
|
+
)
|
|
105
|
+
def test_csr(queue, dtype, dims):
|
|
106
|
+
from sklearnex.linear_model import LogisticRegression
|
|
107
|
+
|
|
108
|
+
n, p, density = dims
|
|
109
|
+
|
|
110
|
+
# Create sparse dataset for classification
|
|
111
|
+
X, y = make_classification(n, p, random_state=42)
|
|
112
|
+
X = X.astype(dtype)
|
|
113
|
+
y = y.astype(dtype)
|
|
114
|
+
np.random.seed(2007 + n + p)
|
|
115
|
+
mask = np.random.binomial(1, density, (n, p))
|
|
116
|
+
X = X * mask
|
|
117
|
+
X_sp = csr_matrix(X)
|
|
118
|
+
|
|
119
|
+
model = LogisticRegression(fit_intercept=True, solver="newton-cg")
|
|
120
|
+
model_sp = LogisticRegression(fit_intercept=True, solver="newton-cg")
|
|
121
|
+
|
|
122
|
+
with config_context(target_offload="gpu:0"):
|
|
123
|
+
model.fit(X, y)
|
|
124
|
+
pred = model.predict(X)
|
|
125
|
+
prob = model.predict_proba(X)
|
|
126
|
+
model_sp.fit(X_sp, y)
|
|
127
|
+
pred_sp = model_sp.predict(X_sp)
|
|
128
|
+
prob_sp = model_sp.predict_proba(X_sp)
|
|
129
|
+
|
|
130
|
+
assert_allclose(pred, pred_sp)
|
|
131
|
+
assert_allclose(prob, prob_sp)
|
|
132
|
+
assert_allclose(model.coef_, model_sp.coef_, rtol=1e-4)
|
|
133
|
+
assert_allclose(model.intercept_, model_sp.intercept_, rtol=1e-4)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# ===============================================================================
|
|
2
|
+
# Copyright 2021 Intel Corporation
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
# ===============================================================================
|
|
16
|
+
|
|
17
|
+
from daal4py.sklearn.manifold import TSNE
|
|
18
|
+
from onedal._device_offload import support_usm_ndarray
|
|
19
|
+
|
|
20
|
+
TSNE.fit = support_usm_ndarray(queue_param=False)(TSNE.fit)
|
|
21
|
+
TSNE.fit_transform = support_usm_ndarray(queue_param=False)(TSNE.fit_transform)
|