scikit-learn-intelex 2025.1.0__py312-none-manylinux_2_28_x86_64.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.
- daal4py/__init__.py +73 -0
- daal4py/__main__.py +58 -0
- daal4py/_daal4py.cpython-312-x86_64-linux-gnu.so +0 -0
- daal4py/doc/third-party-programs.txt +424 -0
- daal4py/mb/__init__.py +19 -0
- daal4py/mb/model_builders.py +377 -0
- daal4py/mpi_transceiver.cpython-312-x86_64-linux-gnu.so +0 -0
- daal4py/sklearn/__init__.py +40 -0
- daal4py/sklearn/_n_jobs_support.py +248 -0
- daal4py/sklearn/_utils.py +245 -0
- daal4py/sklearn/cluster/__init__.py +20 -0
- daal4py/sklearn/cluster/dbscan.py +165 -0
- daal4py/sklearn/cluster/k_means.py +597 -0
- daal4py/sklearn/cluster/tests/test_dbscan.py +109 -0
- daal4py/sklearn/decomposition/__init__.py +19 -0
- daal4py/sklearn/decomposition/_pca.py +524 -0
- daal4py/sklearn/ensemble/AdaBoostClassifier.py +196 -0
- daal4py/sklearn/ensemble/GBTDAAL.py +337 -0
- daal4py/sklearn/ensemble/__init__.py +27 -0
- daal4py/sklearn/ensemble/_forest.py +1397 -0
- daal4py/sklearn/ensemble/tests/test_decision_forest.py +206 -0
- daal4py/sklearn/linear_model/__init__.py +29 -0
- daal4py/sklearn/linear_model/_coordinate_descent.py +848 -0
- daal4py/sklearn/linear_model/_linear.py +272 -0
- daal4py/sklearn/linear_model/_ridge.py +325 -0
- daal4py/sklearn/linear_model/coordinate_descent.py +17 -0
- daal4py/sklearn/linear_model/linear.py +17 -0
- daal4py/sklearn/linear_model/logistic_loss.py +195 -0
- daal4py/sklearn/linear_model/logistic_path.py +1026 -0
- daal4py/sklearn/linear_model/ridge.py +17 -0
- daal4py/sklearn/linear_model/tests/test_linear.py +208 -0
- daal4py/sklearn/linear_model/tests/test_ridge.py +69 -0
- daal4py/sklearn/manifold/__init__.py +19 -0
- daal4py/sklearn/manifold/_t_sne.py +405 -0
- daal4py/sklearn/metrics/__init__.py +20 -0
- daal4py/sklearn/metrics/_pairwise.py +236 -0
- daal4py/sklearn/metrics/_ranking.py +210 -0
- daal4py/sklearn/model_selection/__init__.py +19 -0
- daal4py/sklearn/model_selection/_split.py +309 -0
- daal4py/sklearn/model_selection/tests/test_split.py +56 -0
- daal4py/sklearn/monkeypatch/__init__.py +0 -0
- daal4py/sklearn/monkeypatch/dispatcher.py +232 -0
- daal4py/sklearn/monkeypatch/tests/_models_info.py +161 -0
- daal4py/sklearn/monkeypatch/tests/test_monkeypatch.py +71 -0
- daal4py/sklearn/monkeypatch/tests/test_patching.py +90 -0
- daal4py/sklearn/monkeypatch/tests/utils/_launch_algorithms.py +117 -0
- daal4py/sklearn/neighbors/__init__.py +21 -0
- daal4py/sklearn/neighbors/_base.py +503 -0
- daal4py/sklearn/neighbors/_classification.py +139 -0
- daal4py/sklearn/neighbors/_regression.py +74 -0
- daal4py/sklearn/neighbors/_unsupervised.py +55 -0
- daal4py/sklearn/neighbors/tests/test_kneighbors.py +113 -0
- daal4py/sklearn/svm/__init__.py +19 -0
- daal4py/sklearn/svm/svm.py +734 -0
- daal4py/sklearn/utils/__init__.py +21 -0
- daal4py/sklearn/utils/base.py +75 -0
- daal4py/sklearn/utils/tests/test_utils.py +51 -0
- daal4py/sklearn/utils/validation.py +693 -0
- onedal/__init__.py +83 -0
- onedal/_config.py +54 -0
- onedal/_device_offload.py +222 -0
- onedal/_onedal_py_dpc.cpython-312-x86_64-linux-gnu.so +0 -0
- onedal/_onedal_py_host.cpython-312-x86_64-linux-gnu.so +0 -0
- onedal/_onedal_py_spmd_dpc.cpython-312-x86_64-linux-gnu.so +0 -0
- onedal/basic_statistics/__init__.py +20 -0
- onedal/basic_statistics/basic_statistics.py +107 -0
- onedal/basic_statistics/incremental_basic_statistics.py +160 -0
- onedal/basic_statistics/tests/test_basic_statistics.py +298 -0
- onedal/basic_statistics/tests/test_incremental_basic_statistics.py +196 -0
- onedal/cluster/__init__.py +27 -0
- onedal/cluster/dbscan.py +110 -0
- onedal/cluster/kmeans.py +564 -0
- onedal/cluster/kmeans_init.py +115 -0
- onedal/cluster/tests/test_dbscan.py +125 -0
- onedal/cluster/tests/test_kmeans.py +88 -0
- onedal/cluster/tests/test_kmeans_init.py +93 -0
- onedal/common/_base.py +38 -0
- onedal/common/_estimator_checks.py +47 -0
- onedal/common/_mixin.py +62 -0
- onedal/common/_policy.py +59 -0
- onedal/common/_spmd_policy.py +30 -0
- onedal/common/hyperparameters.py +125 -0
- onedal/common/tests/test_policy.py +76 -0
- onedal/covariance/__init__.py +20 -0
- onedal/covariance/covariance.py +125 -0
- onedal/covariance/incremental_covariance.py +146 -0
- onedal/covariance/tests/test_covariance.py +50 -0
- onedal/covariance/tests/test_incremental_covariance.py +122 -0
- onedal/datatypes/__init__.py +19 -0
- onedal/datatypes/_data_conversion.py +154 -0
- onedal/datatypes/tests/common.py +126 -0
- onedal/datatypes/tests/test_data.py +414 -0
- onedal/decomposition/__init__.py +20 -0
- onedal/decomposition/incremental_pca.py +204 -0
- onedal/decomposition/pca.py +186 -0
- onedal/decomposition/tests/test_incremental_pca.py +198 -0
- onedal/ensemble/__init__.py +29 -0
- onedal/ensemble/forest.py +727 -0
- onedal/ensemble/tests/test_random_forest.py +97 -0
- onedal/linear_model/__init__.py +27 -0
- onedal/linear_model/incremental_linear_model.py +258 -0
- onedal/linear_model/linear_model.py +329 -0
- onedal/linear_model/logistic_regression.py +249 -0
- onedal/linear_model/tests/test_incremental_linear_regression.py +168 -0
- onedal/linear_model/tests/test_incremental_ridge_regression.py +107 -0
- onedal/linear_model/tests/test_linear_regression.py +250 -0
- onedal/linear_model/tests/test_logistic_regression.py +95 -0
- onedal/linear_model/tests/test_ridge.py +95 -0
- onedal/neighbors/__init__.py +19 -0
- onedal/neighbors/neighbors.py +767 -0
- onedal/neighbors/tests/test_knn_classification.py +49 -0
- onedal/primitives/__init__.py +27 -0
- onedal/primitives/get_tree.py +25 -0
- onedal/primitives/kernel_functions.py +153 -0
- onedal/primitives/tests/test_kernel_functions.py +159 -0
- onedal/spmd/__init__.py +25 -0
- onedal/spmd/_base.py +30 -0
- onedal/spmd/basic_statistics/__init__.py +20 -0
- onedal/spmd/basic_statistics/basic_statistics.py +30 -0
- onedal/spmd/basic_statistics/incremental_basic_statistics.py +69 -0
- onedal/spmd/cluster/__init__.py +28 -0
- onedal/spmd/cluster/dbscan.py +23 -0
- onedal/spmd/cluster/kmeans.py +56 -0
- onedal/spmd/covariance/__init__.py +20 -0
- onedal/spmd/covariance/covariance.py +26 -0
- onedal/spmd/covariance/incremental_covariance.py +82 -0
- onedal/spmd/decomposition/__init__.py +20 -0
- onedal/spmd/decomposition/incremental_pca.py +117 -0
- onedal/spmd/decomposition/pca.py +26 -0
- onedal/spmd/ensemble/__init__.py +19 -0
- onedal/spmd/ensemble/forest.py +28 -0
- onedal/spmd/linear_model/__init__.py +21 -0
- onedal/spmd/linear_model/incremental_linear_model.py +97 -0
- onedal/spmd/linear_model/linear_model.py +30 -0
- onedal/spmd/linear_model/logistic_regression.py +38 -0
- onedal/spmd/neighbors/__init__.py +19 -0
- onedal/spmd/neighbors/neighbors.py +75 -0
- onedal/svm/__init__.py +19 -0
- onedal/svm/svm.py +556 -0
- onedal/svm/tests/test_csr_svm.py +351 -0
- onedal/svm/tests/test_nusvc.py +204 -0
- onedal/svm/tests/test_nusvr.py +210 -0
- onedal/svm/tests/test_svc.py +176 -0
- onedal/svm/tests/test_svr.py +243 -0
- onedal/tests/test_common.py +57 -0
- onedal/tests/utils/_dataframes_support.py +162 -0
- onedal/tests/utils/_device_selection.py +102 -0
- onedal/utils/__init__.py +49 -0
- onedal/utils/_array_api.py +81 -0
- onedal/utils/_dpep_helpers.py +56 -0
- onedal/utils/validation.py +440 -0
- scikit_learn_intelex-2025.1.0.dist-info/LICENSE.txt +202 -0
- scikit_learn_intelex-2025.1.0.dist-info/METADATA +231 -0
- scikit_learn_intelex-2025.1.0.dist-info/RECORD +280 -0
- scikit_learn_intelex-2025.1.0.dist-info/WHEEL +5 -0
- scikit_learn_intelex-2025.1.0.dist-info/top_level.txt +3 -0
- sklearnex/__init__.py +66 -0
- sklearnex/__main__.py +58 -0
- sklearnex/_config.py +116 -0
- sklearnex/_device_offload.py +126 -0
- sklearnex/_utils.py +132 -0
- sklearnex/basic_statistics/__init__.py +20 -0
- sklearnex/basic_statistics/basic_statistics.py +230 -0
- sklearnex/basic_statistics/incremental_basic_statistics.py +345 -0
- sklearnex/basic_statistics/tests/test_basic_statistics.py +270 -0
- sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +404 -0
- sklearnex/cluster/__init__.py +20 -0
- sklearnex/cluster/dbscan.py +197 -0
- sklearnex/cluster/k_means.py +395 -0
- sklearnex/cluster/tests/test_dbscan.py +38 -0
- sklearnex/cluster/tests/test_kmeans.py +159 -0
- sklearnex/conftest.py +82 -0
- sklearnex/covariance/__init__.py +19 -0
- sklearnex/covariance/incremental_covariance.py +398 -0
- sklearnex/covariance/tests/test_incremental_covariance.py +237 -0
- sklearnex/decomposition/__init__.py +19 -0
- sklearnex/decomposition/pca.py +425 -0
- sklearnex/decomposition/tests/test_pca.py +58 -0
- sklearnex/dispatcher.py +543 -0
- sklearnex/doc/third-party-programs.txt +424 -0
- sklearnex/ensemble/__init__.py +29 -0
- sklearnex/ensemble/_forest.py +2029 -0
- sklearnex/ensemble/tests/test_forest.py +135 -0
- sklearnex/glob/__main__.py +72 -0
- sklearnex/glob/dispatcher.py +101 -0
- sklearnex/linear_model/__init__.py +32 -0
- sklearnex/linear_model/coordinate_descent.py +30 -0
- sklearnex/linear_model/incremental_linear.py +482 -0
- sklearnex/linear_model/incremental_ridge.py +425 -0
- sklearnex/linear_model/linear.py +341 -0
- sklearnex/linear_model/logistic_regression.py +413 -0
- sklearnex/linear_model/ridge.py +24 -0
- sklearnex/linear_model/tests/test_incremental_linear.py +207 -0
- sklearnex/linear_model/tests/test_incremental_ridge.py +153 -0
- sklearnex/linear_model/tests/test_linear.py +167 -0
- sklearnex/linear_model/tests/test_logreg.py +134 -0
- sklearnex/manifold/__init__.py +19 -0
- sklearnex/manifold/t_sne.py +21 -0
- sklearnex/manifold/tests/test_tsne.py +26 -0
- sklearnex/metrics/__init__.py +23 -0
- sklearnex/metrics/pairwise.py +22 -0
- sklearnex/metrics/ranking.py +20 -0
- sklearnex/metrics/tests/test_metrics.py +39 -0
- sklearnex/model_selection/__init__.py +21 -0
- sklearnex/model_selection/split.py +22 -0
- sklearnex/model_selection/tests/test_model_selection.py +34 -0
- sklearnex/neighbors/__init__.py +27 -0
- sklearnex/neighbors/_lof.py +236 -0
- sklearnex/neighbors/common.py +310 -0
- sklearnex/neighbors/knn_classification.py +231 -0
- sklearnex/neighbors/knn_regression.py +207 -0
- sklearnex/neighbors/knn_unsupervised.py +178 -0
- sklearnex/neighbors/tests/test_neighbors.py +82 -0
- sklearnex/preview/__init__.py +17 -0
- sklearnex/preview/covariance/__init__.py +19 -0
- sklearnex/preview/covariance/covariance.py +138 -0
- sklearnex/preview/covariance/tests/test_covariance.py +66 -0
- sklearnex/preview/decomposition/__init__.py +19 -0
- sklearnex/preview/decomposition/incremental_pca.py +233 -0
- sklearnex/preview/decomposition/tests/test_incremental_pca.py +266 -0
- sklearnex/preview/linear_model/__init__.py +19 -0
- sklearnex/preview/linear_model/ridge.py +424 -0
- sklearnex/preview/linear_model/tests/test_ridge.py +102 -0
- sklearnex/spmd/__init__.py +25 -0
- sklearnex/spmd/basic_statistics/__init__.py +20 -0
- sklearnex/spmd/basic_statistics/basic_statistics.py +21 -0
- sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +30 -0
- sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +107 -0
- sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +307 -0
- sklearnex/spmd/cluster/__init__.py +30 -0
- sklearnex/spmd/cluster/dbscan.py +50 -0
- sklearnex/spmd/cluster/kmeans.py +21 -0
- sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +97 -0
- sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +172 -0
- sklearnex/spmd/covariance/__init__.py +20 -0
- sklearnex/spmd/covariance/covariance.py +21 -0
- sklearnex/spmd/covariance/incremental_covariance.py +37 -0
- sklearnex/spmd/covariance/tests/test_covariance_spmd.py +107 -0
- sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +184 -0
- sklearnex/spmd/decomposition/__init__.py +20 -0
- sklearnex/spmd/decomposition/incremental_pca.py +30 -0
- sklearnex/spmd/decomposition/pca.py +21 -0
- sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +269 -0
- sklearnex/spmd/decomposition/tests/test_pca_spmd.py +128 -0
- sklearnex/spmd/ensemble/__init__.py +19 -0
- sklearnex/spmd/ensemble/forest.py +71 -0
- sklearnex/spmd/ensemble/tests/test_forest_spmd.py +265 -0
- sklearnex/spmd/linear_model/__init__.py +21 -0
- sklearnex/spmd/linear_model/incremental_linear_model.py +35 -0
- sklearnex/spmd/linear_model/linear_model.py +21 -0
- sklearnex/spmd/linear_model/logistic_regression.py +21 -0
- sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +329 -0
- sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +145 -0
- sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +162 -0
- sklearnex/spmd/neighbors/__init__.py +19 -0
- sklearnex/spmd/neighbors/neighbors.py +25 -0
- sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +288 -0
- sklearnex/svm/__init__.py +29 -0
- sklearnex/svm/_common.py +339 -0
- sklearnex/svm/nusvc.py +371 -0
- sklearnex/svm/nusvr.py +170 -0
- sklearnex/svm/svc.py +399 -0
- sklearnex/svm/svr.py +167 -0
- sklearnex/svm/tests/test_svm.py +93 -0
- sklearnex/tests/test_common.py +390 -0
- sklearnex/tests/test_config.py +123 -0
- sklearnex/tests/test_memory_usage.py +379 -0
- sklearnex/tests/test_monkeypatch.py +276 -0
- sklearnex/tests/test_n_jobs_support.py +108 -0
- sklearnex/tests/test_parallel.py +48 -0
- sklearnex/tests/test_patching.py +385 -0
- sklearnex/tests/test_run_to_run_stability.py +321 -0
- sklearnex/tests/utils/__init__.py +44 -0
- sklearnex/tests/utils/base.py +371 -0
- sklearnex/tests/utils/spmd.py +198 -0
- sklearnex/utils/__init__.py +19 -0
- sklearnex/utils/_array_api.py +82 -0
- sklearnex/utils/parallel.py +59 -0
- sklearnex/utils/tests/test_finite.py +89 -0
- sklearnex/utils/validation.py +17 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# ===============================================================================
|
|
2
|
+
# Copyright 2022 Intel Corporation
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
# ===============================================================================
|
|
16
|
+
|
|
17
|
+
import numpy as np
|
|
18
|
+
import pytest
|
|
19
|
+
from numpy.testing import assert_array_equal
|
|
20
|
+
from sklearn import datasets
|
|
21
|
+
|
|
22
|
+
from onedal.neighbors import KNeighborsClassifier
|
|
23
|
+
from onedal.tests.utils._device_selection import get_queues
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@pytest.mark.parametrize("queue", get_queues())
|
|
27
|
+
def test_iris(queue):
|
|
28
|
+
iris = datasets.load_iris()
|
|
29
|
+
clf = KNeighborsClassifier(2).fit(iris.data, iris.target, queue=queue)
|
|
30
|
+
assert clf.score(iris.data, iris.target, queue=queue) > 0.9
|
|
31
|
+
assert_array_equal(clf.classes_, np.sort(clf.classes_))
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
@pytest.mark.parametrize("queue", get_queues())
|
|
35
|
+
def test_pickle(queue):
|
|
36
|
+
if queue and queue.sycl_device.is_gpu:
|
|
37
|
+
pytest.skip("KNN classifier pickling for the GPU sycl_queue is buggy.")
|
|
38
|
+
iris = datasets.load_iris()
|
|
39
|
+
clf = KNeighborsClassifier(2).fit(iris.data, iris.target, queue=queue)
|
|
40
|
+
expected = clf.predict(iris.data, queue=queue)
|
|
41
|
+
|
|
42
|
+
import pickle
|
|
43
|
+
|
|
44
|
+
dump = pickle.dumps(clf)
|
|
45
|
+
clf2 = pickle.loads(dump)
|
|
46
|
+
|
|
47
|
+
assert type(clf2) == clf.__class__
|
|
48
|
+
result = clf2.predict(iris.data, queue=queue)
|
|
49
|
+
assert_array_equal(expected, result)
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# ==============================================================================
|
|
2
|
+
# Copyright 2021 Intel Corporation
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
# ==============================================================================
|
|
16
|
+
|
|
17
|
+
from .get_tree import get_tree_state_cls, get_tree_state_reg
|
|
18
|
+
from .kernel_functions import linear_kernel, poly_kernel, rbf_kernel, sigmoid_kernel
|
|
19
|
+
|
|
20
|
+
__all__ = [
|
|
21
|
+
"get_tree_state_cls",
|
|
22
|
+
"get_tree_state_reg",
|
|
23
|
+
"linear_kernel",
|
|
24
|
+
"rbf_kernel",
|
|
25
|
+
"poly_kernel",
|
|
26
|
+
"sigmoid_kernel",
|
|
27
|
+
]
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# ==============================================================================
|
|
2
|
+
# Copyright 2023 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 onedal import _backend
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def get_tree_state_cls(model, iTree, n_classes):
|
|
21
|
+
return _backend.get_tree.classification.get_tree_state(model, iTree, n_classes)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def get_tree_state_reg(model, iTree, n_classes):
|
|
25
|
+
return _backend.get_tree.regression.get_tree_state(model, iTree, n_classes)
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
# ===============================================================================
|
|
2
|
+
# Copyright 2021 Intel Corporation
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
# ===============================================================================
|
|
16
|
+
|
|
17
|
+
import numpy as np
|
|
18
|
+
|
|
19
|
+
from onedal import _backend
|
|
20
|
+
|
|
21
|
+
from ..common._policy import _get_policy
|
|
22
|
+
from ..datatypes import _convert_to_supported, from_table, to_table
|
|
23
|
+
from ..utils import _check_array
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def _check_inputs(X, Y):
|
|
27
|
+
def check_input(data):
|
|
28
|
+
return _check_array(data, dtype=[np.float64, np.float32], force_all_finite=False)
|
|
29
|
+
|
|
30
|
+
X = check_input(X)
|
|
31
|
+
Y = X if Y is None else check_input(Y)
|
|
32
|
+
return X, Y
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def _compute_kernel(params, submodule, X, Y, queue):
|
|
36
|
+
policy = _get_policy(queue, X, Y)
|
|
37
|
+
X, Y = _convert_to_supported(policy, X, Y)
|
|
38
|
+
params["fptype"] = "float" if X.dtype == np.float32 else "double"
|
|
39
|
+
X, Y = to_table(X, Y)
|
|
40
|
+
result = submodule.compute(policy, params, X, Y)
|
|
41
|
+
return from_table(result.values)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def linear_kernel(X, Y=None, scale=1.0, shift=0.0, queue=None):
|
|
45
|
+
"""
|
|
46
|
+
Compute the linear kernel between X and Y:
|
|
47
|
+
K(x, y) = scale*dot(x, y^T) + shift
|
|
48
|
+
for each pair of rows x in X and y in Y.
|
|
49
|
+
|
|
50
|
+
Parameters
|
|
51
|
+
----------
|
|
52
|
+
X : ndarray of shape (n_samples_X, n_features)
|
|
53
|
+
Y : ndarray of shape (n_samples_Y, n_features)
|
|
54
|
+
scale : float, default=1.0
|
|
55
|
+
shift : float, default=0.0
|
|
56
|
+
|
|
57
|
+
Returns
|
|
58
|
+
-------
|
|
59
|
+
kernel_matrix : ndarray of shape (n_samples_X, n_samples_Y)
|
|
60
|
+
"""
|
|
61
|
+
X, Y = _check_inputs(X, Y)
|
|
62
|
+
return _compute_kernel(
|
|
63
|
+
{"method": "dense", "scale": scale, "shift": shift},
|
|
64
|
+
_backend.linear_kernel,
|
|
65
|
+
X,
|
|
66
|
+
Y,
|
|
67
|
+
queue,
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def rbf_kernel(X, Y=None, gamma=None, queue=None):
|
|
72
|
+
"""
|
|
73
|
+
Compute the rbf (gaussian) kernel between X and Y:
|
|
74
|
+
K(x, y) = exp(-gamma ||x-y||^2)
|
|
75
|
+
for each pair of rows x in X and y in Y.
|
|
76
|
+
|
|
77
|
+
Parameters
|
|
78
|
+
----------
|
|
79
|
+
X : ndarray of shape (n_samples_X, n_features)
|
|
80
|
+
Y : ndarray of shape (n_samples_Y, n_features)
|
|
81
|
+
gamma : float, default=None
|
|
82
|
+
If None, defaults to 1.0 / n_features.
|
|
83
|
+
|
|
84
|
+
Returns
|
|
85
|
+
-------
|
|
86
|
+
kernel_matrix : ndarray of shape (n_samples_X, n_samples_Y)
|
|
87
|
+
"""
|
|
88
|
+
|
|
89
|
+
X, Y = _check_inputs(X, Y)
|
|
90
|
+
|
|
91
|
+
gamma = 1.0 / X.shape[1] if gamma is None else gamma
|
|
92
|
+
sigma = np.sqrt(0.5 / gamma)
|
|
93
|
+
|
|
94
|
+
return _compute_kernel(
|
|
95
|
+
{"method": "dense", "sigma": sigma}, _backend.rbf_kernel, X, Y, queue
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def poly_kernel(X, Y=None, gamma=1.0, coef0=0.0, degree=3, queue=None):
|
|
100
|
+
"""
|
|
101
|
+
Compute the poly kernel between X and Y:
|
|
102
|
+
K(x, y) = (scale*dot(x, y^T) + shift)**degree
|
|
103
|
+
for each pair of rows x in X and y in Y.
|
|
104
|
+
|
|
105
|
+
Parameters
|
|
106
|
+
----------
|
|
107
|
+
X : ndarray of shape (n_samples_X, n_features)
|
|
108
|
+
Y : ndarray of shape (n_samples_Y, n_features)
|
|
109
|
+
scale : float, default=1.0
|
|
110
|
+
shift : float, default=0.0
|
|
111
|
+
degree : float, default=3
|
|
112
|
+
|
|
113
|
+
Returns
|
|
114
|
+
-------
|
|
115
|
+
kernel_matrix : ndarray of shape (n_samples_X, n_samples_Y)
|
|
116
|
+
"""
|
|
117
|
+
|
|
118
|
+
X, Y = _check_inputs(X, Y)
|
|
119
|
+
return _compute_kernel(
|
|
120
|
+
{"method": "dense", "scale": gamma, "shift": coef0, "degree": degree},
|
|
121
|
+
_backend.polynomial_kernel,
|
|
122
|
+
X,
|
|
123
|
+
Y,
|
|
124
|
+
queue,
|
|
125
|
+
)
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def sigmoid_kernel(X, Y=None, gamma=1.0, coef0=0.0, queue=None):
|
|
129
|
+
"""
|
|
130
|
+
Compute the sigmoid kernel between X and Y:
|
|
131
|
+
K(x, y) = tanh(scale*dot(x, y^T) + shift)
|
|
132
|
+
for each pair of rows x in X and y in Y.
|
|
133
|
+
|
|
134
|
+
Parameters
|
|
135
|
+
----------
|
|
136
|
+
X : ndarray of shape (n_samples_X, n_features)
|
|
137
|
+
Y : ndarray of shape (n_samples_Y, n_features)
|
|
138
|
+
scale : float, default=1.0
|
|
139
|
+
shift : float, default=0.0
|
|
140
|
+
|
|
141
|
+
Returns
|
|
142
|
+
-------
|
|
143
|
+
kernel_matrix : ndarray of shape (n_samples_X, n_samples_Y)
|
|
144
|
+
"""
|
|
145
|
+
|
|
146
|
+
X, Y = _check_inputs(X, Y)
|
|
147
|
+
return _compute_kernel(
|
|
148
|
+
{"method": "dense", "scale": gamma, "shift": coef0},
|
|
149
|
+
_backend.sigmoid_kernel,
|
|
150
|
+
X,
|
|
151
|
+
Y,
|
|
152
|
+
queue,
|
|
153
|
+
)
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
# ==============================================================================
|
|
2
|
+
# Copyright 2021 Intel Corporation
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
# ==============================================================================
|
|
16
|
+
|
|
17
|
+
import numpy as np
|
|
18
|
+
import pytest
|
|
19
|
+
from numpy.testing import assert_allclose
|
|
20
|
+
from sklearn.metrics.pairwise import rbf_kernel as sklearn_rbf_kernel
|
|
21
|
+
|
|
22
|
+
from onedal.primitives import linear_kernel, poly_kernel, rbf_kernel, sigmoid_kernel
|
|
23
|
+
from onedal.tests.utils._device_selection import (
|
|
24
|
+
get_queues,
|
|
25
|
+
pass_if_not_implemented_for_gpu,
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@pytest.mark.parametrize("queue", get_queues())
|
|
30
|
+
def test_dense_self_linear_kernel(queue):
|
|
31
|
+
if queue and queue.sycl_device.is_gpu:
|
|
32
|
+
pytest.skip("Linear kernel for the GPU sycl_queue is buggy.")
|
|
33
|
+
rng = np.random.RandomState(0)
|
|
34
|
+
X = np.array(5 * rng.random_sample((10, 4)))
|
|
35
|
+
|
|
36
|
+
result = linear_kernel(X, queue=queue)
|
|
37
|
+
expected = np.dot(X, np.array(X).T)
|
|
38
|
+
assert_allclose(result, expected, rtol=1e-15)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def _test_dense_small_linear_kernel(queue, scale, shift, dtype):
|
|
42
|
+
rng = np.random.RandomState(0)
|
|
43
|
+
X = np.array(5 * rng.random_sample((10, 4)), dtype=dtype)
|
|
44
|
+
Y = np.array(5 * rng.random_sample((15, 4)), dtype=dtype)
|
|
45
|
+
|
|
46
|
+
result = linear_kernel(X, Y, scale=scale, shift=shift, queue=queue)
|
|
47
|
+
expected = np.dot(X, np.array(Y).T) * scale + shift
|
|
48
|
+
|
|
49
|
+
tol = 1e-14 if result.dtype == np.float64 else 1e-6
|
|
50
|
+
assert_allclose(result, expected, rtol=tol)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
@pytest.mark.parametrize("queue", get_queues())
|
|
54
|
+
@pytest.mark.parametrize("scale", [1.0, 2.0])
|
|
55
|
+
@pytest.mark.parametrize("shift", [0.0, 1.0])
|
|
56
|
+
@pytest.mark.parametrize("dtype", [np.float32, np.float64])
|
|
57
|
+
def test_dense_small_linear_kernel(queue, scale, shift, dtype):
|
|
58
|
+
if queue and queue.sycl_device.is_gpu:
|
|
59
|
+
pytest.skip("Linear kernel for the GPU sycl_queue is buggy.")
|
|
60
|
+
_test_dense_small_linear_kernel(queue, scale, shift, dtype)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
@pytest.mark.parametrize("queue", get_queues())
|
|
64
|
+
def test_dense_self_rbf_kernel(queue):
|
|
65
|
+
rng = np.random.RandomState(0)
|
|
66
|
+
X = np.array(5 * rng.random_sample((10, 4)))
|
|
67
|
+
|
|
68
|
+
result = rbf_kernel(X, queue=queue)
|
|
69
|
+
expected = sklearn_rbf_kernel(X)
|
|
70
|
+
|
|
71
|
+
tol = 1e-5 if result.dtype == np.float32 else 1e-14
|
|
72
|
+
assert_allclose(result, expected, rtol=tol)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def _test_dense_small_rbf_kernel(queue, gamma, dtype):
|
|
76
|
+
rng = np.random.RandomState(0)
|
|
77
|
+
X = np.array(5 * rng.random_sample((10, 4)), dtype=dtype)
|
|
78
|
+
Y = np.array(5 * rng.random_sample((15, 4)), dtype=dtype)
|
|
79
|
+
|
|
80
|
+
result = rbf_kernel(X, Y, gamma=gamma, queue=queue)
|
|
81
|
+
expected = sklearn_rbf_kernel(X, Y, gamma)
|
|
82
|
+
|
|
83
|
+
tol = 1e-14 if result.dtype == np.float64 else 1e-5
|
|
84
|
+
assert_allclose(result, expected, rtol=tol)
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
@pytest.mark.parametrize("gamma", [0.1, None])
|
|
88
|
+
@pytest.mark.parametrize("dtype", [np.float32, np.float64])
|
|
89
|
+
@pytest.mark.parametrize("queue", get_queues())
|
|
90
|
+
def test_dense_small_rbf_kernel(queue, gamma, dtype):
|
|
91
|
+
_test_dense_small_rbf_kernel(queue, gamma, dtype)
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
@pass_if_not_implemented_for_gpu(reason="poly kernel is not implemented")
|
|
95
|
+
@pytest.mark.parametrize("queue", get_queues())
|
|
96
|
+
def test_dense_self_poly_kernel(queue):
|
|
97
|
+
rng = np.random.RandomState(0)
|
|
98
|
+
X = np.array(2 * rng.random_sample((10, 4)))
|
|
99
|
+
|
|
100
|
+
degree = 2
|
|
101
|
+
result = poly_kernel(X, degree=degree, queue=queue)
|
|
102
|
+
expected = np.dot(X, np.array(X).T) ** degree
|
|
103
|
+
|
|
104
|
+
assert_allclose(result, expected, rtol=1e-14)
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def _test_dense_small_poly_kernel(queue, gamma, coef0, degree, dtype):
|
|
108
|
+
rng = np.random.RandomState(0)
|
|
109
|
+
X = np.array(2 * rng.random_sample((10, 4)), dtype=dtype)
|
|
110
|
+
Y = np.array(2 * rng.random_sample((15, 4)), dtype=dtype)
|
|
111
|
+
|
|
112
|
+
result = poly_kernel(X, Y, gamma=gamma, coef0=coef0, degree=degree, queue=queue)
|
|
113
|
+
expected = (gamma * np.dot(X, np.array(Y).T) + coef0) ** degree
|
|
114
|
+
|
|
115
|
+
tol = 1e-14 if result.dtype == np.float64 else 1e-5
|
|
116
|
+
assert_allclose(result, expected, rtol=tol)
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
@pass_if_not_implemented_for_gpu(reason="poly kernel is not implemented")
|
|
120
|
+
@pytest.mark.parametrize("queue", get_queues())
|
|
121
|
+
@pytest.mark.parametrize("gamma", [0.1, 1.0])
|
|
122
|
+
@pytest.mark.parametrize("coef0", [0.0, 1.0])
|
|
123
|
+
@pytest.mark.parametrize("degree", [2, 3])
|
|
124
|
+
@pytest.mark.parametrize("dtype", [np.float32, np.float64])
|
|
125
|
+
def test_dense_small_poly_kernel(queue, gamma, coef0, degree, dtype):
|
|
126
|
+
_test_dense_small_poly_kernel(queue, gamma, coef0, degree, dtype)
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
@pass_if_not_implemented_for_gpu(reason="sigmoid kernel is not implemented")
|
|
130
|
+
@pytest.mark.parametrize("queue", get_queues())
|
|
131
|
+
def test_dense_self_sigmoid_kernel(queue):
|
|
132
|
+
rng = np.random.RandomState(0)
|
|
133
|
+
X = np.array(2 * rng.random_sample((15, 4)))
|
|
134
|
+
|
|
135
|
+
result = sigmoid_kernel(X, queue=queue)
|
|
136
|
+
expected = np.tanh(np.dot(X, np.array(X).T))
|
|
137
|
+
|
|
138
|
+
assert_allclose(result, expected)
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
def _test_dense_small_sigmoid_kernel(queue, gamma, coef0, dtype):
|
|
142
|
+
rng = np.random.RandomState(0)
|
|
143
|
+
X = np.array(2 * rng.random_sample((10, 4)), dtype=dtype)
|
|
144
|
+
Y = np.array(2 * rng.random_sample((15, 4)), dtype=dtype)
|
|
145
|
+
|
|
146
|
+
result = sigmoid_kernel(X, Y, gamma=gamma, coef0=coef0, queue=queue)
|
|
147
|
+
expected = np.tanh(gamma * np.dot(X, np.array(Y).T) + coef0)
|
|
148
|
+
|
|
149
|
+
tol = 1e-14 if result.dtype == np.float64 else 1e-6
|
|
150
|
+
assert_allclose(result, expected, rtol=tol)
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
@pass_if_not_implemented_for_gpu(reason="sigmoid kernel is not implemented")
|
|
154
|
+
@pytest.mark.parametrize("queue", get_queues())
|
|
155
|
+
@pytest.mark.parametrize("gamma", [0.1, 1.0, 2.4])
|
|
156
|
+
@pytest.mark.parametrize("coef0", [0.0, 1.0, 5.5])
|
|
157
|
+
@pytest.mark.parametrize("dtype", [np.float32, np.float64])
|
|
158
|
+
def test_dense_small_sigmoid_kernel(queue, gamma, coef0, dtype):
|
|
159
|
+
_test_dense_small_sigmoid_kernel(queue, gamma, coef0, dtype)
|
onedal/spmd/__init__.py
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# ==============================================================================
|
|
2
|
+
# Copyright 2023 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
|
+
__all__ = [
|
|
18
|
+
"basic_statistics",
|
|
19
|
+
"cluster",
|
|
20
|
+
"covariance",
|
|
21
|
+
"decomposition",
|
|
22
|
+
"ensemble",
|
|
23
|
+
"linear_model",
|
|
24
|
+
"neighbors",
|
|
25
|
+
]
|
onedal/spmd/_base.py
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# ==============================================================================
|
|
2
|
+
# Copyright 2024 Intel Corporation
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
# ==============================================================================
|
|
16
|
+
|
|
17
|
+
from abc import ABC
|
|
18
|
+
|
|
19
|
+
from onedal import _spmd_backend
|
|
20
|
+
|
|
21
|
+
from ..common._base import _get_backend
|
|
22
|
+
from ..common._spmd_policy import _get_spmd_policy
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class BaseEstimatorSPMD(ABC):
|
|
26
|
+
def _get_backend(self, module, submodule=None, method=None, *args, **kwargs):
|
|
27
|
+
return _get_backend(_spmd_backend, module, submodule, method, *args, **kwargs)
|
|
28
|
+
|
|
29
|
+
def _get_policy(self, queue, *data):
|
|
30
|
+
return _get_spmd_policy(queue)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# ==============================================================================
|
|
2
|
+
# Copyright 2023 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 .basic_statistics import BasicStatistics
|
|
18
|
+
from .incremental_basic_statistics import IncrementalBasicStatistics
|
|
19
|
+
|
|
20
|
+
__all__ = ["BasicStatistics", "IncrementalBasicStatistics"]
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# ==============================================================================
|
|
2
|
+
# Copyright 2023 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 onedal.basic_statistics import BasicStatistics as BasicStatistics_Batch
|
|
18
|
+
|
|
19
|
+
from ..._device_offload import support_input_format
|
|
20
|
+
from .._base import BaseEstimatorSPMD
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class BasicStatistics(BaseEstimatorSPMD, BasicStatistics_Batch):
|
|
24
|
+
@support_input_format()
|
|
25
|
+
def compute(self, data, weights=None, queue=None):
|
|
26
|
+
return super().compute(data, weights=weights, queue=queue)
|
|
27
|
+
|
|
28
|
+
@support_input_format()
|
|
29
|
+
def fit(self, data, sample_weight=None, queue=None):
|
|
30
|
+
return super().fit(data, sample_weight=sample_weight, queue=queue)
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# ==============================================================================
|
|
2
|
+
# Copyright 2024 Intel Corporation
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
# ==============================================================================
|
|
16
|
+
|
|
17
|
+
from daal4py.sklearn._utils import get_dtype
|
|
18
|
+
|
|
19
|
+
from ...basic_statistics import (
|
|
20
|
+
IncrementalBasicStatistics as base_IncrementalBasicStatistics,
|
|
21
|
+
)
|
|
22
|
+
from ...datatypes import _convert_to_supported, to_table
|
|
23
|
+
from .._base import BaseEstimatorSPMD
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class IncrementalBasicStatistics(BaseEstimatorSPMD, base_IncrementalBasicStatistics):
|
|
27
|
+
def _reset(self):
|
|
28
|
+
self._partial_result = super(base_IncrementalBasicStatistics, self)._get_backend(
|
|
29
|
+
"basic_statistics", None, "partial_compute_result"
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
def partial_fit(self, X, weights=None, queue=None):
|
|
33
|
+
"""
|
|
34
|
+
Computes partial data for basic statistics
|
|
35
|
+
from data batch X and saves it to `_partial_result`.
|
|
36
|
+
|
|
37
|
+
Parameters
|
|
38
|
+
----------
|
|
39
|
+
X : array-like of shape (n_samples, n_features)
|
|
40
|
+
Training data batch, where `n_samples` is the number of samples
|
|
41
|
+
in the batch, and `n_features` is the number of features.
|
|
42
|
+
|
|
43
|
+
queue : dpctl.SyclQueue
|
|
44
|
+
If not None, use this queue for computations.
|
|
45
|
+
|
|
46
|
+
Returns
|
|
47
|
+
-------
|
|
48
|
+
self : object
|
|
49
|
+
Returns the instance itself.
|
|
50
|
+
"""
|
|
51
|
+
self._queue = queue
|
|
52
|
+
policy = super(base_IncrementalBasicStatistics, self)._get_policy(queue, X)
|
|
53
|
+
X, weights = _convert_to_supported(policy, X, weights)
|
|
54
|
+
|
|
55
|
+
if not hasattr(self, "_onedal_params"):
|
|
56
|
+
dtype = get_dtype(X)
|
|
57
|
+
self._onedal_params = self._get_onedal_params(False, dtype=dtype)
|
|
58
|
+
|
|
59
|
+
X_table, weights_table = to_table(X, weights)
|
|
60
|
+
self._partial_result = super(base_IncrementalBasicStatistics, self)._get_backend(
|
|
61
|
+
"basic_statistics",
|
|
62
|
+
None,
|
|
63
|
+
"partial_compute",
|
|
64
|
+
policy,
|
|
65
|
+
self._onedal_params,
|
|
66
|
+
self._partial_result,
|
|
67
|
+
X_table,
|
|
68
|
+
weights_table,
|
|
69
|
+
)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# ==============================================================================
|
|
2
|
+
# Copyright 2023 Intel Corporation
|
|
3
|
+
#
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
# you may not use this file except in compliance with the License.
|
|
6
|
+
# You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
# ==============================================================================
|
|
16
|
+
|
|
17
|
+
from daal4py.sklearn._utils import daal_check_version
|
|
18
|
+
|
|
19
|
+
from .dbscan import DBSCAN
|
|
20
|
+
|
|
21
|
+
if daal_check_version((2023, "P", 200)):
|
|
22
|
+
from .kmeans import KMeans
|
|
23
|
+
|
|
24
|
+
__all__ = ["DBSCAN", "KMeans"]
|
|
25
|
+
else:
|
|
26
|
+
__all__ = [
|
|
27
|
+
"DBSCAN",
|
|
28
|
+
]
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# ==============================================================================
|
|
2
|
+
# Copyright 2023 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 onedal.cluster import DBSCAN as DBSCAN_Batch
|
|
18
|
+
|
|
19
|
+
from .._base import BaseEstimatorSPMD
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class DBSCAN(BaseEstimatorSPMD, DBSCAN_Batch):
|
|
23
|
+
pass
|