scikit-learn-intelex 2025.10.0__py313-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.
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/__init__.py +73 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/__main__.py +58 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/_daal4py.cp313-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mb/__init__.py +94 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mb/gbt_convertors.py +1199 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mb/logistic_regression_builders.py +211 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mb/tree_based_builders.py +425 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/mpi_transceiver.cp313-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/__init__.py +40 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/_n_jobs_support.py +252 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/_utils.py +245 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/__init__.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/dbscan.py +165 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/k_means.py +565 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/tests/test_dbscan.py +109 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/decomposition/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/decomposition/_pca.py +528 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/AdaBoostClassifier.py +192 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/GBTDAAL.py +333 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/__init__.py +27 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/_forest.py +1285 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/tests/test_decision_forest.py +206 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/__init__.py +29 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_coordinate_descent.py +826 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_linear.py +269 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_ridge.py +290 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/coordinate_descent.py +17 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/linear.py +17 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_loss.py +195 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +561 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/ridge.py +17 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_enet.py +157 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_linear.py +198 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_ridge.py +69 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/manifold/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/manifold/_t_sne.py +432 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/__init__.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_pairwise.py +259 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_ranking.py +210 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/_split.py +309 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/tests/test_split.py +56 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/__init__.py +0 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/dispatcher.py +232 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/_models_info.py +164 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_monkeypatch.py +71 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_patching.py +90 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/utils/_launch_algorithms.py +117 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/__init__.py +21 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_base.py +493 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_classification.py +136 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_regression.py +72 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_unsupervised.py +55 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/tests/test_kneighbors.py +113 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/svm/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/svm/svm.py +736 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils/__init__.py +21 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils/base.py +80 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils/tests/test_utils.py +51 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/daal4py/sklearn/utils/validation.py +772 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/__init__.py +151 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_config.py +80 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_device_offload.py +199 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp313-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp313-win_amd64.pyd +0 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/__init__.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/basic_statistics.py +151 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/incremental_basic_statistics.py +165 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_basic_statistics.py +241 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_incremental_basic_statistics.py +279 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/utils.py +50 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/__init__.py +27 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/dbscan.py +80 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/kmeans.py +582 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/kmeans_init.py +145 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/tests/test_dbscan.py +125 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans.py +88 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans_init.py +93 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/_backend.py +258 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/_estimator_checks.py +47 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/_mixin.py +62 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/hyperparameters.py +148 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/common/tests/test_sycl.py +148 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/__init__.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/covariance.py +121 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/incremental_covariance.py +151 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/tests/test_covariance.py +50 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/covariance/tests/test_incremental_covariance.py +190 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/__init__.py +29 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +158 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/_dlpack.py +64 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/_sycl_usm.py +63 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/tests/common.py +131 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/datatypes/tests/test_data.py +686 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/__init__.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/incremental_pca.py +218 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/pca.py +124 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/decomposition/tests/test_incremental_pca.py +291 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/dummy/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/dummy/dummy.py +137 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/ensemble/__init__.py +29 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/ensemble/forest.py +781 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/ensemble/tests/test_random_forest.py +97 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/__init__.py +27 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/incremental_linear_model.py +201 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/linear_model.py +230 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/logistic_regression.py +293 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_linear_regression.py +213 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_ridge_regression.py +171 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_linear_regression.py +252 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_logistic_regression.py +95 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_ridge.py +95 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/neighbors/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/neighbors/neighbors.py +690 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/neighbors/tests/test_knn_classification.py +49 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/__init__.py +27 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/get_tree.py +27 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/kernel_functions.py +202 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/primitives/tests/test_kernel_functions.py +159 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/svm.py +592 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_csr_svm.py +352 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvc.py +204 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvr.py +210 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_svc.py +168 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/svm/tests/test_svr.py +243 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/tests/test_common.py +71 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/tests/utils/_dataframes_support.py +179 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/tests/utils/_device_selection.py +94 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/_array_api.py +98 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/_sycl_queue_manager.py +213 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/_third_party.py +220 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/tests/test_validation.py +142 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/onedal/utils/validation.py +503 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/__init__.py +69 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/__main__.py +58 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/_config.py +163 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +205 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/_utils.py +219 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/base.py +109 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +241 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +338 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +405 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +455 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/__init__.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/dbscan.py +199 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +399 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +38 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +157 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/conftest.py +82 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/covariance/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +440 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +307 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/decomposition/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +558 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +164 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dispatcher.py +572 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +629 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dummy/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dummy/_dummy.py +615 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/dummy/tests/test_dummy.py +62 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/ensemble/__init__.py +29 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/ensemble/_forest.py +1799 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +196 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/glob/__main__.py +72 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/glob/dispatcher.py +101 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/__init__.py +32 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +44 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +427 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_ridge.py +407 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +363 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +466 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/ridge.py +407 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +267 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_ridge.py +214 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +167 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +565 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_ridge.py +256 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/manifold/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/manifold/t_sne.py +28 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +256 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/metrics/__init__.py +23 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/metrics/pairwise.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/metrics/ranking.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +39 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/model_selection/__init__.py +21 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/model_selection/split.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +34 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/__init__.py +27 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/_lof.py +189 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/common.py +313 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +189 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +167 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +170 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +82 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/__init__.py +17 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +261 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +112 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +406 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +390 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/__init__.py +25 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +24 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +30 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +117 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +314 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +30 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +26 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +21 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +108 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +180 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +24 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/incremental_covariance.py +29 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_covariance_spmd.py +120 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +200 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/__init__.py +20 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/incremental_pca.py +23 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +23 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +276 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_pca_spmd.py +146 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +299 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/tests/test_forest_spmd.py +299 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +21 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/incremental_linear_model.py +28 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +24 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +21 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +345 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +162 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +169 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +23 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +433 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/__init__.py +29 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/_common.py +403 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/nusvc.py +278 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/nusvr.py +158 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/svc.py +306 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/svr.py +155 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +124 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_common.py +607 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_config.py +256 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_hyperparameters.py +111 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +335 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +269 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +111 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_parallel.py +48 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_patching.py +418 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +335 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/utils/__init__.py +48 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/utils/base.py +420 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/tests/utils/spmd.py +198 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/__init__.py +19 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/_array_api.py +217 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/class_weight.py +100 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/parallel.py +97 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/tests/test_class_weight.py +69 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/tests/test_validation.py +238 -0
- scikit_learn_intelex-2025.10.0.data/data/Lib/site-packages/sklearnex/utils/validation.py +212 -0
- scikit_learn_intelex-2025.10.0.dist-info/LICENSE.txt +202 -0
- scikit_learn_intelex-2025.10.0.dist-info/METADATA +182 -0
- scikit_learn_intelex-2025.10.0.dist-info/RECORD +267 -0
- scikit_learn_intelex-2025.10.0.dist-info/WHEEL +5 -0
- scikit_learn_intelex-2025.10.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,736 @@
|
|
|
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
|
+
from __future__ import print_function
|
|
18
|
+
|
|
19
|
+
import numpy as np
|
|
20
|
+
import sklearn.svm._base as svm_base
|
|
21
|
+
import sklearn.svm._classes as svm_classes
|
|
22
|
+
from scipy import sparse as sp
|
|
23
|
+
from sklearn.calibration import CalibratedClassifierCV
|
|
24
|
+
from sklearn.exceptions import NotFittedError
|
|
25
|
+
from sklearn.model_selection import StratifiedKFold
|
|
26
|
+
from sklearn.utils import check_random_state
|
|
27
|
+
from sklearn.utils.multiclass import _ovr_decision_function
|
|
28
|
+
from sklearn.utils.validation import (
|
|
29
|
+
_check_sample_weight,
|
|
30
|
+
_num_samples,
|
|
31
|
+
check_consistent_length,
|
|
32
|
+
check_is_fitted,
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
import daal4py
|
|
36
|
+
|
|
37
|
+
from .._utils import PatchingConditionsChain, getFPType, make2d
|
|
38
|
+
from ..utils.validation import validate_data
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def _get_libsvm_impl():
|
|
42
|
+
return ["c_svc", "nu_svc", "one_class", "epsilon_svr", "nu_svr"]
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def _dual_coef_getter(self):
|
|
46
|
+
return self._internal_dual_coef_
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def _intercept_getter(self):
|
|
50
|
+
return self._internal_intercept_
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def _dual_coef_setter(self, val):
|
|
54
|
+
self._internal_dual_coef_ = val
|
|
55
|
+
if hasattr(self, "daal_model_"):
|
|
56
|
+
del self.daal_model_
|
|
57
|
+
if getattr(self, "_daal_fit", False):
|
|
58
|
+
self._daal_fit = False
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def _intercept_setter(self, val):
|
|
62
|
+
self._internal_intercept_ = val
|
|
63
|
+
if hasattr(self, "daal_model_"):
|
|
64
|
+
del self.daal_model_
|
|
65
|
+
if getattr(self, "_daal_fit", False):
|
|
66
|
+
self._daal_fit = False
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
# Methods to extract coefficients
|
|
70
|
+
def group_indices_by_class(num_classes, sv_ind_by_clf, labels):
|
|
71
|
+
sv_ind_counters = np.zeros(num_classes, dtype=np.intp)
|
|
72
|
+
|
|
73
|
+
num_of_sv_per_class = np.bincount(labels[np.hstack(sv_ind_by_clf)])
|
|
74
|
+
sv_ind_by_class = [np.empty(n, dtype=np.int32) for n in num_of_sv_per_class]
|
|
75
|
+
|
|
76
|
+
for indices_per_clf in sv_ind_by_clf:
|
|
77
|
+
for sv_index in indices_per_clf:
|
|
78
|
+
sv_label = labels[sv_index]
|
|
79
|
+
i = sv_ind_counters[sv_label]
|
|
80
|
+
sv_ind_by_class[sv_label][i] = sv_index
|
|
81
|
+
sv_ind_counters[sv_label] += 1
|
|
82
|
+
|
|
83
|
+
return sv_ind_by_class
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def map_sv_to_columns_in_dual_coef_matrix(sv_ind_by_class):
|
|
87
|
+
from collections import defaultdict
|
|
88
|
+
|
|
89
|
+
sv_ind_mapping = defaultdict(lambda: -1)
|
|
90
|
+
p = 0
|
|
91
|
+
for indices_per_class in sv_ind_by_class:
|
|
92
|
+
indices_per_class.sort()
|
|
93
|
+
for sv_index in indices_per_class:
|
|
94
|
+
if sv_ind_mapping[sv_index] == -1:
|
|
95
|
+
sv_ind_mapping[sv_index] = p
|
|
96
|
+
p += 1
|
|
97
|
+
return sv_ind_mapping
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
def map_to_lexicographic(n):
|
|
101
|
+
"""Returns permutation of reverse lexicographics to
|
|
102
|
+
lexicographics orders for pairs of n consecutive integer indexes
|
|
103
|
+
"""
|
|
104
|
+
from itertools import combinations, count
|
|
105
|
+
|
|
106
|
+
two_class_order_gen = ((j, i) for i in range(n) for j in range(i))
|
|
107
|
+
reverse_lookup = {key: val for key, val in zip(two_class_order_gen, count(0))}
|
|
108
|
+
perm_iter = (reverse_lookup[pair] for pair in combinations(range(n), 2))
|
|
109
|
+
return np.fromiter(perm_iter, dtype=np.intp)
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
def permute_list(li, perm):
|
|
113
|
+
"Rearrange `li` according to `perm`"
|
|
114
|
+
return [li[i] for i in perm]
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
def extract_dual_coef(num_classes, sv_ind_by_clf, sv_coef_by_clf, labels):
|
|
118
|
+
"""Construct dual coefficients array in SKLearn peculiar layout,
|
|
119
|
+
as well corresponding support vector indexes
|
|
120
|
+
"""
|
|
121
|
+
sv_ind_by_class = group_indices_by_class(num_classes, sv_ind_by_clf, labels)
|
|
122
|
+
sv_ind_mapping = map_sv_to_columns_in_dual_coef_matrix(sv_ind_by_class)
|
|
123
|
+
|
|
124
|
+
num_unique_sv = len(sv_ind_mapping)
|
|
125
|
+
dc_dt = sv_coef_by_clf[0].dtype
|
|
126
|
+
|
|
127
|
+
dual_coef = np.zeros((num_classes - 1, num_unique_sv), dtype=dc_dt)
|
|
128
|
+
support_ = np.empty((num_unique_sv,), dtype=np.int32)
|
|
129
|
+
|
|
130
|
+
p = 0
|
|
131
|
+
for i in range(0, num_classes):
|
|
132
|
+
for j in range(i + 1, num_classes):
|
|
133
|
+
sv_ind_i_vs_j = sv_ind_by_clf[p]
|
|
134
|
+
sv_coef_i_vs_j = sv_coef_by_clf[p]
|
|
135
|
+
p += 1
|
|
136
|
+
|
|
137
|
+
for k, sv_index in enumerate(sv_ind_i_vs_j):
|
|
138
|
+
label = labels[sv_index]
|
|
139
|
+
col_index = sv_ind_mapping[sv_index]
|
|
140
|
+
if j == label:
|
|
141
|
+
row_index = i
|
|
142
|
+
else:
|
|
143
|
+
row_index = j - 1
|
|
144
|
+
dual_coef[row_index, col_index] = sv_coef_i_vs_j[k]
|
|
145
|
+
support_[col_index] = sv_index
|
|
146
|
+
|
|
147
|
+
return dual_coef, support_
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
def _daal4py_kf(kernel, X_fptype, gamma=1.0, is_sparse=False):
|
|
151
|
+
method = "fastCSR" if is_sparse else "defaultDense"
|
|
152
|
+
if kernel == "rbf":
|
|
153
|
+
sigma_value = np.sqrt(0.5 / gamma)
|
|
154
|
+
kf = daal4py.kernel_function_rbf(
|
|
155
|
+
fptype=X_fptype, method=method, sigma=sigma_value
|
|
156
|
+
)
|
|
157
|
+
elif kernel == "linear":
|
|
158
|
+
kf = daal4py.kernel_function_linear(fptype=X_fptype, method=method)
|
|
159
|
+
else:
|
|
160
|
+
raise ValueError(
|
|
161
|
+
"_daal4py_fit received unexpected kernel specification {}.".format(kernel)
|
|
162
|
+
)
|
|
163
|
+
|
|
164
|
+
return kf
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
def _daal4py_check_weight(self, X, y, sample_weight):
|
|
168
|
+
ww = None
|
|
169
|
+
if sample_weight.shape[0] > 0:
|
|
170
|
+
sample_weight = _check_sample_weight(sample_weight, X)
|
|
171
|
+
if np.all(sample_weight <= 0):
|
|
172
|
+
raise ValueError("Invalid input - all samples have zero or negative weights.")
|
|
173
|
+
if np.any(sample_weight <= 0):
|
|
174
|
+
if len(np.unique(y[sample_weight > 0])) != len(self.classes_):
|
|
175
|
+
raise ValueError(
|
|
176
|
+
"Invalid input - all samples with positive weights "
|
|
177
|
+
"have the same label."
|
|
178
|
+
)
|
|
179
|
+
ww = sample_weight
|
|
180
|
+
elif self.class_weight is not None:
|
|
181
|
+
ww = np.ones(X.shape[0], dtype=np.float64)
|
|
182
|
+
if self.class_weight is not None:
|
|
183
|
+
for i, v in enumerate(self.class_weight_):
|
|
184
|
+
ww[y == i] *= v
|
|
185
|
+
return ww
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
def _daal4py_svm(
|
|
189
|
+
fptype,
|
|
190
|
+
C,
|
|
191
|
+
accuracyThreshold,
|
|
192
|
+
tau,
|
|
193
|
+
maxIterations,
|
|
194
|
+
cacheSize,
|
|
195
|
+
doShrinking,
|
|
196
|
+
kernel,
|
|
197
|
+
nClasses=2,
|
|
198
|
+
):
|
|
199
|
+
svm_train = daal4py.svm_training(
|
|
200
|
+
method="thunder",
|
|
201
|
+
fptype=fptype,
|
|
202
|
+
C=C,
|
|
203
|
+
accuracyThreshold=accuracyThreshold,
|
|
204
|
+
tau=tau,
|
|
205
|
+
maxIterations=maxIterations,
|
|
206
|
+
cacheSize=cacheSize,
|
|
207
|
+
doShrinking=doShrinking,
|
|
208
|
+
kernel=kernel,
|
|
209
|
+
)
|
|
210
|
+
if nClasses == 2:
|
|
211
|
+
algo = svm_train
|
|
212
|
+
else:
|
|
213
|
+
algo = daal4py.multi_class_classifier_training(
|
|
214
|
+
nClasses=nClasses,
|
|
215
|
+
fptype=fptype,
|
|
216
|
+
method="oneAgainstOne",
|
|
217
|
+
training=svm_train,
|
|
218
|
+
)
|
|
219
|
+
|
|
220
|
+
return algo
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
def _daal4py_fit(self, X, y_inp, sample_weight, kernel, is_sparse=False):
|
|
224
|
+
if self.C <= 0:
|
|
225
|
+
raise ValueError("C <= 0")
|
|
226
|
+
num_classes = len(self.classes_)
|
|
227
|
+
|
|
228
|
+
if sample_weight is not None:
|
|
229
|
+
sample_weight = make2d(sample_weight)
|
|
230
|
+
|
|
231
|
+
y = make2d(y_inp)
|
|
232
|
+
X_fptype = getFPType(X)
|
|
233
|
+
kf = _daal4py_kf(kernel, X_fptype, gamma=self._gamma, is_sparse=is_sparse)
|
|
234
|
+
algo = _daal4py_svm(
|
|
235
|
+
fptype=X_fptype,
|
|
236
|
+
C=float(self.C),
|
|
237
|
+
accuracyThreshold=float(self.tol),
|
|
238
|
+
tau=1e-12,
|
|
239
|
+
maxIterations=int(self.max_iter if self.max_iter > 0 else 2**30),
|
|
240
|
+
cacheSize=int(self.cache_size * 1024 * 1024),
|
|
241
|
+
doShrinking=bool(self.shrinking),
|
|
242
|
+
kernel=kf,
|
|
243
|
+
nClasses=num_classes,
|
|
244
|
+
)
|
|
245
|
+
|
|
246
|
+
res = algo.compute(data=X, labels=y, weights=sample_weight)
|
|
247
|
+
|
|
248
|
+
model = res.model
|
|
249
|
+
self.daal_model_ = model
|
|
250
|
+
|
|
251
|
+
if num_classes == 2:
|
|
252
|
+
# binary
|
|
253
|
+
two_class_sv_ind_ = model.SupportIndices
|
|
254
|
+
two_class_sv_ind_ = two_class_sv_ind_.ravel()
|
|
255
|
+
|
|
256
|
+
# support indexes need permutation to arrange them
|
|
257
|
+
# into the same layout as that of Scikit-Learn
|
|
258
|
+
tmp = np.empty(
|
|
259
|
+
two_class_sv_ind_.shape,
|
|
260
|
+
dtype=np.dtype([("label", y.dtype), ("ind", two_class_sv_ind_.dtype)]),
|
|
261
|
+
)
|
|
262
|
+
tmp["label"][:] = y[two_class_sv_ind_].ravel()
|
|
263
|
+
tmp["ind"][:] = two_class_sv_ind_
|
|
264
|
+
perm = np.argsort(tmp, order=["label", "ind"])
|
|
265
|
+
del tmp
|
|
266
|
+
|
|
267
|
+
self.support_ = two_class_sv_ind_[perm]
|
|
268
|
+
self.support_vectors_ = X[self.support_]
|
|
269
|
+
|
|
270
|
+
self.dual_coef_ = model.ClassificationCoefficients.T
|
|
271
|
+
if is_sparse:
|
|
272
|
+
self.dual_coef_ = sp.csr_matrix(self.dual_coef_)
|
|
273
|
+
self.dual_coef_ = self.dual_coef_[:, perm]
|
|
274
|
+
self.intercept_ = np.array([model.Bias])
|
|
275
|
+
|
|
276
|
+
else:
|
|
277
|
+
# multi-class
|
|
278
|
+
intercepts = []
|
|
279
|
+
coefs = []
|
|
280
|
+
sv_ind_by_clf = []
|
|
281
|
+
label_indexes = []
|
|
282
|
+
|
|
283
|
+
model_id = 0
|
|
284
|
+
for i1 in range(num_classes):
|
|
285
|
+
label_indexes.append(np.where(y == i1)[0])
|
|
286
|
+
for i2 in range(i1):
|
|
287
|
+
svm_model = model.TwoClassClassifierModel(model_id)
|
|
288
|
+
|
|
289
|
+
# Indices correspond to input features with label i1
|
|
290
|
+
# followed by input features with label i2
|
|
291
|
+
two_class_sv_ind_ = svm_model.SupportIndices
|
|
292
|
+
# Map these indexes to indexes of the training data
|
|
293
|
+
sv_ind = np.take(
|
|
294
|
+
np.hstack((label_indexes[i1], label_indexes[i2])),
|
|
295
|
+
two_class_sv_ind_.ravel(),
|
|
296
|
+
)
|
|
297
|
+
sv_ind_by_clf.append(sv_ind)
|
|
298
|
+
|
|
299
|
+
# svs_ = getArrayFromNumericTable(svm_model.getSupportVectors())
|
|
300
|
+
# assert np.array_equal(svs_, X[sv_ind])
|
|
301
|
+
|
|
302
|
+
intercepts.append(-svm_model.Bias)
|
|
303
|
+
coefs.append(-svm_model.ClassificationCoefficients)
|
|
304
|
+
model_id += 1
|
|
305
|
+
|
|
306
|
+
# permute solutions to lexicographic ordering
|
|
307
|
+
to_lex_perm = map_to_lexicographic(num_classes)
|
|
308
|
+
sv_ind_by_clf = permute_list(sv_ind_by_clf, to_lex_perm)
|
|
309
|
+
sv_coef_by_clf = permute_list(coefs, to_lex_perm)
|
|
310
|
+
intercepts = permute_list(intercepts, to_lex_perm)
|
|
311
|
+
|
|
312
|
+
self.dual_coef_, self.support_ = extract_dual_coef(
|
|
313
|
+
num_classes, # number of classes
|
|
314
|
+
sv_ind_by_clf, # support vector indexes by two-class classifiers
|
|
315
|
+
sv_coef_by_clf, # classification coefficients by two-class classifiers
|
|
316
|
+
y.squeeze().astype(np.intp, copy=False), # integer labels
|
|
317
|
+
)
|
|
318
|
+
if is_sparse:
|
|
319
|
+
self.dual_coef_ = sp.csr_matrix(self.dual_coef_)
|
|
320
|
+
self.support_vectors_ = X[self.support_]
|
|
321
|
+
self.intercept_ = np.array(intercepts)
|
|
322
|
+
|
|
323
|
+
indices = y.take(self.support_, axis=0)
|
|
324
|
+
self._n_support = np.array(
|
|
325
|
+
[np.sum(indices == i) for i, c in enumerate(self.classes_)], dtype=np.int32
|
|
326
|
+
)
|
|
327
|
+
|
|
328
|
+
self._probA = np.empty(0)
|
|
329
|
+
self._probB = np.empty(0)
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
def _compute_gamma(gamma, kernel, X):
|
|
333
|
+
"""
|
|
334
|
+
Computes actual value of 'gamma' parameter of RBF kernel
|
|
335
|
+
corresponding to SVC keyword values `gamma` and `kernel`, and feature
|
|
336
|
+
matrix X, with sparsity `sparse`.
|
|
337
|
+
|
|
338
|
+
In 0.20 gamma='scale' used to mean compute 'gamma' based on
|
|
339
|
+
column-wise standard deviation, but in 0.20.3 it was changed
|
|
340
|
+
to use column-wise variance.
|
|
341
|
+
|
|
342
|
+
See: https://github.com/scikit-learn/scikit-learn/pull/13221
|
|
343
|
+
"""
|
|
344
|
+
if gamma == "scale":
|
|
345
|
+
kernel_uses_gamma = not callable(kernel) and kernel not in (
|
|
346
|
+
"linear",
|
|
347
|
+
"precomputed",
|
|
348
|
+
)
|
|
349
|
+
if kernel_uses_gamma:
|
|
350
|
+
if sp.isspmatrix(X):
|
|
351
|
+
# var = E[X^2] - E[X]^2
|
|
352
|
+
X_sc = (X.multiply(X)).mean() - (X.mean()) ** 2
|
|
353
|
+
else:
|
|
354
|
+
X_sc = X.var()
|
|
355
|
+
else:
|
|
356
|
+
X_sc = 1.0 / X.shape[1]
|
|
357
|
+
if gamma == "scale":
|
|
358
|
+
if X_sc != 0:
|
|
359
|
+
_gamma = 1.0 / (X.shape[1] * X_sc)
|
|
360
|
+
else:
|
|
361
|
+
_gamma = 1.0
|
|
362
|
+
else:
|
|
363
|
+
_gamma = 1.0 / X.shape[1]
|
|
364
|
+
elif gamma == "auto":
|
|
365
|
+
_gamma = 1.0 / X.shape[1]
|
|
366
|
+
elif isinstance(gamma, str):
|
|
367
|
+
raise ValueError(
|
|
368
|
+
"When 'gamma' is a string, it should be either 'scale' or "
|
|
369
|
+
"'auto'. Got '{}' instead.".format(gamma)
|
|
370
|
+
)
|
|
371
|
+
else:
|
|
372
|
+
_gamma = gamma
|
|
373
|
+
|
|
374
|
+
return _gamma
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
def fit(self, X, y, sample_weight=None):
|
|
378
|
+
"""Fit the SVM model according to the given training data.
|
|
379
|
+
|
|
380
|
+
Parameters
|
|
381
|
+
----------
|
|
382
|
+
X : {array-like, sparse matrix}, shape (n_samples, n_features)
|
|
383
|
+
Training vectors, where n_samples is the number of samples
|
|
384
|
+
and n_features is the number of features.
|
|
385
|
+
For kernel="precomputed", the expected shape of X is
|
|
386
|
+
(n_samples, n_samples).
|
|
387
|
+
|
|
388
|
+
y : array-like, shape (n_samples,)
|
|
389
|
+
Target values (class labels in classification, real numbers in
|
|
390
|
+
regression)
|
|
391
|
+
|
|
392
|
+
sample_weight : array-like, shape (n_samples,)
|
|
393
|
+
Per-sample weights. Rescale C per sample. Higher weights
|
|
394
|
+
force the classifier to put more emphasis on these points.
|
|
395
|
+
|
|
396
|
+
Returns
|
|
397
|
+
-------
|
|
398
|
+
self : object
|
|
399
|
+
|
|
400
|
+
Notes
|
|
401
|
+
------
|
|
402
|
+
If X and y are not C-ordered and contiguous arrays of np.float64 and
|
|
403
|
+
X is not a scipy.sparse.csr_matrix, X and/or y may be copied.
|
|
404
|
+
|
|
405
|
+
If X is a dense array, then the other methods will not support sparse
|
|
406
|
+
matrices as input.
|
|
407
|
+
"""
|
|
408
|
+
rnd = check_random_state(self.random_state)
|
|
409
|
+
|
|
410
|
+
is_sparse = sp.isspmatrix(X)
|
|
411
|
+
if is_sparse and self.kernel == "precomputed":
|
|
412
|
+
raise TypeError("Sparse precomputed kernels are not supported.")
|
|
413
|
+
self._sparse = is_sparse and not callable(self.kernel)
|
|
414
|
+
|
|
415
|
+
if hasattr(self, "decision_function_shape"):
|
|
416
|
+
if self.decision_function_shape not in ("ovr", "ovo"):
|
|
417
|
+
raise ValueError(
|
|
418
|
+
f"decision_function_shape must be either 'ovr' or 'ovo', "
|
|
419
|
+
f"got {self.decision_function_shape}."
|
|
420
|
+
)
|
|
421
|
+
|
|
422
|
+
if callable(self.kernel):
|
|
423
|
+
check_consistent_length(X, y)
|
|
424
|
+
else:
|
|
425
|
+
X, y = validate_data(
|
|
426
|
+
self,
|
|
427
|
+
X,
|
|
428
|
+
y,
|
|
429
|
+
dtype=np.float64,
|
|
430
|
+
order="C",
|
|
431
|
+
accept_sparse="csr",
|
|
432
|
+
accept_large_sparse=False,
|
|
433
|
+
)
|
|
434
|
+
y = self._validate_targets(y)
|
|
435
|
+
|
|
436
|
+
sample_weight = np.asarray(
|
|
437
|
+
[] if sample_weight is None else sample_weight, dtype=np.float64
|
|
438
|
+
)
|
|
439
|
+
solver_type = _get_libsvm_impl().index(self._impl)
|
|
440
|
+
|
|
441
|
+
# input validation
|
|
442
|
+
n_samples = _num_samples(X)
|
|
443
|
+
if solver_type != 2 and n_samples != y.shape[0]:
|
|
444
|
+
raise ValueError(
|
|
445
|
+
"X and y have incompatible shapes.\n"
|
|
446
|
+
"X has %s samples, but y has %s." % (n_samples, y.shape[0])
|
|
447
|
+
)
|
|
448
|
+
|
|
449
|
+
if self.kernel == "precomputed" and n_samples != X.shape[1]:
|
|
450
|
+
raise ValueError("X.shape[0] should be equal to X.shape[1]")
|
|
451
|
+
|
|
452
|
+
if sample_weight.shape[0] > 0 and sample_weight.shape[0] != n_samples:
|
|
453
|
+
raise ValueError(
|
|
454
|
+
"sample_weight and X have incompatible shapes: "
|
|
455
|
+
"%r vs %r\n"
|
|
456
|
+
"Note: Sparse matrices cannot be indexed w/"
|
|
457
|
+
"boolean masks (use `indices=True` in CV)." % (sample_weight.shape, X.shape)
|
|
458
|
+
)
|
|
459
|
+
|
|
460
|
+
kernel = "precomputed" if callable(self.kernel) else self.kernel
|
|
461
|
+
if kernel == "precomputed":
|
|
462
|
+
self._gamma = 0.0
|
|
463
|
+
else:
|
|
464
|
+
self._gamma = _compute_gamma(self.gamma, kernel, X)
|
|
465
|
+
|
|
466
|
+
fit = self._sparse_fit if self._sparse else self._dense_fit
|
|
467
|
+
if self.verbose: # pragma: no cover
|
|
468
|
+
print("[LibSVM]", end="")
|
|
469
|
+
|
|
470
|
+
# see comment on the other call to np.iinfo in this file
|
|
471
|
+
seed = rnd.randint(np.iinfo("i").max)
|
|
472
|
+
|
|
473
|
+
_patching_status = PatchingConditionsChain("sklearn.svm.SVC.fit")
|
|
474
|
+
_dal_ready = _patching_status.and_conditions(
|
|
475
|
+
[
|
|
476
|
+
(
|
|
477
|
+
kernel in ["linear", "rbf"],
|
|
478
|
+
f"'{kernel}' kernel is not supported. "
|
|
479
|
+
"Only 'linear' and 'rbf' kernels are supported.",
|
|
480
|
+
)
|
|
481
|
+
]
|
|
482
|
+
)
|
|
483
|
+
_patching_status.write_log()
|
|
484
|
+
if _dal_ready:
|
|
485
|
+
sample_weight = _daal4py_check_weight(self, X, y, sample_weight)
|
|
486
|
+
|
|
487
|
+
self._daal_fit = True
|
|
488
|
+
_daal4py_fit(self, X, y, sample_weight, kernel, is_sparse=is_sparse)
|
|
489
|
+
self.fit_status_ = 0
|
|
490
|
+
|
|
491
|
+
if self.probability:
|
|
492
|
+
params = self.get_params()
|
|
493
|
+
params["probability"] = False
|
|
494
|
+
params["decision_function_shape"] = "ovr"
|
|
495
|
+
clf_base = SVC(**params)
|
|
496
|
+
try:
|
|
497
|
+
n_splits = 5
|
|
498
|
+
cv = StratifiedKFold(
|
|
499
|
+
n_splits=n_splits, shuffle=True, random_state=self.random_state
|
|
500
|
+
)
|
|
501
|
+
self.clf_prob = CalibratedClassifierCV(
|
|
502
|
+
clf_base, ensemble=False, cv=cv, method="sigmoid", n_jobs=n_splits
|
|
503
|
+
)
|
|
504
|
+
|
|
505
|
+
self.clf_prob.fit(X, y, sample_weight)
|
|
506
|
+
except ValueError:
|
|
507
|
+
clf_base = clf_base.fit(X, y, sample_weight)
|
|
508
|
+
self.clf_prob = CalibratedClassifierCV(
|
|
509
|
+
clf_base, cv="prefit", method="sigmoid"
|
|
510
|
+
)
|
|
511
|
+
self.clf_prob.fit(X, y, sample_weight)
|
|
512
|
+
else:
|
|
513
|
+
self._daal_fit = False
|
|
514
|
+
fit(X, y, sample_weight, solver_type, kernel, random_seed=seed)
|
|
515
|
+
|
|
516
|
+
self.shape_fit_ = X.shape if hasattr(X, "shape") else (n_samples,)
|
|
517
|
+
|
|
518
|
+
# In binary case, we need to flip the sign of coef, intercept and
|
|
519
|
+
# decision function. Use self._intercept_ and self._dual_coef_ internally.
|
|
520
|
+
if not getattr(self, "_daal_fit", False):
|
|
521
|
+
self._internal_intercept_ = self.intercept_.copy()
|
|
522
|
+
self._internal_dual_coef_ = self.dual_coef_.copy()
|
|
523
|
+
else:
|
|
524
|
+
self._internal_intercept_ = self.intercept_.copy()
|
|
525
|
+
self._internal_dual_coef_ = self.dual_coef_.copy()
|
|
526
|
+
if len(self.classes_) == 2:
|
|
527
|
+
self._internal_dual_coef_ *= -1
|
|
528
|
+
self._internal_intercept_ *= -1
|
|
529
|
+
|
|
530
|
+
if (
|
|
531
|
+
not getattr(self, "_daal_fit", False)
|
|
532
|
+
and len(self.classes_) == 2
|
|
533
|
+
and self._impl in ["c_svc", "nu_svc"]
|
|
534
|
+
):
|
|
535
|
+
self.intercept_ *= -1
|
|
536
|
+
self.dual_coef_ *= -1
|
|
537
|
+
|
|
538
|
+
return self
|
|
539
|
+
|
|
540
|
+
|
|
541
|
+
def _daal4py_predict(self, X, is_decision_function=False):
|
|
542
|
+
X_fptype = getFPType(X)
|
|
543
|
+
num_classes = len(self.classes_)
|
|
544
|
+
|
|
545
|
+
kf = _daal4py_kf(self.kernel, X_fptype, gamma=self._gamma, is_sparse=sp.isspmatrix(X))
|
|
546
|
+
|
|
547
|
+
svm_predict = daal4py.svm_prediction(
|
|
548
|
+
fptype=X_fptype, method="defaultDense", kernel=kf
|
|
549
|
+
)
|
|
550
|
+
if num_classes == 2:
|
|
551
|
+
alg = svm_predict
|
|
552
|
+
else:
|
|
553
|
+
result_to_compute = (
|
|
554
|
+
"computeDecisionFunction" if is_decision_function else "computeClassLabels"
|
|
555
|
+
)
|
|
556
|
+
alg = daal4py.multi_class_classifier_prediction(
|
|
557
|
+
nClasses=num_classes,
|
|
558
|
+
fptype=X_fptype,
|
|
559
|
+
pmethod="voteBased",
|
|
560
|
+
tmethod="oneAgainstOne",
|
|
561
|
+
resultsToEvaluate=result_to_compute,
|
|
562
|
+
prediction=svm_predict,
|
|
563
|
+
)
|
|
564
|
+
|
|
565
|
+
predictionRes = alg.compute(X, self.daal_model_)
|
|
566
|
+
if not is_decision_function or num_classes == 2:
|
|
567
|
+
res = predictionRes.prediction
|
|
568
|
+
res = res.ravel()
|
|
569
|
+
else:
|
|
570
|
+
res = -predictionRes.decisionFunction
|
|
571
|
+
|
|
572
|
+
if num_classes == 2 and not is_decision_function:
|
|
573
|
+
# Convert from oneAPI Data Analytics Library format back to
|
|
574
|
+
# original classes
|
|
575
|
+
np.greater(res, 0, out=res)
|
|
576
|
+
|
|
577
|
+
return res
|
|
578
|
+
|
|
579
|
+
|
|
580
|
+
def predict(self, X):
|
|
581
|
+
check_is_fitted(self)
|
|
582
|
+
|
|
583
|
+
_break_ties = getattr(self, "break_ties", False)
|
|
584
|
+
if _break_ties and self.decision_function_shape == "ovo":
|
|
585
|
+
raise ValueError(
|
|
586
|
+
"break_ties must be False when " "decision_function_shape is 'ovo'"
|
|
587
|
+
)
|
|
588
|
+
|
|
589
|
+
_patching_status = PatchingConditionsChain("sklearn.svm.SVC.predict")
|
|
590
|
+
_dal_ready = _patching_status.and_conditions(
|
|
591
|
+
[
|
|
592
|
+
(not _break_ties, "Breaking ties is not supported."),
|
|
593
|
+
(
|
|
594
|
+
self.decision_function_shape != "ovr",
|
|
595
|
+
"'ovr' decision function shape is not supported.",
|
|
596
|
+
),
|
|
597
|
+
(len(self.classes_) <= 2, "Number of classes > 2."),
|
|
598
|
+
],
|
|
599
|
+
conditions_merging=any,
|
|
600
|
+
)
|
|
601
|
+
_patching_status.write_log()
|
|
602
|
+
if not _dal_ready:
|
|
603
|
+
y = np.argmax(self.decision_function(X), axis=1)
|
|
604
|
+
else:
|
|
605
|
+
X = self._validate_for_predict(X)
|
|
606
|
+
_dal_ready = _patching_status.and_conditions(
|
|
607
|
+
[
|
|
608
|
+
(
|
|
609
|
+
getattr(self, "_daal_fit", False) and hasattr(self, "daal_model_"),
|
|
610
|
+
"oneDAL model was not trained.",
|
|
611
|
+
)
|
|
612
|
+
]
|
|
613
|
+
)
|
|
614
|
+
if _dal_ready:
|
|
615
|
+
if self.probability and self.clf_prob is not None:
|
|
616
|
+
y = self.clf_prob.predict(X)
|
|
617
|
+
else:
|
|
618
|
+
y = _daal4py_predict(self, X)
|
|
619
|
+
else:
|
|
620
|
+
predict_func = self._sparse_predict if self._sparse else self._dense_predict
|
|
621
|
+
y = predict_func(X)
|
|
622
|
+
|
|
623
|
+
return self.classes_.take(np.asarray(y, dtype=np.intp))
|
|
624
|
+
|
|
625
|
+
|
|
626
|
+
def _daal4py_predict_proba(self, X):
|
|
627
|
+
X = self._validate_for_predict(X)
|
|
628
|
+
|
|
629
|
+
if getattr(self, "clf_prob", None) is None:
|
|
630
|
+
raise NotFittedError(
|
|
631
|
+
"predict_proba is not available when fitted with probability=False"
|
|
632
|
+
)
|
|
633
|
+
prob = self.clf_prob.predict_proba(X)
|
|
634
|
+
return prob
|
|
635
|
+
|
|
636
|
+
|
|
637
|
+
@property
|
|
638
|
+
def predict_proba(self):
|
|
639
|
+
self._check_proba()
|
|
640
|
+
_patching_status = PatchingConditionsChain("sklearn.svm.SVC.predict_proba")
|
|
641
|
+
_dal_ready = _patching_status.and_conditions(
|
|
642
|
+
[(getattr(self, "_daal_fit", False), "oneDAL model was not trained.")]
|
|
643
|
+
)
|
|
644
|
+
_patching_status.write_log()
|
|
645
|
+
if _dal_ready:
|
|
646
|
+
algo = self._daal4py_predict_proba
|
|
647
|
+
else:
|
|
648
|
+
algo = self._predict_proba
|
|
649
|
+
return algo
|
|
650
|
+
|
|
651
|
+
|
|
652
|
+
def decision_function(self, X):
|
|
653
|
+
_patching_status = PatchingConditionsChain("sklearn.svm.SVC.decision_function")
|
|
654
|
+
_dal_ready = _patching_status.and_conditions(
|
|
655
|
+
[(getattr(self, "_daal_fit", False), "oneDAL model was not trained.")]
|
|
656
|
+
)
|
|
657
|
+
_patching_status.write_log()
|
|
658
|
+
if _dal_ready:
|
|
659
|
+
X = self._validate_for_predict(X)
|
|
660
|
+
dec = _daal4py_predict(self, X, is_decision_function=True)
|
|
661
|
+
else:
|
|
662
|
+
dec = self._decision_function(X)
|
|
663
|
+
if self.decision_function_shape == "ovr" and len(self.classes_) > 2:
|
|
664
|
+
return _ovr_decision_function(dec < 0, -dec, len(self.classes_))
|
|
665
|
+
return dec
|
|
666
|
+
|
|
667
|
+
|
|
668
|
+
__base_svc_init_arg_names__ = []
|
|
669
|
+
|
|
670
|
+
__base_svc_init_function__ = svm_base.BaseSVC.__init__
|
|
671
|
+
__base_svc_init_function_code__ = __base_svc_init_function__.__code__
|
|
672
|
+
|
|
673
|
+
try:
|
|
674
|
+
# retrieve tuple of code argument names to check whether
|
|
675
|
+
# new in 0.22 keyword 'break_ties' is in it
|
|
676
|
+
__base_svc_init_arg_names__ = __base_svc_init_function_code__.co_varnames
|
|
677
|
+
except AttributeError:
|
|
678
|
+
pass
|
|
679
|
+
|
|
680
|
+
del __base_svc_init_function__
|
|
681
|
+
del __base_svc_init_function_code__
|
|
682
|
+
|
|
683
|
+
|
|
684
|
+
class SVC(svm_base.BaseSVC):
|
|
685
|
+
_impl = "c_svc"
|
|
686
|
+
|
|
687
|
+
def __init__(
|
|
688
|
+
self,
|
|
689
|
+
C=1.0,
|
|
690
|
+
kernel="rbf",
|
|
691
|
+
degree=3,
|
|
692
|
+
gamma="scale",
|
|
693
|
+
coef0=0.0,
|
|
694
|
+
shrinking=True,
|
|
695
|
+
probability=False,
|
|
696
|
+
tol=1e-3,
|
|
697
|
+
cache_size=200,
|
|
698
|
+
class_weight=None,
|
|
699
|
+
verbose=False,
|
|
700
|
+
max_iter=-1,
|
|
701
|
+
decision_function_shape="ovr",
|
|
702
|
+
break_ties=False,
|
|
703
|
+
random_state=None,
|
|
704
|
+
):
|
|
705
|
+
super(SVC, self).__init__(
|
|
706
|
+
kernel=kernel,
|
|
707
|
+
degree=degree,
|
|
708
|
+
gamma=gamma,
|
|
709
|
+
coef0=coef0,
|
|
710
|
+
tol=tol,
|
|
711
|
+
C=C,
|
|
712
|
+
nu=0.0,
|
|
713
|
+
shrinking=shrinking,
|
|
714
|
+
probability=probability,
|
|
715
|
+
cache_size=cache_size,
|
|
716
|
+
class_weight=class_weight,
|
|
717
|
+
verbose=verbose,
|
|
718
|
+
max_iter=max_iter,
|
|
719
|
+
decision_function_shape=decision_function_shape,
|
|
720
|
+
break_ties=break_ties,
|
|
721
|
+
random_state=random_state,
|
|
722
|
+
)
|
|
723
|
+
|
|
724
|
+
|
|
725
|
+
SVC.fit = fit
|
|
726
|
+
SVC.predict = predict
|
|
727
|
+
SVC.predict_proba = predict_proba
|
|
728
|
+
SVC.decision_function = decision_function
|
|
729
|
+
SVC._daal4py_predict_proba = _daal4py_predict_proba
|
|
730
|
+
SVC._dual_coef_ = property(_dual_coef_getter, _dual_coef_setter)
|
|
731
|
+
SVC._intercept_ = property(_intercept_getter, _intercept_setter)
|
|
732
|
+
SVC.__doc__ = svm_classes.SVC.__doc__
|
|
733
|
+
SVC.fit.__doc__ = fit.__doc__
|
|
734
|
+
SVC.predict.__doc__ = predict.__doc__
|
|
735
|
+
SVC.predict_proba.__doc__ = predict_proba.__doc__
|
|
736
|
+
SVC.decision_function.__doc__ = decision_function.__doc__
|