scikit-learn-intelex 2024.1.0__py39-none-win_amd64.whl → 2025.1.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-2025.1.0.data/data/Lib/site-packages/daal4py/__init__.py +73 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/__main__.py +58 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/_daal4py.cp39-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/doc/third-party-programs.txt +424 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/mb/__init__.py +19 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/mb/model_builders.py +377 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/mpi_transceiver.cp39-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/__init__.py +40 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/_n_jobs_support.py +248 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/_utils.py +245 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/__init__.py +20 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/dbscan.py +165 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/k_means.py +597 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/tests/test_dbscan.py +109 -0
- {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/cluster → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/decomposition}/__init__.py +3 -3
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/decomposition/_pca.py +524 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/AdaBoostClassifier.py +196 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/GBTDAAL.py +337 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/__init__.py +27 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/_forest.py +1397 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/tests/test_decision_forest.py +206 -0
- {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn}/linear_model/__init__.py +29 -29
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_coordinate_descent.py +848 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_linear.py +272 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_ridge.py +325 -0
- scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/coordinate_descent.py +2 -2
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/linear.py +17 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_loss.py +195 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +1026 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/ridge.py +17 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_linear.py +208 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_ridge.py +69 -0
- {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/manifold}/__init__.py +4 -2
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/manifold/_t_sne.py +405 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/__init__.py +20 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_pairwise.py +236 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_ranking.py +210 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/__init__.py +19 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/_split.py +309 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/tests/test_split.py +56 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/__init__.py +0 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/dispatcher.py +232 -0
- {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch}/tests/_models_info.py +13 -22
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_monkeypatch.py +71 -0
- {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch}/tests/test_patching.py +10 -42
- {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch}/tests/utils/_launch_algorithms.py +4 -5
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/__init__.py +21 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_base.py +503 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_classification.py +139 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_regression.py +74 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_unsupervised.py +55 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/tests/test_kneighbors.py +113 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/svm/__init__.py +19 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/svm/svm.py +734 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/utils/__init__.py +21 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/utils/base.py +75 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/utils/tests/test_utils.py +51 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/utils/validation.py +693 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/__init__.py +83 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/_config.py +54 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/_device_offload.py +222 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp39-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp39-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/__init__.py +20 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/basic_statistics.py +107 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/incremental_basic_statistics.py +160 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_basic_statistics.py +298 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_incremental_basic_statistics.py +196 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/__init__.py +27 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/dbscan.py +110 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/kmeans.py +564 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/kmeans_init.py +115 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/tests/test_dbscan.py +125 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans.py +88 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans_init.py +93 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_base.py +38 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_estimator_checks.py +47 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_mixin.py +62 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_policy.py +59 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/_spmd_policy.py +30 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/hyperparameters.py +125 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/common/tests/test_policy.py +76 -0
- {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance}/__init__.py +3 -2
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance/covariance.py +125 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance/incremental_covariance.py +146 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance/tests/test_covariance.py +50 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/covariance/tests/test_incremental_covariance.py +122 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/datatypes/__init__.py +19 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +154 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/datatypes/tests/common.py +126 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/datatypes/tests/test_data.py +414 -0
- {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/decomposition}/__init__.py +3 -2
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/decomposition/incremental_pca.py +204 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/decomposition/pca.py +186 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/decomposition/tests/test_incremental_pca.py +198 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/ensemble/__init__.py +29 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/ensemble/forest.py +727 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/ensemble/tests/test_random_forest.py +97 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/__init__.py +27 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/incremental_linear_model.py +258 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/linear_model.py +329 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/logistic_regression.py +249 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_linear_regression.py +168 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_ridge_regression.py +107 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_linear_regression.py +250 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_logistic_regression.py +95 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_ridge.py +95 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/neighbors/__init__.py +19 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/neighbors/neighbors.py +767 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/neighbors/tests/test_knn_classification.py +49 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/primitives/__init__.py +27 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/primitives/get_tree.py +25 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/primitives/kernel_functions.py +153 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/primitives/tests/test_kernel_functions.py +159 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/__init__.py +19 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/svm.py +556 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_csr_svm.py +351 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvc.py +204 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvr.py +210 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_svc.py +176 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/svm/tests/test_svr.py +243 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/tests/test_common.py +57 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/tests/utils/_dataframes_support.py +162 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/tests/utils/_device_selection.py +102 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/utils/__init__.py +49 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/utils/_array_api.py +81 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/utils/_dpep_helpers.py +56 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/utils/validation.py +440 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/__init__.py +10 -7
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/_config.py +22 -16
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +126 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/_utils.py +27 -4
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +20 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +230 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +345 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +270 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +404 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +1 -1
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +19 -10
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +395 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +8 -6
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +159 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/conftest.py +82 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/covariance/__init__.py +19 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +398 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +237 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +425 -0
- scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_preview_pca.py → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +25 -9
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +241 -60
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +250 -188
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +39 -21
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +16 -2
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/__init__.py +32 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +13 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +482 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_ridge.py +425 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +341 -0
- {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex}/linear_model/logistic_regression.py +194 -133
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/linear_model/ridge.py +7 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +207 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_ridge.py +153 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +167 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +134 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/manifold/t_sne.py +4 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +5 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +3 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +5 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +1 -1
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/neighbors/_lof.py +236 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +53 -6
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +51 -155
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +46 -149
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +55 -100
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +16 -18
- {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview}/__init__.py +1 -3
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +138 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +18 -5
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +19 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +233 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +266 -0
- {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model}/__init__.py +19 -19
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/ridge.py +424 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/tests/test_ridge.py +102 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +1 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +20 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +30 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +107 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +307 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +97 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +172 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +20 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +21 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/incremental_covariance.py +37 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_covariance_spmd.py +107 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +184 -0
- {scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition}/__init__.py +3 -2
- scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/incremental_pca.py +11 -12
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +269 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_pca_spmd.py +128 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +4 -12
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/tests/test_forest_spmd.py +265 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +3 -1
- scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/tests/test_config.py → scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/incremental_linear_model.py +14 -18
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +21 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +329 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +145 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +162 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +288 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/svm/_common.py +339 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +172 -78
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +74 -70
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +170 -77
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +66 -66
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +12 -20
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_common.py +390 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_config.py +123 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +379 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +276 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +108 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/tests/test_parallel.py +6 -8
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_patching.py +385 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +321 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/utils/__init__.py +44 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/utils/base.py +371 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/tests/utils/spmd.py +198 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/utils/_array_api.py +82 -0
- scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/utils/tests/test_finite.py +89 -0
- {scikit_learn_intelex-2024.1.0.dist-info → scikit_learn_intelex-2025.1.0.dist-info}/METADATA +231 -230
- scikit_learn_intelex-2025.1.0.dist-info/RECORD +257 -0
- {scikit_learn_intelex-2024.1.0.dist-info → scikit_learn_intelex-2025.1.0.dist-info}/WHEEL +1 -1
- scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +0 -223
- scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +0 -17
- scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +0 -30
- scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +0 -17
- scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +0 -27
- scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +0 -388
- scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/linear_model/logistic_path.py +0 -17
- scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +0 -82
- scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +0 -28
- scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/neighbors/lof.py +0 -436
- scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/cluster/_common.py +0 -84
- scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/cluster/k_means.py +0 -376
- scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +0 -98
- scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/pca.py +0 -376
- scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/tests/test_preview_logistic_regression.py +0 -59
- scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/svm/_common.py +0 -188
- scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +0 -225
- scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +0 -227
- scikit_learn_intelex-2024.1.0.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability_tests.py +0 -428
- scikit_learn_intelex-2024.1.0.dist-info/RECORD +0 -97
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/__main__.py +0 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +0 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +0 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +0 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +0 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +0 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +0 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +0 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +0 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +0 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +0 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +0 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +0 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +0 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +0 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +0 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/neighbors.py +0 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/utils/__init__.py +0 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -0
- {scikit_learn_intelex-2024.1.0.data → scikit_learn_intelex-2025.1.0.data}/data/Lib/site-packages/sklearnex/utils/validation.py +0 -0
- {scikit_learn_intelex-2024.1.0.dist-info → scikit_learn_intelex-2025.1.0.dist-info}/LICENSE.txt +0 -0
- {scikit_learn_intelex-2024.1.0.dist-info → scikit_learn_intelex-2025.1.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,405 @@
|
|
|
1
|
+
# ==============================================================================
|
|
2
|
+
# Copyright 2020 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
|
+
# daal4py TSNE scikit-learn-compatible class
|
|
18
|
+
|
|
19
|
+
import warnings
|
|
20
|
+
from time import time
|
|
21
|
+
|
|
22
|
+
import numpy as np
|
|
23
|
+
from scipy.sparse import issparse
|
|
24
|
+
from sklearn.decomposition import PCA
|
|
25
|
+
from sklearn.manifold import TSNE as BaseTSNE
|
|
26
|
+
from sklearn.manifold._t_sne import _joint_probabilities, _joint_probabilities_nn
|
|
27
|
+
from sklearn.metrics.pairwise import pairwise_distances
|
|
28
|
+
from sklearn.utils import check_array, check_random_state
|
|
29
|
+
from sklearn.utils.validation import check_non_negative
|
|
30
|
+
|
|
31
|
+
import daal4py
|
|
32
|
+
from daal4py.sklearn._utils import (
|
|
33
|
+
PatchingConditionsChain,
|
|
34
|
+
daal_check_version,
|
|
35
|
+
sklearn_check_version,
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
from .._n_jobs_support import control_n_jobs
|
|
39
|
+
from ..neighbors import NearestNeighbors
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
@control_n_jobs(decorated_methods=["fit"])
|
|
43
|
+
class TSNE(BaseTSNE):
|
|
44
|
+
__doc__ = BaseTSNE.__doc__
|
|
45
|
+
|
|
46
|
+
if sklearn_check_version("1.2"):
|
|
47
|
+
_parameter_constraints: dict = {**BaseTSNE._parameter_constraints}
|
|
48
|
+
|
|
49
|
+
def fit_transform(self, X, y=None):
|
|
50
|
+
return super().fit_transform(X, y)
|
|
51
|
+
|
|
52
|
+
def fit(self, X, y=None):
|
|
53
|
+
return super().fit(X, y)
|
|
54
|
+
|
|
55
|
+
def _daal_tsne(self, P, n_samples, X_embedded):
|
|
56
|
+
"""Runs t-SNE."""
|
|
57
|
+
# t-SNE minimizes the Kullback-Leiber divergence of the Gaussians P
|
|
58
|
+
# and the Student's t-distributions Q. The optimization algorithm that
|
|
59
|
+
# we use is batch gradient descent with two stages:
|
|
60
|
+
# * initial optimization with early exaggeration and momentum at 0.5
|
|
61
|
+
# * final optimization with momentum at 0.8
|
|
62
|
+
|
|
63
|
+
# N, nnz, n_iter_without_progress, n_iter
|
|
64
|
+
size_iter = [
|
|
65
|
+
[n_samples],
|
|
66
|
+
[P.nnz],
|
|
67
|
+
[self.n_iter_without_progress],
|
|
68
|
+
[self._max_iter if sklearn_check_version("1.5") else self.n_iter],
|
|
69
|
+
]
|
|
70
|
+
|
|
71
|
+
# Pass params to daal4py backend
|
|
72
|
+
if daal_check_version((2023, "P", 1)):
|
|
73
|
+
size_iter.extend(
|
|
74
|
+
[
|
|
75
|
+
[
|
|
76
|
+
(
|
|
77
|
+
self._EXPLORATION_MAX_ITER
|
|
78
|
+
if sklearn_check_version("1.5")
|
|
79
|
+
else self._EXPLORATION_N_ITER
|
|
80
|
+
)
|
|
81
|
+
],
|
|
82
|
+
[self._N_ITER_CHECK],
|
|
83
|
+
]
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
size_iter = np.array(size_iter, dtype=P.dtype)
|
|
87
|
+
|
|
88
|
+
params = np.array(
|
|
89
|
+
[
|
|
90
|
+
[self.early_exaggeration],
|
|
91
|
+
[self._learning_rate],
|
|
92
|
+
[self.min_grad_norm],
|
|
93
|
+
[self.angle],
|
|
94
|
+
],
|
|
95
|
+
dtype=P.dtype,
|
|
96
|
+
)
|
|
97
|
+
results = np.zeros((3, 1), dtype=P.dtype) # curIter, error, gradNorm
|
|
98
|
+
|
|
99
|
+
if P.dtype == np.float64:
|
|
100
|
+
daal4py.daal_tsne_gradient_descent(
|
|
101
|
+
X_embedded, P, size_iter, params, results, 0
|
|
102
|
+
)
|
|
103
|
+
elif P.dtype == np.float32:
|
|
104
|
+
daal4py.daal_tsne_gradient_descent(
|
|
105
|
+
X_embedded, P, size_iter, params, results, 1
|
|
106
|
+
)
|
|
107
|
+
else:
|
|
108
|
+
raise ValueError("unsupported dtype of 'P' matrix")
|
|
109
|
+
|
|
110
|
+
# Save the final number of iterations
|
|
111
|
+
self.n_iter_ = int(results[0][0])
|
|
112
|
+
|
|
113
|
+
# Save Kullback-Leiber divergence
|
|
114
|
+
self.kl_divergence_ = results[1][0]
|
|
115
|
+
|
|
116
|
+
return X_embedded
|
|
117
|
+
|
|
118
|
+
def _fit(self, X, skip_num_points=0):
|
|
119
|
+
"""Private function to fit the model using X as training data."""
|
|
120
|
+
if isinstance(self.init, str) and self.init == "warn":
|
|
121
|
+
warnings.warn(
|
|
122
|
+
"The default initialization in TSNE will change "
|
|
123
|
+
"from 'random' to 'pca' in 1.2.",
|
|
124
|
+
FutureWarning,
|
|
125
|
+
)
|
|
126
|
+
self._init = "random"
|
|
127
|
+
else:
|
|
128
|
+
self._init = self.init
|
|
129
|
+
|
|
130
|
+
if isinstance(self._init, str) and self._init == "pca" and issparse(X):
|
|
131
|
+
raise TypeError(
|
|
132
|
+
"PCA initialization is currently not suported "
|
|
133
|
+
"with the sparse input matrix. Use "
|
|
134
|
+
'init="random" instead.'
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
if self.method not in ["barnes_hut", "exact"]:
|
|
138
|
+
raise ValueError("'method' must be 'barnes_hut' or 'exact'")
|
|
139
|
+
if self.angle < 0.0 or self.angle > 1.0:
|
|
140
|
+
raise ValueError("'angle' must be between 0.0 - 1.0")
|
|
141
|
+
if self.learning_rate == "warn":
|
|
142
|
+
warnings.warn(
|
|
143
|
+
"The default learning rate in TSNE will change "
|
|
144
|
+
"from 200.0 to 'auto' in 1.2.",
|
|
145
|
+
FutureWarning,
|
|
146
|
+
)
|
|
147
|
+
self._learning_rate = 200.0
|
|
148
|
+
else:
|
|
149
|
+
self._learning_rate = self.learning_rate
|
|
150
|
+
if self._learning_rate == "auto":
|
|
151
|
+
self._learning_rate = X.shape[0] / self.early_exaggeration / 4
|
|
152
|
+
self._learning_rate = np.maximum(self._learning_rate, 50)
|
|
153
|
+
else:
|
|
154
|
+
if not (self._learning_rate > 0):
|
|
155
|
+
raise ValueError(
|
|
156
|
+
"'learning_rate' must be a positive number " "or 'auto'."
|
|
157
|
+
)
|
|
158
|
+
# rename attribute for compatibility with sklearn>=1.2
|
|
159
|
+
if sklearn_check_version("1.2"):
|
|
160
|
+
self.learning_rate_ = self._learning_rate
|
|
161
|
+
|
|
162
|
+
if hasattr(self, "square_distances"):
|
|
163
|
+
if sklearn_check_version("1.1"):
|
|
164
|
+
if self.square_distances != "deprecated":
|
|
165
|
+
warnings.warn(
|
|
166
|
+
"The parameter `square_distances` has not effect "
|
|
167
|
+
"and will be removed in version 1.3.",
|
|
168
|
+
FutureWarning,
|
|
169
|
+
)
|
|
170
|
+
else:
|
|
171
|
+
if self.square_distances not in [True, "legacy"]:
|
|
172
|
+
raise ValueError("'square_distances' must be True or 'legacy'.")
|
|
173
|
+
if self.metric != "euclidean" and self.square_distances is not True:
|
|
174
|
+
warnings.warn(
|
|
175
|
+
"'square_distances' has been introduced in 0.24 to help phase "
|
|
176
|
+
"out legacy squaring behavior. The 'legacy' setting will be "
|
|
177
|
+
"removed in 1.1 (renaming of 0.26), and the default setting "
|
|
178
|
+
"will be changed to True. In 1.3, 'square_distances' will be "
|
|
179
|
+
"removed altogether, and distances will be squared by "
|
|
180
|
+
"default. Set 'square_distances'=True to silence this "
|
|
181
|
+
"warning.",
|
|
182
|
+
FutureWarning,
|
|
183
|
+
)
|
|
184
|
+
|
|
185
|
+
if self.method == "barnes_hut":
|
|
186
|
+
X = self._validate_data(
|
|
187
|
+
X,
|
|
188
|
+
accept_sparse=["csr"],
|
|
189
|
+
ensure_min_samples=2,
|
|
190
|
+
dtype=[np.float32, np.float64],
|
|
191
|
+
)
|
|
192
|
+
else:
|
|
193
|
+
X = self._validate_data(
|
|
194
|
+
X, accept_sparse=["csr", "csc", "coo"], dtype=[np.float32, np.float64]
|
|
195
|
+
)
|
|
196
|
+
|
|
197
|
+
if self.metric == "precomputed":
|
|
198
|
+
if isinstance(self._init, str) and self._init == "pca":
|
|
199
|
+
raise ValueError(
|
|
200
|
+
'The parameter init="pca" cannot be '
|
|
201
|
+
'used with metric="precomputed".'
|
|
202
|
+
)
|
|
203
|
+
if X.shape[0] != X.shape[1]:
|
|
204
|
+
raise ValueError("X should be a square distance matrix")
|
|
205
|
+
|
|
206
|
+
check_non_negative(
|
|
207
|
+
X,
|
|
208
|
+
"TSNE.fit(). With metric='precomputed', X "
|
|
209
|
+
"should contain positive distances.",
|
|
210
|
+
)
|
|
211
|
+
|
|
212
|
+
if self.method == "exact" and issparse(X):
|
|
213
|
+
raise TypeError(
|
|
214
|
+
'TSNE with method="exact" does not accept sparse '
|
|
215
|
+
'precomputed distance matrix. Use method="barnes_hut" '
|
|
216
|
+
"or provide the dense distance matrix."
|
|
217
|
+
)
|
|
218
|
+
|
|
219
|
+
if self.method == "barnes_hut" and self.n_components > 3:
|
|
220
|
+
raise ValueError(
|
|
221
|
+
"'n_components' should be inferior to 4 for the "
|
|
222
|
+
"barnes_hut algorithm as it relies on "
|
|
223
|
+
"quad-tree or oct-tree."
|
|
224
|
+
)
|
|
225
|
+
random_state = check_random_state(self.random_state)
|
|
226
|
+
|
|
227
|
+
if self.early_exaggeration < 1.0:
|
|
228
|
+
raise ValueError(
|
|
229
|
+
"early_exaggeration must be at least 1, but is {}".format(
|
|
230
|
+
self.early_exaggeration
|
|
231
|
+
)
|
|
232
|
+
)
|
|
233
|
+
|
|
234
|
+
if not sklearn_check_version("1.2"):
|
|
235
|
+
if self.n_iter < 250:
|
|
236
|
+
raise ValueError("n_iter should be at least 250")
|
|
237
|
+
|
|
238
|
+
n_samples = X.shape[0]
|
|
239
|
+
|
|
240
|
+
neighbors_nn = None
|
|
241
|
+
if self.method == "exact":
|
|
242
|
+
# Retrieve the distance matrix, either using the precomputed one or
|
|
243
|
+
# computing it.
|
|
244
|
+
if self.metric == "precomputed":
|
|
245
|
+
distances = X
|
|
246
|
+
else:
|
|
247
|
+
if self.verbose:
|
|
248
|
+
print("[t-SNE] Computing pairwise distances...")
|
|
249
|
+
|
|
250
|
+
if self.metric == "euclidean":
|
|
251
|
+
# Euclidean is squared here, rather than using **= 2,
|
|
252
|
+
# because euclidean_distances already calculates
|
|
253
|
+
# squared distances, and returns np.sqrt(dist) for
|
|
254
|
+
# squared=False.
|
|
255
|
+
# Also, Euclidean is slower for n_jobs>1, so don't set here
|
|
256
|
+
distances = pairwise_distances(X, metric=self.metric, squared=True)
|
|
257
|
+
else:
|
|
258
|
+
metric_params_ = {}
|
|
259
|
+
if sklearn_check_version("1.1"):
|
|
260
|
+
metric_params_ = self.metric_params or {}
|
|
261
|
+
distances = pairwise_distances(
|
|
262
|
+
X, metric=self.metric, n_jobs=self.n_jobs, **metric_params_
|
|
263
|
+
)
|
|
264
|
+
|
|
265
|
+
if np.any(distances < 0):
|
|
266
|
+
raise ValueError(
|
|
267
|
+
"All distances should be positive, the " "metric given is not correct"
|
|
268
|
+
)
|
|
269
|
+
|
|
270
|
+
if (
|
|
271
|
+
self.metric != "euclidean"
|
|
272
|
+
and getattr(self, "square_distances", True) is True
|
|
273
|
+
):
|
|
274
|
+
distances **= 2
|
|
275
|
+
|
|
276
|
+
# compute the joint probability distribution for the input space
|
|
277
|
+
P = _joint_probabilities(distances, self.perplexity, self.verbose)
|
|
278
|
+
assert np.all(np.isfinite(P)), "All probabilities should be finite"
|
|
279
|
+
assert np.all(P >= 0), "All probabilities should be non-negative"
|
|
280
|
+
assert np.all(P <= 1), (
|
|
281
|
+
"All probabilities should be less " "or then equal to one"
|
|
282
|
+
)
|
|
283
|
+
|
|
284
|
+
else:
|
|
285
|
+
# Compute the number of nearest neighbors to find.
|
|
286
|
+
# LvdM uses 3 * perplexity as the number of neighbors.
|
|
287
|
+
# In the event that we have very small # of points
|
|
288
|
+
# set the neighbors to n - 1.
|
|
289
|
+
n_neighbors = min(n_samples - 1, int(3.0 * self.perplexity + 1))
|
|
290
|
+
|
|
291
|
+
if self.verbose:
|
|
292
|
+
print("[t-SNE] Computing {} nearest neighbors...".format(n_neighbors))
|
|
293
|
+
|
|
294
|
+
# Find the nearest neighbors for every point
|
|
295
|
+
knn = None
|
|
296
|
+
if sklearn_check_version("1.1"):
|
|
297
|
+
knn = NearestNeighbors(
|
|
298
|
+
algorithm="auto",
|
|
299
|
+
n_jobs=self.n_jobs,
|
|
300
|
+
n_neighbors=n_neighbors,
|
|
301
|
+
metric=self.metric,
|
|
302
|
+
metric_params=self.metric_params,
|
|
303
|
+
)
|
|
304
|
+
else:
|
|
305
|
+
knn = NearestNeighbors(
|
|
306
|
+
algorithm="auto",
|
|
307
|
+
n_jobs=self.n_jobs,
|
|
308
|
+
n_neighbors=n_neighbors,
|
|
309
|
+
metric=self.metric,
|
|
310
|
+
)
|
|
311
|
+
t0 = time()
|
|
312
|
+
knn.fit(X)
|
|
313
|
+
duration = time() - t0
|
|
314
|
+
if self.verbose:
|
|
315
|
+
print(
|
|
316
|
+
"[t-SNE] Indexed {} samples in {:.3f}s...".format(n_samples, duration)
|
|
317
|
+
)
|
|
318
|
+
|
|
319
|
+
t0 = time()
|
|
320
|
+
distances_nn = knn.kneighbors_graph(mode="distance")
|
|
321
|
+
duration = time() - t0
|
|
322
|
+
if self.verbose:
|
|
323
|
+
print(
|
|
324
|
+
"[t-SNE] Computed neighbors for {} samples "
|
|
325
|
+
"in {:.3f}s...".format(n_samples, duration)
|
|
326
|
+
)
|
|
327
|
+
|
|
328
|
+
# Free the memory used by the ball_tree
|
|
329
|
+
del knn
|
|
330
|
+
|
|
331
|
+
if (
|
|
332
|
+
getattr(self, "square_distances", True) is True
|
|
333
|
+
or self.metric == "euclidean"
|
|
334
|
+
):
|
|
335
|
+
# knn return the euclidean distance but we need it squared
|
|
336
|
+
# to be consistent with the 'exact' method. Note that the
|
|
337
|
+
# the method was derived using the euclidean method as in the
|
|
338
|
+
# input space. Not sure of the implication of using a different
|
|
339
|
+
# metric.
|
|
340
|
+
distances_nn.data **= 2
|
|
341
|
+
|
|
342
|
+
# compute the joint probability distribution for the input space
|
|
343
|
+
P = _joint_probabilities_nn(distances_nn, self.perplexity, self.verbose)
|
|
344
|
+
|
|
345
|
+
if isinstance(self._init, np.ndarray):
|
|
346
|
+
X_embedded = self._init
|
|
347
|
+
elif self._init == "pca":
|
|
348
|
+
pca = PCA(
|
|
349
|
+
n_components=self.n_components,
|
|
350
|
+
svd_solver="randomized",
|
|
351
|
+
random_state=random_state,
|
|
352
|
+
)
|
|
353
|
+
X_embedded = pca.fit_transform(X).astype(np.float32, copy=False)
|
|
354
|
+
warnings.warn(
|
|
355
|
+
"The PCA initialization in TSNE will change to "
|
|
356
|
+
"have the standard deviation of PC1 equal to 1e-4 "
|
|
357
|
+
"in 1.2. This will ensure better convergence.",
|
|
358
|
+
FutureWarning,
|
|
359
|
+
)
|
|
360
|
+
elif self._init == "random":
|
|
361
|
+
# The embedding is initialized with iid samples from Gaussians with
|
|
362
|
+
# standard deviation 1e-4.
|
|
363
|
+
X_embedded = 1e-4 * random_state.randn(n_samples, self.n_components).astype(
|
|
364
|
+
np.float32
|
|
365
|
+
)
|
|
366
|
+
else:
|
|
367
|
+
raise ValueError("'init' must be 'pca', 'random', or " "a numpy array")
|
|
368
|
+
|
|
369
|
+
# Degrees of freedom of the Student's t-distribution. The suggestion
|
|
370
|
+
# degrees_of_freedom = n_components - 1 comes from
|
|
371
|
+
# "Learning a Parametric Embedding by Preserving Local Structure"
|
|
372
|
+
# Laurens van der Maaten, 2009.
|
|
373
|
+
degrees_of_freedom = max(self.n_components - 1, 1)
|
|
374
|
+
|
|
375
|
+
_patching_status = PatchingConditionsChain("sklearn.manifold.TSNE._tsne")
|
|
376
|
+
_patching_status.and_conditions(
|
|
377
|
+
[
|
|
378
|
+
(
|
|
379
|
+
self.method == "barnes_hut",
|
|
380
|
+
'Used t-SNE method is not "barnes_hut" which is the only supported.',
|
|
381
|
+
),
|
|
382
|
+
(self.n_components == 2, "Number of components != 2."),
|
|
383
|
+
(self.verbose == 0, "Verbose mode is set."),
|
|
384
|
+
(
|
|
385
|
+
daal_check_version((2021, "P", 600)),
|
|
386
|
+
"oneDAL version is lower than 2021.6.",
|
|
387
|
+
),
|
|
388
|
+
]
|
|
389
|
+
)
|
|
390
|
+
_dal_ready = _patching_status.get_status(logs=True)
|
|
391
|
+
|
|
392
|
+
if _dal_ready:
|
|
393
|
+
X_embedded = check_array(X_embedded, dtype=[np.float32, np.float64])
|
|
394
|
+
return self._daal_tsne(P, n_samples, X_embedded=X_embedded)
|
|
395
|
+
return self._tsne(
|
|
396
|
+
P,
|
|
397
|
+
degrees_of_freedom,
|
|
398
|
+
n_samples,
|
|
399
|
+
X_embedded=X_embedded,
|
|
400
|
+
neighbors=neighbors_nn,
|
|
401
|
+
skip_num_points=skip_num_points,
|
|
402
|
+
)
|
|
403
|
+
|
|
404
|
+
fit.__doc__ = BaseTSNE.fit.__doc__
|
|
405
|
+
fit_transform.__doc__ = BaseTSNE.fit_transform.__doc__
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# ==============================================================================
|
|
2
|
+
# Copyright 2020 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 ._pairwise import pairwise_distances
|
|
18
|
+
from ._ranking import roc_auc_score
|
|
19
|
+
|
|
20
|
+
__all__ = ["roc_auc_score", "pairwise_distances"]
|
scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_pairwise.py
ADDED
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
# ===============================================================================
|
|
2
|
+
# Copyright 2014 Intel Corporation
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
# ===============================================================================
|
|
16
|
+
|
|
17
|
+
import warnings
|
|
18
|
+
from functools import partial
|
|
19
|
+
|
|
20
|
+
import numpy as np
|
|
21
|
+
from sklearn.exceptions import DataConversionWarning
|
|
22
|
+
from sklearn.metrics import pairwise_distances as pairwise_distances_original
|
|
23
|
+
from sklearn.metrics.pairwise import (
|
|
24
|
+
_VALID_METRICS,
|
|
25
|
+
PAIRWISE_BOOLEAN_FUNCTIONS,
|
|
26
|
+
PAIRWISE_DISTANCE_FUNCTIONS,
|
|
27
|
+
_pairwise_callable,
|
|
28
|
+
_parallel_pairwise,
|
|
29
|
+
check_pairwise_arrays,
|
|
30
|
+
)
|
|
31
|
+
from sklearn.utils._joblib import effective_n_jobs
|
|
32
|
+
from sklearn.utils.validation import check_non_negative
|
|
33
|
+
|
|
34
|
+
try:
|
|
35
|
+
from sklearn.metrics.pairwise import _precompute_metric_params
|
|
36
|
+
except ImportError:
|
|
37
|
+
|
|
38
|
+
def _precompute_metric_params(*args, **kwrds):
|
|
39
|
+
return dict()
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
from scipy.sparse import issparse
|
|
43
|
+
from scipy.spatial import distance
|
|
44
|
+
|
|
45
|
+
import daal4py
|
|
46
|
+
from daal4py.sklearn.utils.validation import _daal_check_array
|
|
47
|
+
|
|
48
|
+
from .._utils import PatchingConditionsChain, getFPType, sklearn_check_version
|
|
49
|
+
|
|
50
|
+
if sklearn_check_version("1.3"):
|
|
51
|
+
from sklearn.utils._param_validation import (
|
|
52
|
+
Hidden,
|
|
53
|
+
Integral,
|
|
54
|
+
StrOptions,
|
|
55
|
+
validate_params,
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def _daal4py_cosine_distance_dense(X):
|
|
60
|
+
X_fptype = getFPType(X)
|
|
61
|
+
alg = daal4py.cosine_distance(fptype=X_fptype, method="defaultDense")
|
|
62
|
+
res = alg.compute(X)
|
|
63
|
+
return res.cosineDistance
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def _daal4py_correlation_distance_dense(X):
|
|
67
|
+
X_fptype = getFPType(X)
|
|
68
|
+
alg = daal4py.correlation_distance(fptype=X_fptype, method="defaultDense")
|
|
69
|
+
res = alg.compute(X)
|
|
70
|
+
return res.correlationDistance
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def _pairwise_distances(
|
|
74
|
+
X, Y=None, metric="euclidean", *, n_jobs=None, force_all_finite=True, **kwds
|
|
75
|
+
):
|
|
76
|
+
if metric not in _VALID_METRICS and not callable(metric) and metric != "precomputed":
|
|
77
|
+
raise ValueError(
|
|
78
|
+
"Unknown metric %s. Valid metrics are %s, or 'precomputed', "
|
|
79
|
+
"or a callable" % (metric, _VALID_METRICS)
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
X = _daal_check_array(
|
|
83
|
+
X, accept_sparse=["csr", "csc", "coo"], force_all_finite=force_all_finite
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
_patching_status = PatchingConditionsChain("sklearn.metrics.pairwise_distances")
|
|
87
|
+
_dal_ready = _patching_status.and_conditions(
|
|
88
|
+
[
|
|
89
|
+
(
|
|
90
|
+
metric == "cosine" or metric == "correlation",
|
|
91
|
+
f"'{metric}' metric is not supported. "
|
|
92
|
+
"Only 'cosine' and 'correlation' metrics are supported.",
|
|
93
|
+
),
|
|
94
|
+
(Y is None, "Second feature array is not supported."),
|
|
95
|
+
(not issparse(X), "X is sparse. Sparse input is not supported."),
|
|
96
|
+
(
|
|
97
|
+
X.dtype == np.float64,
|
|
98
|
+
f"{X.dtype} X data type is not supported. Only np.float64 is supported.",
|
|
99
|
+
),
|
|
100
|
+
]
|
|
101
|
+
)
|
|
102
|
+
_patching_status.write_log()
|
|
103
|
+
if _dal_ready:
|
|
104
|
+
if metric == "cosine":
|
|
105
|
+
return _daal4py_cosine_distance_dense(X)
|
|
106
|
+
if metric == "correlation":
|
|
107
|
+
return _daal4py_correlation_distance_dense(X)
|
|
108
|
+
raise ValueError(f"'{metric}' distance is wrong for daal4py.")
|
|
109
|
+
if metric == "precomputed":
|
|
110
|
+
X, _ = check_pairwise_arrays(
|
|
111
|
+
X, Y, precomputed=True, force_all_finite=force_all_finite
|
|
112
|
+
)
|
|
113
|
+
whom = (
|
|
114
|
+
"`pairwise_distances`. Precomputed distance "
|
|
115
|
+
" need to have non-negative values."
|
|
116
|
+
)
|
|
117
|
+
check_non_negative(X, whom=whom)
|
|
118
|
+
return X
|
|
119
|
+
if metric in PAIRWISE_DISTANCE_FUNCTIONS:
|
|
120
|
+
func = PAIRWISE_DISTANCE_FUNCTIONS[metric]
|
|
121
|
+
elif callable(metric):
|
|
122
|
+
func = partial(
|
|
123
|
+
_pairwise_callable, metric=metric, force_all_finite=force_all_finite, **kwds
|
|
124
|
+
)
|
|
125
|
+
else:
|
|
126
|
+
if issparse(X) or issparse(Y):
|
|
127
|
+
raise TypeError("scipy distance metrics do not" " support sparse matrices.")
|
|
128
|
+
|
|
129
|
+
dtype = bool if metric in PAIRWISE_BOOLEAN_FUNCTIONS else None
|
|
130
|
+
|
|
131
|
+
if dtype == bool and (X.dtype != bool or (Y is not None and Y.dtype != bool)):
|
|
132
|
+
msg = "Data was converted to boolean for metric %s" % metric
|
|
133
|
+
warnings.warn(msg, DataConversionWarning)
|
|
134
|
+
|
|
135
|
+
X, Y = check_pairwise_arrays(X, Y, dtype=dtype, force_all_finite=force_all_finite)
|
|
136
|
+
|
|
137
|
+
# precompute data-derived metric params
|
|
138
|
+
params = _precompute_metric_params(X, Y, metric=metric, **kwds)
|
|
139
|
+
kwds.update(**params)
|
|
140
|
+
|
|
141
|
+
if effective_n_jobs(n_jobs) == 1 and X is Y:
|
|
142
|
+
return distance.squareform(distance.pdist(X, metric=metric, **kwds))
|
|
143
|
+
func = partial(distance.cdist, metric=metric, **kwds)
|
|
144
|
+
|
|
145
|
+
return _parallel_pairwise(X, Y, func, n_jobs, **kwds)
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
# logic to deprecate `force_all_finite` from sklearn:
|
|
149
|
+
# it was renamed to `ensure_all_finite` since 1.6 and will be removed in 1.8
|
|
150
|
+
if sklearn_check_version("1.3"):
|
|
151
|
+
pairwise_distances_parameters = {
|
|
152
|
+
"X": ["array-like", "sparse matrix"],
|
|
153
|
+
"Y": ["array-like", "sparse matrix", None],
|
|
154
|
+
"metric": [StrOptions(set(_VALID_METRICS) | {"precomputed"}), callable],
|
|
155
|
+
"n_jobs": [Integral, None],
|
|
156
|
+
"force_all_finite": [
|
|
157
|
+
"boolean",
|
|
158
|
+
StrOptions({"allow-nan"}),
|
|
159
|
+
Hidden(StrOptions({"deprecated"})),
|
|
160
|
+
],
|
|
161
|
+
"ensure_all_finite": [
|
|
162
|
+
"boolean",
|
|
163
|
+
StrOptions({"allow-nan"}),
|
|
164
|
+
Hidden(None),
|
|
165
|
+
],
|
|
166
|
+
}
|
|
167
|
+
if sklearn_check_version("1.6"):
|
|
168
|
+
if sklearn_check_version("1.8"):
|
|
169
|
+
del pairwise_distances_parameters["force_all_finite"]
|
|
170
|
+
|
|
171
|
+
def pairwise_distances(
|
|
172
|
+
X,
|
|
173
|
+
Y=None,
|
|
174
|
+
metric="euclidean",
|
|
175
|
+
*,
|
|
176
|
+
n_jobs=None,
|
|
177
|
+
ensure_all_finite=None,
|
|
178
|
+
**kwds,
|
|
179
|
+
):
|
|
180
|
+
return _pairwise_distances(
|
|
181
|
+
X,
|
|
182
|
+
Y,
|
|
183
|
+
metric,
|
|
184
|
+
n_jobs=n_jobs,
|
|
185
|
+
force_all_finite=ensure_all_finite,
|
|
186
|
+
**kwds,
|
|
187
|
+
)
|
|
188
|
+
|
|
189
|
+
else:
|
|
190
|
+
from sklearn.utils.deprecation import _deprecate_force_all_finite
|
|
191
|
+
|
|
192
|
+
def pairwise_distances(
|
|
193
|
+
X,
|
|
194
|
+
Y=None,
|
|
195
|
+
metric="euclidean",
|
|
196
|
+
*,
|
|
197
|
+
n_jobs=None,
|
|
198
|
+
force_all_finite="deprecated",
|
|
199
|
+
ensure_all_finite=None,
|
|
200
|
+
**kwds,
|
|
201
|
+
):
|
|
202
|
+
force_all_finite = _deprecate_force_all_finite(
|
|
203
|
+
force_all_finite, ensure_all_finite
|
|
204
|
+
)
|
|
205
|
+
return _pairwise_distances(
|
|
206
|
+
X, Y, metric, n_jobs=n_jobs, force_all_finite=force_all_finite, **kwds
|
|
207
|
+
)
|
|
208
|
+
|
|
209
|
+
else:
|
|
210
|
+
del pairwise_distances_parameters["ensure_all_finite"]
|
|
211
|
+
|
|
212
|
+
def pairwise_distances(
|
|
213
|
+
X,
|
|
214
|
+
Y=None,
|
|
215
|
+
metric="euclidean",
|
|
216
|
+
*,
|
|
217
|
+
n_jobs=None,
|
|
218
|
+
force_all_finite=True,
|
|
219
|
+
**kwds,
|
|
220
|
+
):
|
|
221
|
+
return _pairwise_distances(
|
|
222
|
+
X,
|
|
223
|
+
Y,
|
|
224
|
+
metric,
|
|
225
|
+
n_jobs=n_jobs,
|
|
226
|
+
force_all_finite=force_all_finite,
|
|
227
|
+
**kwds,
|
|
228
|
+
)
|
|
229
|
+
|
|
230
|
+
pairwise_distances = validate_params(
|
|
231
|
+
pairwise_distances_parameters,
|
|
232
|
+
prefer_skip_nested_validation=True,
|
|
233
|
+
)(pairwise_distances)
|
|
234
|
+
else:
|
|
235
|
+
pairwise_distances = _pairwise_distances
|
|
236
|
+
pairwise_distances.__doc__ = pairwise_distances_original.__doc__
|