scikit-learn-intelex 2024.2.0__py39-none-win_amd64.whl → 2024.4.0__py39-none-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of scikit-learn-intelex might be problematic. Click here for more details.

Files changed (112) hide show
  1. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/__init__.py +9 -7
  2. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/_device_offload.py +31 -4
  3. {scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/spmd → scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex}/basic_statistics/__init__.py +2 -1
  4. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +288 -0
  5. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +386 -0
  6. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +3 -1
  7. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/conftest.py +63 -0
  8. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +335 -0
  9. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_preview_pca.py → scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +22 -8
  10. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +74 -43
  11. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +78 -89
  12. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +15 -19
  13. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +316 -0
  14. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +63 -11
  15. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +40 -5
  16. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +0 -2
  17. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/neighbors/_lof.py +74 -20
  18. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +4 -1
  19. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +44 -131
  20. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py → scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +198 -221
  21. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +146 -0
  22. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +0 -5
  23. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/preview/__init__.py +1 -1
  24. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/preview/cluster/k_means.py +5 -73
  25. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +6 -5
  26. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +18 -5
  27. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +4 -12
  28. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/svm/_common.py +4 -7
  29. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +70 -50
  30. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +6 -52
  31. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +70 -51
  32. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +3 -49
  33. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/tests/_utils.py +164 -0
  34. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +8 -3
  35. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +268 -0
  36. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +8 -2
  37. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/tests/test_parallel.py +6 -8
  38. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/tests/test_patching.py +371 -0
  39. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/utils/__init__.py +2 -1
  40. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/utils/_namespace.py +97 -0
  41. {scikit_learn_intelex-2024.2.0.dist-info → scikit_learn_intelex-2024.4.0.dist-info}/METADATA +2 -2
  42. scikit_learn_intelex-2024.4.0.dist-info/RECORD +101 -0
  43. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +0 -17
  44. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +0 -27
  45. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +0 -381
  46. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +0 -308
  47. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +0 -19
  48. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/pca.py +0 -374
  49. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/tests/_models_info.py +0 -170
  50. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +0 -240
  51. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/tests/test_patching.py +0 -136
  52. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/tests/utils/_launch_algorithms.py +0 -118
  53. scikit_learn_intelex-2024.2.0.dist-info/RECORD +0 -101
  54. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/__main__.py +0 -0
  55. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/_config.py +0 -0
  56. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/_utils.py +0 -0
  57. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +0 -0
  58. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +0 -0
  59. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/cluster/k_means.py +0 -0
  60. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +0 -0
  61. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +0 -0
  62. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/covariance/__init__.py +0 -0
  63. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +0 -0
  64. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +0 -0
  65. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -0
  66. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +0 -0
  67. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -0
  68. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +0 -0
  69. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +0 -0
  70. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/linear_model/__init__.py +0 -0
  71. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +0 -0
  72. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/linear_model/logistic_path.py +0 -0
  73. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/linear_model/ridge.py +0 -0
  74. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -0
  75. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/manifold/t_sne.py +0 -0
  76. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +0 -0
  77. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -0
  78. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +0 -0
  79. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +0 -0
  80. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +0 -0
  81. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +0 -0
  82. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +0 -0
  83. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +0 -0
  84. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +0 -0
  85. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/preview/cluster/__init__.py +0 -0
  86. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/preview/cluster/_common.py +0 -0
  87. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +0 -0
  88. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +0 -0
  89. {scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd}/basic_statistics/__init__.py +0 -0
  90. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +0 -0
  91. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +0 -0
  92. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +0 -0
  93. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +0 -0
  94. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +0 -0
  95. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +0 -0
  96. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/__init__.py +0 -0
  97. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +0 -0
  98. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +0 -0
  99. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +0 -0
  100. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +0 -0
  101. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +0 -0
  102. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +0 -0
  103. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/neighbors.py +0 -0
  104. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -0
  105. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +0 -0
  106. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/tests/test_config.py +0 -0
  107. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability_tests.py +0 -0
  108. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -0
  109. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/utils/validation.py +0 -0
  110. {scikit_learn_intelex-2024.2.0.dist-info → scikit_learn_intelex-2024.4.0.dist-info}/LICENSE.txt +0 -0
  111. {scikit_learn_intelex-2024.2.0.dist-info → scikit_learn_intelex-2024.4.0.dist-info}/WHEEL +0 -0
  112. {scikit_learn_intelex-2024.2.0.dist-info → scikit_learn_intelex-2024.4.0.dist-info}/top_level.txt +0 -0
@@ -1,308 +0,0 @@
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 warnings
18
-
19
- from sklearn.neighbors._ball_tree import BallTree
20
- from sklearn.neighbors._base import NeighborsBase as sklearn_NeighborsBase
21
- from sklearn.neighbors._kd_tree import KDTree
22
-
23
- from daal4py.sklearn._n_jobs_support import control_n_jobs
24
- from daal4py.sklearn._utils import sklearn_check_version
25
-
26
- if not sklearn_check_version("1.2"):
27
- from sklearn.neighbors._base import _check_weights
28
-
29
- import numpy as np
30
- from sklearn.neighbors._base import VALID_METRICS
31
- from sklearn.neighbors._regression import (
32
- KNeighborsRegressor as sklearn_KNeighborsRegressor,
33
- )
34
- from sklearn.neighbors._unsupervised import NearestNeighbors as sklearn_NearestNeighbors
35
- from sklearn.utils.validation import _deprecate_positional_args, check_is_fitted
36
-
37
- from onedal.neighbors import KNeighborsRegressor as onedal_KNeighborsRegressor
38
- from onedal.utils import _check_array, _num_features, _num_samples
39
-
40
- from .._device_offload import dispatch, wrap_output_data
41
- from .common import KNeighborsDispatchingBase
42
-
43
- if sklearn_check_version("0.24"):
44
-
45
- class KNeighborsRegressor_(sklearn_KNeighborsRegressor):
46
- if sklearn_check_version("1.2"):
47
- _parameter_constraints: dict = {
48
- **sklearn_KNeighborsRegressor._parameter_constraints
49
- }
50
-
51
- @_deprecate_positional_args
52
- def __init__(
53
- self,
54
- n_neighbors=5,
55
- *,
56
- weights="uniform",
57
- algorithm="auto",
58
- leaf_size=30,
59
- p=2,
60
- metric="minkowski",
61
- metric_params=None,
62
- n_jobs=None,
63
- **kwargs,
64
- ):
65
- super().__init__(
66
- n_neighbors=n_neighbors,
67
- algorithm=algorithm,
68
- leaf_size=leaf_size,
69
- metric=metric,
70
- p=p,
71
- metric_params=metric_params,
72
- n_jobs=n_jobs,
73
- **kwargs,
74
- )
75
- self.weights = (
76
- weights if sklearn_check_version("1.0") else _check_weights(weights)
77
- )
78
-
79
- elif sklearn_check_version("0.22"):
80
- from sklearn.neighbors._base import SupervisedFloatMixin as BaseSupervisedFloatMixin
81
-
82
- class KNeighborsRegressor_(sklearn_KNeighborsRegressor, BaseSupervisedFloatMixin):
83
- @_deprecate_positional_args
84
- def __init__(
85
- self,
86
- n_neighbors=5,
87
- *,
88
- weights="uniform",
89
- algorithm="auto",
90
- leaf_size=30,
91
- p=2,
92
- metric="minkowski",
93
- metric_params=None,
94
- n_jobs=None,
95
- **kwargs,
96
- ):
97
- super().__init__(
98
- n_neighbors=n_neighbors,
99
- algorithm=algorithm,
100
- leaf_size=leaf_size,
101
- metric=metric,
102
- p=p,
103
- metric_params=metric_params,
104
- n_jobs=n_jobs,
105
- **kwargs,
106
- )
107
- self.weights = _check_weights(weights)
108
-
109
- else:
110
- from sklearn.neighbors.base import SupervisedFloatMixin as BaseSupervisedFloatMixin
111
-
112
- class KNeighborsRegressor_(sklearn_KNeighborsRegressor, BaseSupervisedFloatMixin):
113
- @_deprecate_positional_args
114
- def __init__(
115
- self,
116
- n_neighbors=5,
117
- *,
118
- weights="uniform",
119
- algorithm="auto",
120
- leaf_size=30,
121
- p=2,
122
- metric="minkowski",
123
- metric_params=None,
124
- n_jobs=None,
125
- **kwargs,
126
- ):
127
- super().__init__(
128
- n_neighbors=n_neighbors,
129
- algorithm=algorithm,
130
- leaf_size=leaf_size,
131
- metric=metric,
132
- p=p,
133
- metric_params=metric_params,
134
- n_jobs=n_jobs,
135
- **kwargs,
136
- )
137
- self.weights = _check_weights(weights)
138
-
139
-
140
- @control_n_jobs(decorated_methods=["fit", "predict", "kneighbors"])
141
- class KNeighborsRegressor(KNeighborsRegressor_, KNeighborsDispatchingBase):
142
- if sklearn_check_version("1.2"):
143
- _parameter_constraints: dict = {**KNeighborsRegressor_._parameter_constraints}
144
-
145
- if sklearn_check_version("1.0"):
146
-
147
- def __init__(
148
- self,
149
- n_neighbors=5,
150
- *,
151
- weights="uniform",
152
- algorithm="auto",
153
- leaf_size=30,
154
- p=2,
155
- metric="minkowski",
156
- metric_params=None,
157
- n_jobs=None,
158
- ):
159
- super().__init__(
160
- n_neighbors=n_neighbors,
161
- weights=weights,
162
- algorithm=algorithm,
163
- leaf_size=leaf_size,
164
- metric=metric,
165
- p=p,
166
- metric_params=metric_params,
167
- n_jobs=n_jobs,
168
- )
169
-
170
- else:
171
-
172
- @_deprecate_positional_args
173
- def __init__(
174
- self,
175
- n_neighbors=5,
176
- *,
177
- weights="uniform",
178
- algorithm="auto",
179
- leaf_size=30,
180
- p=2,
181
- metric="minkowski",
182
- metric_params=None,
183
- n_jobs=None,
184
- **kwargs,
185
- ):
186
- super().__init__(
187
- n_neighbors=n_neighbors,
188
- weights=weights,
189
- algorithm=algorithm,
190
- leaf_size=leaf_size,
191
- metric=metric,
192
- p=p,
193
- metric_params=metric_params,
194
- n_jobs=n_jobs,
195
- **kwargs,
196
- )
197
-
198
- def fit(self, X, y):
199
- self._fit_validation(X, y)
200
- dispatch(
201
- self,
202
- "fit",
203
- {
204
- "onedal": self.__class__._onedal_fit,
205
- "sklearn": sklearn_KNeighborsRegressor.fit,
206
- },
207
- X,
208
- y,
209
- )
210
- return self
211
-
212
- @wrap_output_data
213
- def predict(self, X):
214
- check_is_fitted(self)
215
- if sklearn_check_version("1.0"):
216
- self._check_feature_names(X, reset=False)
217
- return dispatch(
218
- self,
219
- "predict",
220
- {
221
- "onedal": self.__class__._onedal_predict,
222
- "sklearn": sklearn_KNeighborsRegressor.predict,
223
- },
224
- X,
225
- )
226
-
227
- @wrap_output_data
228
- def kneighbors(self, X=None, n_neighbors=None, return_distance=True):
229
- check_is_fitted(self)
230
- if sklearn_check_version("1.0") and X is not None:
231
- self._check_feature_names(X, reset=False)
232
- return dispatch(
233
- self,
234
- "kneighbors",
235
- {
236
- "onedal": self.__class__._onedal_kneighbors,
237
- "sklearn": sklearn_KNeighborsRegressor.kneighbors,
238
- },
239
- X,
240
- n_neighbors=n_neighbors,
241
- return_distance=return_distance,
242
- )
243
-
244
- @wrap_output_data
245
- def radius_neighbors(
246
- self, X=None, radius=None, return_distance=True, sort_results=False
247
- ):
248
- _onedal_estimator = getattr(self, "_onedal_estimator", None)
249
-
250
- if (
251
- _onedal_estimator is not None
252
- or getattr(self, "_tree", 0) is None
253
- and self._fit_method == "kd_tree"
254
- ):
255
- if sklearn_check_version("0.24"):
256
- sklearn_NearestNeighbors.fit(self, self._fit_X, getattr(self, "_y", None))
257
- else:
258
- sklearn_NearestNeighbors.fit(self, self._fit_X)
259
- if sklearn_check_version("0.22"):
260
- result = sklearn_NearestNeighbors.radius_neighbors(
261
- self, X, radius, return_distance, sort_results
262
- )
263
- else:
264
- result = sklearn_NearestNeighbors.radius_neighbors(
265
- self, X, radius, return_distance
266
- )
267
-
268
- return result
269
-
270
- def _onedal_fit(self, X, y, queue=None):
271
- onedal_params = {
272
- "n_neighbors": self.n_neighbors,
273
- "weights": self.weights,
274
- "algorithm": self.algorithm,
275
- "metric": self.effective_metric_,
276
- "p": self.effective_metric_params_["p"],
277
- }
278
-
279
- try:
280
- requires_y = self._get_tags()["requires_y"]
281
- except KeyError:
282
- requires_y = False
283
-
284
- self._onedal_estimator = onedal_KNeighborsRegressor(**onedal_params)
285
- self._onedal_estimator.requires_y = requires_y
286
- self._onedal_estimator.effective_metric_ = self.effective_metric_
287
- self._onedal_estimator.effective_metric_params_ = self.effective_metric_params_
288
- self._onedal_estimator.fit(X, y, queue=queue)
289
-
290
- self._save_attributes()
291
-
292
- def _onedal_predict(self, X, queue=None):
293
- return self._onedal_estimator.predict(X, queue=queue)
294
-
295
- def _onedal_kneighbors(
296
- self, X=None, n_neighbors=None, return_distance=True, queue=None
297
- ):
298
- return self._onedal_estimator.kneighbors(
299
- X, n_neighbors, return_distance, queue=queue
300
- )
301
-
302
- def _save_attributes(self):
303
- self.n_features_in_ = self._onedal_estimator.n_features_in_
304
- self.n_samples_fit_ = self._onedal_estimator.n_samples_fit_
305
- self._fit_X = self._onedal_estimator._fit_X
306
- self._y = self._onedal_estimator._y
307
- self._fit_method = self._onedal_estimator._fit_method
308
- self._tree = self._onedal_estimator._tree
@@ -1,19 +0,0 @@
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 .pca import PCA
18
-
19
- __all__ = ["PCA"]
@@ -1,374 +0,0 @@
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
- import numbers
18
- from math import sqrt
19
-
20
- import numpy as np
21
- from scipy.sparse import issparse
22
- from sklearn.base import BaseEstimator
23
- from sklearn.utils.extmath import stable_cumsum
24
- from sklearn.utils.validation import check_array, check_is_fitted
25
-
26
- from daal4py.sklearn._n_jobs_support import control_n_jobs
27
- from daal4py.sklearn._utils import sklearn_check_version
28
- from onedal.utils import _check_array
29
-
30
- from ..._device_offload import dispatch
31
- from ..._utils import PatchingConditionsChain, register_hyperparameters
32
-
33
- if sklearn_check_version("1.1") and not sklearn_check_version("1.2"):
34
- from sklearn.utils import check_scalar
35
- if sklearn_check_version("0.23"):
36
- from sklearn.decomposition._pca import _infer_dimension
37
- else:
38
- from sklearn.decomposition._pca import _infer_dimension_
39
-
40
- from sklearn.decomposition import PCA as sklearn_PCA
41
-
42
- from onedal.common.hyperparameters import get_hyperparameters
43
- from onedal.decomposition import PCA as onedal_PCA
44
-
45
-
46
- @register_hyperparameters({"fit": get_hyperparameters("covariance", "compute")})
47
- @control_n_jobs(decorated_methods=["fit", "transform"])
48
- class PCA(sklearn_PCA):
49
- __doc__ = sklearn_PCA.__doc__
50
-
51
- if sklearn_check_version("1.2"):
52
- _parameter_constraints: dict = {**sklearn_PCA._parameter_constraints}
53
-
54
- def __init__(
55
- self,
56
- n_components=None,
57
- *,
58
- copy=True,
59
- whiten=False,
60
- svd_solver="auto",
61
- tol=0.0,
62
- iterated_power="auto",
63
- n_oversamples=10,
64
- power_iteration_normalizer="auto",
65
- random_state=None,
66
- ):
67
- self.n_components = n_components
68
- self.copy = copy
69
- self.whiten = whiten
70
- self.svd_solver = svd_solver
71
- self.tol = tol
72
- self.iterated_power = iterated_power
73
- self.n_oversamples = n_oversamples
74
- self.power_iteration_normalizer = power_iteration_normalizer
75
- self.random_state = random_state
76
-
77
- def _validate_n_components(self, n_components, n_samples, n_features, n_sf_min):
78
- if n_components == "mle":
79
- if n_samples < n_features:
80
- raise ValueError(
81
- "n_components='mle' is only supported if" " n_samples >= n_features"
82
- )
83
- elif not 0 <= n_components <= n_sf_min:
84
- raise ValueError(
85
- "n_components=%r must be between 0 and "
86
- "min(n_samples, n_features)=%r with "
87
- "svd_solver='full'" % (n_components, min(n_samples, n_features))
88
- )
89
- elif n_components >= 1:
90
- if not isinstance(n_components, numbers.Integral):
91
- raise ValueError(
92
- "n_components=%r must be of type int "
93
- "when greater than or equal to 1, "
94
- "was of type=%r" % (n_components, type(n_components))
95
- )
96
-
97
- def fit(self, X, y=None):
98
- if sklearn_check_version("1.2"):
99
- self._validate_params()
100
- elif sklearn_check_version("1.1"):
101
- check_scalar(
102
- self.n_oversamples,
103
- "n_oversamples",
104
- min_val=1,
105
- target_type=numbers.Integral,
106
- )
107
-
108
- if sklearn_check_version("0.23"):
109
- X = self._validate_data(
110
- X,
111
- dtype=[np.float64, np.float32],
112
- ensure_2d=True,
113
- copy=False,
114
- accept_sparse=True,
115
- )
116
- else:
117
- X = _check_array(
118
- X,
119
- dtype=[np.float64, np.float32],
120
- ensure_2d=True,
121
- copy=False,
122
- accept_sparse=True,
123
- )
124
-
125
- n_samples, n_features = X.shape
126
- n_sf_min = min(n_samples, n_features)
127
-
128
- if self.n_components is None:
129
- if self.svd_solver == "arpack":
130
- n_components = n_sf_min - 1
131
- else:
132
- n_components = n_sf_min
133
- else:
134
- n_components = self.n_components
135
-
136
- self._validate_n_components(n_components, n_samples, n_features, n_sf_min)
137
-
138
- self._fit_svd_solver = self.svd_solver
139
-
140
- if self._fit_svd_solver == "auto":
141
- if sklearn_check_version("1.1"):
142
- if max(X.shape) <= 500 or n_components == "mle":
143
- self._fit_svd_solver = "full"
144
- elif 1 <= n_components < 0.8 * n_sf_min:
145
- self._fit_svd_solver = "randomized"
146
- else:
147
- self._fit_svd_solver = "full"
148
- else:
149
- if n_components == "mle":
150
- self._fit_svd_solver = "full"
151
- else:
152
- n, p, k = X.shape[0], X.shape[1], n_components
153
- # check if sklearnex is faster than randomized sklearn
154
- # Refer to daal4py
155
- regression_coefs = np.array(
156
- [
157
- [9.779873e-11, n * p * k],
158
- [-1.122062e-11, n * p * p],
159
- [1.127905e-09, n**2],
160
- ]
161
- )
162
-
163
- if (
164
- n_components >= 1
165
- and np.dot(regression_coefs[:, 0], regression_coefs[:, 1]) <= 0
166
- ):
167
- self._fit_svd_solver = "randomized"
168
- else:
169
- self._fit_svd_solver = "full"
170
-
171
- dispatch(
172
- self,
173
- "fit",
174
- {
175
- "onedal": self.__class__._onedal_fit,
176
- "sklearn": sklearn_PCA.fit,
177
- },
178
- X,
179
- )
180
- return self
181
-
182
- def _onedal_supported(self, method_name, *data):
183
- class_name = self.__class__.__name__
184
- X = data[0]
185
-
186
- if method_name == "fit":
187
- patching_status = PatchingConditionsChain(
188
- f"sklearn.decomposition.{class_name}.{method_name}"
189
- )
190
- patching_status.and_conditions(
191
- [
192
- (
193
- self._fit_svd_solver == "full",
194
- f"'{self._fit_svd_solver}' SVD solver is not supported. "
195
- "Only 'full' solver is supported.",
196
- ),
197
- (not issparse(X), "oneDAL PCA does not support sparse inputs"),
198
- (
199
- X.shape[1] / X.shape[0] < 2,
200
- "The shape of X does not satisfy oneDAL requirements: "
201
- "number of features / number of samples >= 2",
202
- ),
203
- ]
204
- )
205
- return patching_status
206
- elif method_name == "transform":
207
- patching_status = PatchingConditionsChain(
208
- f"sklearn.decomposition.{class_name}.{method_name}"
209
- )
210
- patching_status.and_conditions(
211
- [
212
- (hasattr(self, "_onedal_estimator"), "oneDAL model was not trained"),
213
- ]
214
- )
215
- return patching_status
216
- raise RuntimeError(f"Unknown method {method_name} in {self.__class__.__name__}")
217
-
218
- def _onedal_cpu_supported(self, method_name, *data):
219
- return self._onedal_supported(method_name, *data)
220
-
221
- def _onedal_gpu_supported(self, method_name, *data):
222
- return self._onedal_supported(method_name, *data)
223
-
224
- def _onedal_fit(self, X, y=None, queue=None):
225
- if self.n_components == "mle" or self.n_components is None:
226
- onedal_n_components = min(X.shape)
227
- elif 0 < self.n_components < 1:
228
- onedal_n_components = min(X.shape)
229
- else:
230
- onedal_n_components = self.n_components
231
-
232
- onedal_params = {
233
- "n_components": onedal_n_components,
234
- "is_deterministic": True,
235
- "method": "precomputed",
236
- }
237
- self._onedal_estimator = onedal_PCA(**onedal_params)
238
- self._onedal_estimator.fit(X, queue=queue)
239
- self._save_attributes()
240
-
241
- U = None
242
- S = self.singular_values_
243
- V = self.components_
244
-
245
- return U, S, V
246
-
247
- def _onedal_predict(self, X, queue=None):
248
- return self._onedal_estimator.predict(X, queue)
249
-
250
- def _onedal_transform(self, X):
251
- X = _check_array(X, dtype=[np.float64, np.float32], ensure_2d=True, copy=False)
252
-
253
- if hasattr(self, "n_features_in_"):
254
- if self.n_features_in_ != X.shape[1]:
255
- raise ValueError(
256
- f"X has {X.shape[1]} features, "
257
- f"but {self.__class__.__name__} is expecting "
258
- f"{self.n_features_in_} features as input"
259
- )
260
- elif hasattr(self, "n_features_"):
261
- if self.n_features_ != X.shape[1]:
262
- raise ValueError(
263
- f"X has {X.shape[1]} features, "
264
- f"but {self.__class__.__name__} is expecting "
265
- f"{self.n_features_} features as input"
266
- )
267
-
268
- # Mean center
269
- X_centered = X - self.mean_
270
- return dispatch(
271
- self,
272
- "transform",
273
- {
274
- "onedal": self.__class__._onedal_predict,
275
- "sklearn": sklearn_PCA.transform,
276
- },
277
- X_centered,
278
- )
279
-
280
- def transform(self, X):
281
- check_is_fitted(self)
282
- if hasattr(self, "_onedal_estimator"):
283
- X_new = self._onedal_transform(X)[:, : self.n_components_]
284
- if self.whiten:
285
- X_new /= np.sqrt(self.explained_variance_)
286
- else:
287
- return super().transform(X)
288
- return X_new
289
-
290
- def fit_transform(self, X, y=None):
291
- """Fit the model with X and apply the dimensionality reduction on X.
292
- Parameters
293
- ----------
294
- X : array-like of shape (n_samples, n_features)
295
- Training data, where `n_samples` is the number of samples
296
- and `n_features` is the number of features.
297
- y : Ignored.
298
-
299
- Returns
300
- -------
301
- X_new : ndarray of shape (n_samples, n_components)
302
- Transformed values of X.
303
- """
304
- if self.svd_solver in ["randomized", "arpack"]:
305
- return super().fit_transform(X)
306
- else:
307
- self.fit(X)
308
- if hasattr(self, "_onedal_estimator"):
309
- X_new = self._onedal_transform(X)[:, : self.n_components_]
310
- if self.whiten:
311
- X_new /= np.sqrt(self.explained_variance_)
312
- return X_new
313
- else:
314
- return super().transform(X)
315
-
316
- fit.__doc__ = sklearn_PCA.fit.__doc__
317
- transform.__doc__ = sklearn_PCA.transform.__doc__
318
- fit_transform.__doc__ = sklearn_PCA.fit_transform.__doc__
319
-
320
- def _save_attributes(self):
321
- self.n_samples_ = self._onedal_estimator.n_samples_
322
-
323
- if sklearn_check_version("1.2"):
324
- self.n_features_in_ = self._onedal_estimator.n_features_in_
325
- n_features = self.n_features_in_
326
- elif sklearn_check_version("0.24"):
327
- self.n_features_ = self._onedal_estimator.n_features_
328
- self.n_features_in_ = self._onedal_estimator.n_features_in_
329
- n_features = self.n_features_in_
330
- else:
331
- self.n_features_ = self._onedal_estimator.n_features_
332
- n_features = self.n_features_
333
- n_sf_min = min(self.n_samples_, n_features)
334
-
335
- self.mean_ = self._onedal_estimator.mean_
336
- self.singular_values_ = self._onedal_estimator.singular_values_
337
- self.explained_variance_ = self._onedal_estimator.explained_variance_
338
- self.explained_variance_ratio_ = self._onedal_estimator.explained_variance_ratio_
339
-
340
- if self.n_components is None:
341
- self.n_components_ = self._onedal_estimator.n_components_
342
- elif self.n_components == "mle":
343
- if sklearn_check_version("0.23"):
344
- self.n_components_ = _infer_dimension(
345
- self.explained_variance_, self.n_samples_
346
- )
347
- else:
348
- self.n_components_ = _infer_dimension_(
349
- self.explained_variance_, self.n_samples_, n_features
350
- )
351
- elif 0 < self.n_components < 1.0:
352
- ratio_cumsum = stable_cumsum(self.explained_variance_ratio_)
353
- self.n_components_ = (
354
- np.searchsorted(ratio_cumsum, self.n_components, side="right") + 1
355
- )
356
- else:
357
- self.n_components_ = self._onedal_estimator.n_components_
358
-
359
- if self.n_components_ < n_sf_min:
360
- if self.explained_variance_.shape[0] == n_sf_min:
361
- self.noise_variance_ = self.explained_variance_[
362
- self.n_components_ :
363
- ].mean()
364
- else:
365
- self.noise_variance_ = self._onedal_estimator.noise_variance_
366
- else:
367
- self.noise_variance_ = 0.0
368
-
369
- self.explained_variance_ = self.explained_variance_[: self.n_components_]
370
- self.explained_variance_ratio_ = self.explained_variance_ratio_[
371
- : self.n_components_
372
- ]
373
- self.components_ = self._onedal_estimator.components_[: self.n_components_]
374
- self.singular_values_ = self.singular_values_[: self.n_components_]