scikit-learn-intelex 2024.5.0__py39-none-win_amd64.whl → 2024.7.0__py39-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
|
@@ -15,3 +15,8 @@
|
|
|
15
15
|
# ===============================================================================
|
|
16
16
|
|
|
17
17
|
from daal4py.sklearn.metrics import pairwise_distances
|
|
18
|
+
from onedal._device_offload import support_usm_ndarray
|
|
19
|
+
|
|
20
|
+
pairwise_distances = support_usm_ndarray(freefunc=True, queue_param=False)(
|
|
21
|
+
pairwise_distances
|
|
22
|
+
)
|
|
@@ -15,3 +15,6 @@
|
|
|
15
15
|
# ===============================================================================
|
|
16
16
|
|
|
17
17
|
from daal4py.sklearn.metrics import roc_auc_score
|
|
18
|
+
from onedal._device_offload import support_usm_ndarray
|
|
19
|
+
|
|
20
|
+
roc_auc_score = support_usm_ndarray(freefunc=True, queue_param=False)(roc_auc_score)
|
|
@@ -15,3 +15,6 @@
|
|
|
15
15
|
# ===============================================================================
|
|
16
16
|
|
|
17
17
|
from daal4py.sklearn.model_selection import train_test_split
|
|
18
|
+
from onedal._device_offload import support_usm_ndarray
|
|
19
|
+
|
|
20
|
+
train_test_split = support_usm_ndarray(freefunc=True, queue_param=False)(train_test_split)
|
|
@@ -97,6 +97,15 @@ class LocalOutlierFactor(KNeighborsDispatchingBase, sklearn_LocalOutlierFactor):
|
|
|
97
97
|
self.negative_outlier_factor_, 100.0 * self.contamination
|
|
98
98
|
)
|
|
99
99
|
|
|
100
|
+
# adoption of warning for data with duplicated samples from
|
|
101
|
+
# https://github.com/scikit-learn/scikit-learn/pull/28773
|
|
102
|
+
if sklearn_check_version("1.6"):
|
|
103
|
+
if np.min(self.negative_outlier_factor_) < -1e7 and not self.novelty:
|
|
104
|
+
warnings.warn(
|
|
105
|
+
"Duplicate values are leading to incorrect results. "
|
|
106
|
+
"Increase the number of neighbors for more accurate results."
|
|
107
|
+
)
|
|
108
|
+
|
|
100
109
|
return self
|
|
101
110
|
|
|
102
111
|
def fit(self, X, y=None):
|
|
@@ -19,14 +19,16 @@ import warnings
|
|
|
19
19
|
import numpy as np
|
|
20
20
|
from scipy import sparse as sp
|
|
21
21
|
from sklearn.neighbors._ball_tree import BallTree
|
|
22
|
-
from sklearn.neighbors._base import VALID_METRICS
|
|
22
|
+
from sklearn.neighbors._base import VALID_METRICS, KNeighborsMixin
|
|
23
23
|
from sklearn.neighbors._base import NeighborsBase as sklearn_NeighborsBase
|
|
24
24
|
from sklearn.neighbors._kd_tree import KDTree
|
|
25
|
+
from sklearn.utils.validation import check_is_fitted
|
|
25
26
|
|
|
26
27
|
from daal4py.sklearn._utils import sklearn_check_version
|
|
27
28
|
from onedal.utils import _check_array, _num_features, _num_samples
|
|
28
29
|
|
|
29
30
|
from .._utils import PatchingConditionsChain
|
|
31
|
+
from ..utils import get_namespace
|
|
30
32
|
|
|
31
33
|
|
|
32
34
|
class KNeighborsDispatchingBase:
|
|
@@ -147,6 +149,10 @@ class KNeighborsDispatchingBase:
|
|
|
147
149
|
patching_status = PatchingConditionsChain(
|
|
148
150
|
f"sklearn.neighbors.{class_name}.{method_name}"
|
|
149
151
|
)
|
|
152
|
+
if not patching_status.and_condition(
|
|
153
|
+
"radius" not in method_name, "RadiusNeighbors not implemented in sklearnex"
|
|
154
|
+
):
|
|
155
|
+
return patching_status
|
|
150
156
|
|
|
151
157
|
if not patching_status.and_condition(
|
|
152
158
|
not isinstance(data[0], (KDTree, BallTree, sklearn_NeighborsBase)),
|
|
@@ -264,3 +270,41 @@ class KNeighborsDispatchingBase:
|
|
|
264
270
|
|
|
265
271
|
def _onedal_cpu_supported(self, method_name, *data):
|
|
266
272
|
return self._onedal_supported("cpu", method_name, *data)
|
|
273
|
+
|
|
274
|
+
def kneighbors_graph(self, X=None, n_neighbors=None, mode="connectivity"):
|
|
275
|
+
check_is_fitted(self)
|
|
276
|
+
if n_neighbors is None:
|
|
277
|
+
n_neighbors = self.n_neighbors
|
|
278
|
+
|
|
279
|
+
# check the input only in self.kneighbors
|
|
280
|
+
|
|
281
|
+
# construct CSR matrix representation of the k-NN graph
|
|
282
|
+
if mode == "connectivity":
|
|
283
|
+
A_ind = self.kneighbors(X, n_neighbors, return_distance=False)
|
|
284
|
+
xp, _ = get_namespace(A_ind)
|
|
285
|
+
n_queries = A_ind.shape[0]
|
|
286
|
+
A_data = xp.ones(n_queries * n_neighbors)
|
|
287
|
+
|
|
288
|
+
elif mode == "distance":
|
|
289
|
+
A_data, A_ind = self.kneighbors(X, n_neighbors, return_distance=True)
|
|
290
|
+
xp, _ = get_namespace(A_ind)
|
|
291
|
+
A_data = xp.reshape(A_data, (-1,))
|
|
292
|
+
|
|
293
|
+
else:
|
|
294
|
+
raise ValueError(
|
|
295
|
+
'Unsupported mode, must be one of "connectivity", '
|
|
296
|
+
f'or "distance" but got "{mode}" instead'
|
|
297
|
+
)
|
|
298
|
+
|
|
299
|
+
n_queries = A_ind.shape[0]
|
|
300
|
+
n_samples_fit = self.n_samples_fit_
|
|
301
|
+
n_nonzero = n_queries * n_neighbors
|
|
302
|
+
A_indptr = xp.arange(0, n_nonzero + 1, n_neighbors)
|
|
303
|
+
|
|
304
|
+
kneighbors_graph = sp.csr_matrix(
|
|
305
|
+
(A_data, xp.reshape(A_ind, (-1,)), A_indptr), shape=(n_queries, n_samples_fit)
|
|
306
|
+
)
|
|
307
|
+
|
|
308
|
+
return kneighbors_graph
|
|
309
|
+
|
|
310
|
+
kneighbors_graph.__doc__ = KNeighborsMixin.kneighbors_graph.__doc__
|
|
@@ -32,7 +32,7 @@ from .common import KNeighborsDispatchingBase
|
|
|
32
32
|
@control_n_jobs(
|
|
33
33
|
decorated_methods=["fit", "predict", "predict_proba", "kneighbors", "score"]
|
|
34
34
|
)
|
|
35
|
-
class KNeighborsClassifier(
|
|
35
|
+
class KNeighborsClassifier(KNeighborsDispatchingBase, sklearn_KNeighborsClassifier):
|
|
36
36
|
__doc__ = sklearn_KNeighborsClassifier.__doc__
|
|
37
37
|
if sklearn_check_version("1.2"):
|
|
38
38
|
_parameter_constraints: dict = {
|
|
@@ -169,24 +169,6 @@ class KNeighborsClassifier(sklearn_KNeighborsClassifier, KNeighborsDispatchingBa
|
|
|
169
169
|
return_distance=return_distance,
|
|
170
170
|
)
|
|
171
171
|
|
|
172
|
-
@wrap_output_data
|
|
173
|
-
def radius_neighbors(
|
|
174
|
-
self, X=None, radius=None, return_distance=True, sort_results=False
|
|
175
|
-
):
|
|
176
|
-
_onedal_estimator = getattr(self, "_onedal_estimator", None)
|
|
177
|
-
|
|
178
|
-
if (
|
|
179
|
-
_onedal_estimator is not None
|
|
180
|
-
or getattr(self, "_tree", 0) is None
|
|
181
|
-
and self._fit_method == "kd_tree"
|
|
182
|
-
):
|
|
183
|
-
sklearn_NearestNeighbors.fit(self, self._fit_X, getattr(self, "_y", None))
|
|
184
|
-
result = sklearn_NearestNeighbors.radius_neighbors(
|
|
185
|
-
self, X, radius, return_distance, sort_results
|
|
186
|
-
)
|
|
187
|
-
|
|
188
|
-
return result
|
|
189
|
-
|
|
190
172
|
def _onedal_fit(self, X, y, queue=None):
|
|
191
173
|
onedal_params = {
|
|
192
174
|
"n_neighbors": self.n_neighbors,
|
|
@@ -242,4 +224,3 @@ class KNeighborsClassifier(sklearn_KNeighborsClassifier, KNeighborsDispatchingBa
|
|
|
242
224
|
predict_proba.__doc__ = sklearn_KNeighborsClassifier.predict_proba.__doc__
|
|
243
225
|
score.__doc__ = sklearn_KNeighborsClassifier.score.__doc__
|
|
244
226
|
kneighbors.__doc__ = sklearn_KNeighborsClassifier.kneighbors.__doc__
|
|
245
|
-
radius_neighbors.__doc__ = sklearn_NearestNeighbors.radius_neighbors.__doc__
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
# ==============================================================================
|
|
16
16
|
|
|
17
|
+
from sklearn.metrics import r2_score
|
|
17
18
|
from sklearn.neighbors._regression import (
|
|
18
19
|
KNeighborsRegressor as sklearn_KNeighborsRegressor,
|
|
19
20
|
)
|
|
@@ -29,7 +30,7 @@ from .common import KNeighborsDispatchingBase
|
|
|
29
30
|
|
|
30
31
|
|
|
31
32
|
@control_n_jobs(decorated_methods=["fit", "predict", "kneighbors"])
|
|
32
|
-
class KNeighborsRegressor(
|
|
33
|
+
class KNeighborsRegressor(KNeighborsDispatchingBase, sklearn_KNeighborsRegressor):
|
|
33
34
|
__doc__ = sklearn_KNeighborsRegressor.__doc__
|
|
34
35
|
if sklearn_check_version("1.2"):
|
|
35
36
|
_parameter_constraints: dict = {
|
|
@@ -117,6 +118,23 @@ class KNeighborsRegressor(sklearn_KNeighborsRegressor, KNeighborsDispatchingBase
|
|
|
117
118
|
X,
|
|
118
119
|
)
|
|
119
120
|
|
|
121
|
+
@wrap_output_data
|
|
122
|
+
def score(self, X, y, sample_weight=None):
|
|
123
|
+
check_is_fitted(self)
|
|
124
|
+
if sklearn_check_version("1.0"):
|
|
125
|
+
self._check_feature_names(X, reset=False)
|
|
126
|
+
return dispatch(
|
|
127
|
+
self,
|
|
128
|
+
"score",
|
|
129
|
+
{
|
|
130
|
+
"onedal": self.__class__._onedal_score,
|
|
131
|
+
"sklearn": sklearn_KNeighborsRegressor.score,
|
|
132
|
+
},
|
|
133
|
+
X,
|
|
134
|
+
y,
|
|
135
|
+
sample_weight=sample_weight,
|
|
136
|
+
)
|
|
137
|
+
|
|
120
138
|
@wrap_output_data
|
|
121
139
|
def kneighbors(self, X=None, n_neighbors=None, return_distance=True):
|
|
122
140
|
check_is_fitted(self)
|
|
@@ -134,24 +152,6 @@ class KNeighborsRegressor(sklearn_KNeighborsRegressor, KNeighborsDispatchingBase
|
|
|
134
152
|
return_distance=return_distance,
|
|
135
153
|
)
|
|
136
154
|
|
|
137
|
-
@wrap_output_data
|
|
138
|
-
def radius_neighbors(
|
|
139
|
-
self, X=None, radius=None, return_distance=True, sort_results=False
|
|
140
|
-
):
|
|
141
|
-
_onedal_estimator = getattr(self, "_onedal_estimator", None)
|
|
142
|
-
|
|
143
|
-
if (
|
|
144
|
-
_onedal_estimator is not None
|
|
145
|
-
or getattr(self, "_tree", 0) is None
|
|
146
|
-
and self._fit_method == "kd_tree"
|
|
147
|
-
):
|
|
148
|
-
sklearn_NearestNeighbors.fit(self, self._fit_X, getattr(self, "_y", None))
|
|
149
|
-
result = sklearn_NearestNeighbors.radius_neighbors(
|
|
150
|
-
self, X, radius, return_distance, sort_results
|
|
151
|
-
)
|
|
152
|
-
|
|
153
|
-
return result
|
|
154
|
-
|
|
155
155
|
def _onedal_fit(self, X, y, queue=None):
|
|
156
156
|
onedal_params = {
|
|
157
157
|
"n_neighbors": self.n_neighbors,
|
|
@@ -184,6 +184,11 @@ class KNeighborsRegressor(sklearn_KNeighborsRegressor, KNeighborsDispatchingBase
|
|
|
184
184
|
X, n_neighbors, return_distance, queue=queue
|
|
185
185
|
)
|
|
186
186
|
|
|
187
|
+
def _onedal_score(self, X, y, sample_weight=None, queue=None):
|
|
188
|
+
return r2_score(
|
|
189
|
+
y, self._onedal_predict(X, queue=queue), sample_weight=sample_weight
|
|
190
|
+
)
|
|
191
|
+
|
|
187
192
|
def _save_attributes(self):
|
|
188
193
|
self.n_features_in_ = self._onedal_estimator.n_features_in_
|
|
189
194
|
self.n_samples_fit_ = self._onedal_estimator.n_samples_fit_
|
|
@@ -195,4 +200,4 @@ class KNeighborsRegressor(sklearn_KNeighborsRegressor, KNeighborsDispatchingBase
|
|
|
195
200
|
fit.__doc__ = sklearn_KNeighborsRegressor.__doc__
|
|
196
201
|
predict.__doc__ = sklearn_KNeighborsRegressor.predict.__doc__
|
|
197
202
|
kneighbors.__doc__ = sklearn_KNeighborsRegressor.kneighbors.__doc__
|
|
198
|
-
|
|
203
|
+
score.__doc__ = sklearn_KNeighborsRegressor.score.__doc__
|
|
@@ -26,7 +26,7 @@ from .common import KNeighborsDispatchingBase
|
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
@control_n_jobs(decorated_methods=["fit", "kneighbors"])
|
|
29
|
-
class NearestNeighbors(
|
|
29
|
+
class NearestNeighbors(KNeighborsDispatchingBase, sklearn_NearestNeighbors):
|
|
30
30
|
__doc__ = sklearn_NearestNeighbors.__doc__
|
|
31
31
|
if sklearn_check_version("1.2"):
|
|
32
32
|
_parameter_constraints: dict = {**sklearn_NearestNeighbors._parameter_constraints}
|
|
@@ -88,19 +88,40 @@ class NearestNeighbors(sklearn_NearestNeighbors, KNeighborsDispatchingBase):
|
|
|
88
88
|
def radius_neighbors(
|
|
89
89
|
self, X=None, radius=None, return_distance=True, sort_results=False
|
|
90
90
|
):
|
|
91
|
-
_onedal_estimator = getattr(self, "_onedal_estimator", None)
|
|
92
|
-
|
|
93
91
|
if (
|
|
94
|
-
_onedal_estimator
|
|
92
|
+
hasattr(self, "_onedal_estimator")
|
|
95
93
|
or getattr(self, "_tree", 0) is None
|
|
96
94
|
and self._fit_method == "kd_tree"
|
|
97
95
|
):
|
|
98
96
|
sklearn_NearestNeighbors.fit(self, self._fit_X, getattr(self, "_y", None))
|
|
99
|
-
|
|
100
|
-
self,
|
|
97
|
+
return dispatch(
|
|
98
|
+
self,
|
|
99
|
+
"radius_neighbors",
|
|
100
|
+
{
|
|
101
|
+
"onedal": None,
|
|
102
|
+
"sklearn": sklearn_NearestNeighbors.radius_neighbors,
|
|
103
|
+
},
|
|
104
|
+
X,
|
|
105
|
+
radius=radius,
|
|
106
|
+
return_distance=return_distance,
|
|
107
|
+
sort_results=sort_results,
|
|
101
108
|
)
|
|
102
109
|
|
|
103
|
-
|
|
110
|
+
def radius_neighbors_graph(
|
|
111
|
+
self, X=None, radius=None, mode="connectivity", sort_results=False
|
|
112
|
+
):
|
|
113
|
+
return dispatch(
|
|
114
|
+
self,
|
|
115
|
+
"radius_neighbors_graph",
|
|
116
|
+
{
|
|
117
|
+
"onedal": None,
|
|
118
|
+
"sklearn": sklearn_NearestNeighbors.radius_neighbors_graph,
|
|
119
|
+
},
|
|
120
|
+
X,
|
|
121
|
+
radius=radius,
|
|
122
|
+
mode=mode,
|
|
123
|
+
sort_results=sort_results,
|
|
124
|
+
)
|
|
104
125
|
|
|
105
126
|
def _onedal_fit(self, X, y=None, queue=None):
|
|
106
127
|
onedal_params = {
|
|
@@ -144,3 +165,6 @@ class NearestNeighbors(sklearn_NearestNeighbors, KNeighborsDispatchingBase):
|
|
|
144
165
|
fit.__doc__ = sklearn_NearestNeighbors.__doc__
|
|
145
166
|
kneighbors.__doc__ = sklearn_NearestNeighbors.kneighbors.__doc__
|
|
146
167
|
radius_neighbors.__doc__ = sklearn_NearestNeighbors.radius_neighbors.__doc__
|
|
168
|
+
radius_neighbors_graph.__doc__ = (
|
|
169
|
+
sklearn_NearestNeighbors.radius_neighbors_graph.__doc__
|
|
170
|
+
)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# ===============================================================================
|
|
2
|
+
# Copyright 2024 Intel Corporation
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
# ===============================================================================
|
|
16
|
+
|
|
17
|
+
from .incremental_pca import IncrementalPCA
|
|
18
|
+
|
|
19
|
+
__all__ = ["IncrementalPCA"]
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
# ===============================================================================
|
|
2
|
+
# Copyright 2024 Intel Corporation
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
# ===============================================================================
|
|
16
|
+
|
|
17
|
+
import numpy as np
|
|
18
|
+
from sklearn.decomposition import IncrementalPCA as sklearn_IncrementalPCA
|
|
19
|
+
from sklearn.utils import check_array, gen_batches
|
|
20
|
+
|
|
21
|
+
from daal4py.sklearn._n_jobs_support import control_n_jobs
|
|
22
|
+
from daal4py.sklearn._utils import sklearn_check_version
|
|
23
|
+
from onedal.decomposition import IncrementalPCA as onedal_IncrementalPCA
|
|
24
|
+
|
|
25
|
+
from ..._device_offload import dispatch, wrap_output_data
|
|
26
|
+
from ..._utils import PatchingConditionsChain
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@control_n_jobs(
|
|
30
|
+
decorated_methods=["fit", "partial_fit", "transform", "_onedal_finalize_fit"]
|
|
31
|
+
)
|
|
32
|
+
class IncrementalPCA(sklearn_IncrementalPCA):
|
|
33
|
+
|
|
34
|
+
def __init__(self, n_components=None, *, whiten=False, copy=True, batch_size=None):
|
|
35
|
+
super().__init__(
|
|
36
|
+
n_components=n_components, whiten=whiten, copy=copy, batch_size=batch_size
|
|
37
|
+
)
|
|
38
|
+
self._need_to_finalize = False
|
|
39
|
+
self._need_to_finalize_attrs = {
|
|
40
|
+
"mean_",
|
|
41
|
+
"explained_variance_",
|
|
42
|
+
"explained_variance_ratio_",
|
|
43
|
+
"n_components_",
|
|
44
|
+
"components_",
|
|
45
|
+
"noise_variance_",
|
|
46
|
+
"singular_values_",
|
|
47
|
+
"var_",
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
_onedal_incremental_pca = staticmethod(onedal_IncrementalPCA)
|
|
51
|
+
|
|
52
|
+
def _onedal_transform(self, X, queue=None):
|
|
53
|
+
assert hasattr(self, "_onedal_estimator")
|
|
54
|
+
if self._need_to_finalize:
|
|
55
|
+
self._onedal_finalize_fit()
|
|
56
|
+
X = check_array(X, dtype=[np.float64, np.float32])
|
|
57
|
+
return self._onedal_estimator.predict(X, queue)
|
|
58
|
+
|
|
59
|
+
def _onedal_fit_transform(self, X, queue=None):
|
|
60
|
+
self._onedal_fit(X, queue)
|
|
61
|
+
return self._onedal_transform(X, queue)
|
|
62
|
+
|
|
63
|
+
def _onedal_partial_fit(self, X, check_input=True, queue=None):
|
|
64
|
+
first_pass = not hasattr(self, "components_")
|
|
65
|
+
|
|
66
|
+
if check_input:
|
|
67
|
+
if sklearn_check_version("1.0"):
|
|
68
|
+
X = self._validate_data(
|
|
69
|
+
X, dtype=[np.float64, np.float32], reset=first_pass
|
|
70
|
+
)
|
|
71
|
+
else:
|
|
72
|
+
X = check_array(
|
|
73
|
+
X,
|
|
74
|
+
dtype=[np.float64, np.float32],
|
|
75
|
+
copy=self.copy,
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
n_samples, n_features = X.shape
|
|
79
|
+
|
|
80
|
+
if self.n_components is None:
|
|
81
|
+
if not hasattr(self, "components_"):
|
|
82
|
+
self.n_components_ = min(n_samples, n_features)
|
|
83
|
+
else:
|
|
84
|
+
self.n_components_ = self.components_.shape[0]
|
|
85
|
+
elif not self.n_components <= n_features:
|
|
86
|
+
raise ValueError(
|
|
87
|
+
"n_components=%r invalid for n_features=%d, need "
|
|
88
|
+
"more rows than columns for IncrementalPCA "
|
|
89
|
+
"processing" % (self.n_components, n_features)
|
|
90
|
+
)
|
|
91
|
+
elif not self.n_components <= n_samples:
|
|
92
|
+
raise ValueError(
|
|
93
|
+
"n_components=%r must be less or equal to "
|
|
94
|
+
"the batch number of samples "
|
|
95
|
+
"%d." % (self.n_components, n_samples)
|
|
96
|
+
)
|
|
97
|
+
else:
|
|
98
|
+
self.n_components_ = self.n_components
|
|
99
|
+
|
|
100
|
+
if not hasattr(self, "n_samples_seen_"):
|
|
101
|
+
self.n_samples_seen_ = n_samples
|
|
102
|
+
else:
|
|
103
|
+
self.n_samples_seen_ += n_samples
|
|
104
|
+
|
|
105
|
+
onedal_params = {"n_components": self.n_components_, "whiten": self.whiten}
|
|
106
|
+
|
|
107
|
+
if not hasattr(self, "_onedal_estimator"):
|
|
108
|
+
self._onedal_estimator = self._onedal_incremental_pca(**onedal_params)
|
|
109
|
+
self._onedal_estimator.partial_fit(X, queue)
|
|
110
|
+
self._need_to_finalize = True
|
|
111
|
+
|
|
112
|
+
def _onedal_finalize_fit(self):
|
|
113
|
+
assert hasattr(self, "_onedal_estimator")
|
|
114
|
+
self._onedal_estimator.finalize_fit()
|
|
115
|
+
self._need_to_finalize = False
|
|
116
|
+
|
|
117
|
+
def _onedal_fit(self, X, queue=None):
|
|
118
|
+
if sklearn_check_version("1.2"):
|
|
119
|
+
self._validate_params()
|
|
120
|
+
|
|
121
|
+
if sklearn_check_version("1.0"):
|
|
122
|
+
X = self._validate_data(X, dtype=[np.float64, np.float32], copy=self.copy)
|
|
123
|
+
else:
|
|
124
|
+
X = check_array(
|
|
125
|
+
X,
|
|
126
|
+
dtype=[np.float64, np.float32],
|
|
127
|
+
copy=self.copy,
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
n_samples, n_features = X.shape
|
|
131
|
+
|
|
132
|
+
if self.batch_size is None:
|
|
133
|
+
self.batch_size_ = 5 * n_features
|
|
134
|
+
else:
|
|
135
|
+
self.batch_size_ = self.batch_size
|
|
136
|
+
|
|
137
|
+
self.n_samples_seen_ = 0
|
|
138
|
+
if hasattr(self, "_onedal_estimator"):
|
|
139
|
+
self._onedal_estimator._reset()
|
|
140
|
+
|
|
141
|
+
for batch in gen_batches(n_samples, self.batch_size_):
|
|
142
|
+
X_batch = X[batch]
|
|
143
|
+
self._onedal_partial_fit(X_batch, queue=queue)
|
|
144
|
+
|
|
145
|
+
self._onedal_finalize_fit()
|
|
146
|
+
|
|
147
|
+
return self
|
|
148
|
+
|
|
149
|
+
def _onedal_supported(self, method_name, *data):
|
|
150
|
+
patching_status = PatchingConditionsChain(
|
|
151
|
+
f"sklearn.decomposition.{self.__class__.__name__}.{method_name}"
|
|
152
|
+
)
|
|
153
|
+
return patching_status
|
|
154
|
+
|
|
155
|
+
_onedal_cpu_supported = _onedal_supported
|
|
156
|
+
_onedal_gpu_supported = _onedal_supported
|
|
157
|
+
|
|
158
|
+
def __getattr__(self, attr):
|
|
159
|
+
if attr in self._need_to_finalize_attrs:
|
|
160
|
+
if hasattr(self, "_onedal_estimator"):
|
|
161
|
+
if self._need_to_finalize:
|
|
162
|
+
self._onedal_finalize_fit()
|
|
163
|
+
return getattr(self._onedal_estimator, attr)
|
|
164
|
+
else:
|
|
165
|
+
raise AttributeError(
|
|
166
|
+
f"'{self.__class__.__name__}' object has no attribute '{attr}'"
|
|
167
|
+
)
|
|
168
|
+
if attr in self.__dict__:
|
|
169
|
+
return self.__dict__[attr]
|
|
170
|
+
|
|
171
|
+
raise AttributeError(
|
|
172
|
+
f"'{self.__class__.__name__}' object has no attribute '{attr}'"
|
|
173
|
+
)
|
|
174
|
+
|
|
175
|
+
def partial_fit(self, X, y=None, check_input=True):
|
|
176
|
+
dispatch(
|
|
177
|
+
self,
|
|
178
|
+
"partial_fit",
|
|
179
|
+
{
|
|
180
|
+
"onedal": self.__class__._onedal_partial_fit,
|
|
181
|
+
"sklearn": sklearn_IncrementalPCA.partial_fit,
|
|
182
|
+
},
|
|
183
|
+
X,
|
|
184
|
+
check_input=check_input,
|
|
185
|
+
)
|
|
186
|
+
return self
|
|
187
|
+
|
|
188
|
+
def fit(self, X, y=None):
|
|
189
|
+
dispatch(
|
|
190
|
+
self,
|
|
191
|
+
"fit",
|
|
192
|
+
{
|
|
193
|
+
"onedal": self.__class__._onedal_fit,
|
|
194
|
+
"sklearn": sklearn_IncrementalPCA.fit,
|
|
195
|
+
},
|
|
196
|
+
X,
|
|
197
|
+
)
|
|
198
|
+
return self
|
|
199
|
+
|
|
200
|
+
@wrap_output_data
|
|
201
|
+
def transform(self, X):
|
|
202
|
+
return dispatch(
|
|
203
|
+
self,
|
|
204
|
+
"transform",
|
|
205
|
+
{
|
|
206
|
+
"onedal": self.__class__._onedal_transform,
|
|
207
|
+
"sklearn": sklearn_IncrementalPCA.transform,
|
|
208
|
+
},
|
|
209
|
+
X,
|
|
210
|
+
)
|
|
211
|
+
|
|
212
|
+
@wrap_output_data
|
|
213
|
+
def fit_transform(self, X, y=None, **fit_params):
|
|
214
|
+
return dispatch(
|
|
215
|
+
self,
|
|
216
|
+
"fit_transform",
|
|
217
|
+
{
|
|
218
|
+
"onedal": self.__class__._onedal_fit_transform,
|
|
219
|
+
"sklearn": sklearn_IncrementalPCA.fit_transform,
|
|
220
|
+
},
|
|
221
|
+
X,
|
|
222
|
+
)
|
|
223
|
+
|
|
224
|
+
__doc__ = sklearn_IncrementalPCA.__doc__
|
|
225
|
+
fit.__doc__ = sklearn_IncrementalPCA.fit.__doc__
|
|
226
|
+
fit_transform.__doc__ = sklearn_IncrementalPCA.fit_transform.__doc__
|
|
227
|
+
transform.__doc__ = sklearn_IncrementalPCA.transform.__doc__
|
|
228
|
+
partial_fit.__doc__ = sklearn_IncrementalPCA.partial_fit.__doc__
|