scikit-learn-intelex 2023.2.1__py311-none-win_amd64.whl → 2024.0.1__py311-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 (109) hide show
  1. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/__init__.py +2 -2
  2. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/__main__.py +16 -12
  3. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/_config.py +2 -2
  4. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/_device_offload.py +90 -56
  5. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/_utils.py +95 -0
  6. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +3 -3
  7. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +2 -2
  8. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +4 -4
  9. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/cluster/dbscan.py +187 -0
  10. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/cluster/k_means.py +2 -2
  11. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +12 -6
  12. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +5 -5
  13. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +3 -3
  14. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/decomposition/pca.py +2 -2
  15. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +5 -4
  16. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/dispatcher.py +102 -72
  17. {scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/preview → scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex}/ensemble/__init__.py +12 -4
  18. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/ensemble/_forest.py +1947 -0
  19. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +118 -0
  20. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +31 -16
  21. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +21 -14
  22. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/linear_model/__init__.py +10 -10
  23. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +2 -2
  24. {scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/preview → scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex}/linear_model/linear.py +173 -83
  25. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/linear_model/logistic_path.py +3 -3
  26. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/linear_model/ridge.py +2 -2
  27. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +23 -7
  28. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +4 -3
  29. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +3 -3
  30. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/manifold/t_sne.py +2 -2
  31. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +4 -3
  32. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +5 -5
  33. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +2 -2
  34. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +2 -2
  35. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +8 -6
  36. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +3 -3
  37. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +2 -2
  38. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +6 -3
  39. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +9 -5
  40. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +100 -77
  41. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +331 -0
  42. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +307 -0
  43. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +116 -58
  44. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/neighbors/lof.py +118 -56
  45. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +85 -0
  46. {scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/preview/decomposition → scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/preview}/__init__.py +18 -20
  47. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/preview/cluster/__init__.py +3 -3
  48. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/preview/cluster/_common.py +7 -7
  49. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/preview/cluster/k_means.py +104 -73
  50. scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/linear_model/linear.py → scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +4 -1
  51. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/preview/decomposition/pca.py +128 -100
  52. scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/preview/linear_model/tests/test_preview_linear.py → scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_preview_pca.py +18 -16
  53. {scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/preview/linear_model → scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/spmd}/__init__.py +24 -22
  54. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +3 -3
  55. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +2 -2
  56. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +11 -5
  57. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +50 -0
  58. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +2 -2
  59. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/__init__.py +3 -3
  60. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +2 -2
  61. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +3 -3
  62. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +16 -14
  63. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +3 -3
  64. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +2 -2
  65. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +3 -3
  66. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/neighbors.py +3 -3
  67. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +11 -8
  68. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/svm/_common.py +56 -56
  69. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +110 -55
  70. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +65 -31
  71. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/svm/svc.py +136 -78
  72. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/svm/svr.py +65 -31
  73. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +102 -0
  74. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/tests/_models_info.py +170 -0
  75. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/tests/test_config.py +9 -8
  76. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +63 -69
  77. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +55 -53
  78. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/tests/test_parallel.py +50 -0
  79. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/tests/test_patching.py +8 -7
  80. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability_tests.py +428 -0
  81. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/tests/utils/_launch_algorithms.py +39 -39
  82. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/utils/__init__.py +3 -3
  83. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/utils/parallel.py +59 -0
  84. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/utils/validation.py +2 -2
  85. {scikit_learn_intelex-2023.2.1.dist-info → scikit_learn_intelex-2024.0.1.dist-info}/METADATA +34 -35
  86. scikit_learn_intelex-2024.0.1.dist-info/RECORD +90 -0
  87. scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/_utils.py +0 -82
  88. scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/cluster/dbscan.py +0 -18
  89. scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -20
  90. scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/ensemble/forest.py +0 -18
  91. scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +0 -46
  92. scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +0 -228
  93. scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +0 -213
  94. scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +0 -57
  95. scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/preview/__init__.py +0 -18
  96. scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_preview_pca.py +0 -28
  97. scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/preview/ensemble/extra_trees.py +0 -1261
  98. scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/preview/ensemble/forest.py +0 -1155
  99. scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/preview/ensemble/tests/test_preview_ensemble.py +0 -67
  100. scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/preview/linear_model/_common.py +0 -66
  101. scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/spmd/__init__.py +0 -23
  102. scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +0 -63
  103. scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/tests/_models_info.py +0 -159
  104. scikit_learn_intelex-2023.2.1.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability_tests.py +0 -383
  105. scikit_learn_intelex-2023.2.1.dist-info/RECORD +0 -95
  106. {scikit_learn_intelex-2023.2.1.data → scikit_learn_intelex-2024.0.1.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +0 -0
  107. {scikit_learn_intelex-2023.2.1.dist-info → scikit_learn_intelex-2024.0.1.dist-info}/LICENSE.txt +0 -0
  108. {scikit_learn_intelex-2023.2.1.dist-info → scikit_learn_intelex-2024.0.1.dist-info}/WHEEL +0 -0
  109. {scikit_learn_intelex-2023.2.1.dist-info → scikit_learn_intelex-2024.0.1.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,4 @@
1
- #===============================================================================
1
+ # ==============================================================================
2
2
  # Copyright 2021 Intel Corporation
3
3
  #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -12,31 +12,53 @@
12
12
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
- #===============================================================================
16
-
17
- from daal4py.sklearn._utils import sklearn_check_version
18
- from ._common import BaseSVR
19
- from .._device_offload import dispatch, wrap_output_data
15
+ # ==============================================================================
20
16
 
21
17
  from sklearn.svm import NuSVR as sklearn_NuSVR
22
18
  from sklearn.utils.validation import _deprecate_positional_args
19
+
20
+ from daal4py.sklearn._utils import sklearn_check_version
23
21
  from onedal.svm import NuSVR as onedal_NuSVR
24
22
 
23
+ from .._device_offload import dispatch, wrap_output_data
24
+ from ._common import BaseSVR
25
+
25
26
 
26
27
  class NuSVR(sklearn_NuSVR, BaseSVR):
27
28
  __doc__ = sklearn_NuSVR.__doc__
28
29
 
29
- if sklearn_check_version('1.2'):
30
+ if sklearn_check_version("1.2"):
30
31
  _parameter_constraints: dict = {**sklearn_NuSVR._parameter_constraints}
31
32
 
32
33
  @_deprecate_positional_args
33
- def __init__(self, *, kernel='rbf', degree=3, gamma='scale',
34
- coef0=0.0, tol=1e-3, C=1.0, nu=0.5, shrinking=True,
35
- cache_size=200, verbose=False, max_iter=-1):
34
+ def __init__(
35
+ self,
36
+ *,
37
+ kernel="rbf",
38
+ degree=3,
39
+ gamma="scale",
40
+ coef0=0.0,
41
+ tol=1e-3,
42
+ C=1.0,
43
+ nu=0.5,
44
+ shrinking=True,
45
+ cache_size=200,
46
+ verbose=False,
47
+ max_iter=-1,
48
+ ):
36
49
  super().__init__(
37
- kernel=kernel, degree=degree, gamma=gamma, coef0=coef0, tol=tol, C=C, nu=nu,
38
- shrinking=shrinking, cache_size=cache_size, verbose=verbose,
39
- max_iter=max_iter)
50
+ kernel=kernel,
51
+ degree=degree,
52
+ gamma=gamma,
53
+ coef0=coef0,
54
+ tol=tol,
55
+ C=C,
56
+ nu=nu,
57
+ shrinking=shrinking,
58
+ cache_size=cache_size,
59
+ verbose=verbose,
60
+ max_iter=max_iter,
61
+ )
40
62
 
41
63
  def fit(self, X, y, sample_weight=None):
42
64
  """
@@ -76,10 +98,17 @@ class NuSVR(sklearn_NuSVR, BaseSVR):
76
98
  self._validate_params()
77
99
  if sklearn_check_version("1.0"):
78
100
  self._check_feature_names(X, reset=True)
79
- dispatch(self, 'fit', {
80
- 'onedal': self.__class__._onedal_fit,
81
- 'sklearn': sklearn_NuSVR.fit,
82
- }, X, y, sample_weight)
101
+ dispatch(
102
+ self,
103
+ "fit",
104
+ {
105
+ "onedal": self.__class__._onedal_fit,
106
+ "sklearn": sklearn_NuSVR.fit,
107
+ },
108
+ X,
109
+ y,
110
+ sample_weight,
111
+ )
83
112
  return self
84
113
 
85
114
  @wrap_output_data
@@ -102,23 +131,28 @@ class NuSVR(sklearn_NuSVR, BaseSVR):
102
131
  """
103
132
  if sklearn_check_version("1.0"):
104
133
  self._check_feature_names(X, reset=False)
105
- return dispatch(self, 'predict', {
106
- 'onedal': self.__class__._onedal_predict,
107
- 'sklearn': sklearn_NuSVR.predict,
108
- }, X)
134
+ return dispatch(
135
+ self,
136
+ "predict",
137
+ {
138
+ "onedal": self.__class__._onedal_predict,
139
+ "sklearn": sklearn_NuSVR.predict,
140
+ },
141
+ X,
142
+ )
109
143
 
110
144
  def _onedal_fit(self, X, y, sample_weight=None, queue=None):
111
145
  onedal_params = {
112
- 'C': self.C,
113
- 'nu': self.nu,
114
- 'kernel': self.kernel,
115
- 'degree': self.degree,
116
- 'gamma': self.gamma,
117
- 'coef0': self.coef0,
118
- 'tol': self.tol,
119
- 'shrinking': self.shrinking,
120
- 'cache_size': self.cache_size,
121
- 'max_iter': self.max_iter,
146
+ "C": self.C,
147
+ "nu": self.nu,
148
+ "kernel": self.kernel,
149
+ "degree": self.degree,
150
+ "gamma": self.gamma,
151
+ "coef0": self.coef0,
152
+ "tol": self.tol,
153
+ "shrinking": self.shrinking,
154
+ "cache_size": self.cache_size,
155
+ "max_iter": self.max_iter,
122
156
  }
123
157
 
124
158
  self._onedal_estimator = onedal_NuSVR(**onedal_params)
@@ -1,4 +1,4 @@
1
- #===============================================================================
1
+ # ==============================================================================
2
2
  # Copyright 2021 Intel Corporation
3
3
  #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -12,19 +12,21 @@
12
12
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
- #===============================================================================
15
+ # ==============================================================================
16
16
 
17
17
  import numpy as np
18
18
  from scipy import sparse as sp
19
+ from sklearn.exceptions import NotFittedError
20
+ from sklearn.svm import SVC as sklearn_SVC
21
+ from sklearn.utils.validation import _deprecate_positional_args
22
+
23
+ from daal4py.sklearn._utils import sklearn_check_version
19
24
 
20
- from daal4py.sklearn._utils import sklearn_check_version, PatchingConditionsChain
21
- from ._common import BaseSVC
22
25
  from .._device_offload import dispatch, wrap_output_data
26
+ from .._utils import PatchingConditionsChain
27
+ from ._common import BaseSVC
23
28
 
24
- from sklearn.svm import SVC as sklearn_SVC
25
- from sklearn.utils.validation import _deprecate_positional_args
26
- from sklearn.exceptions import NotFittedError
27
- if sklearn_check_version('1.0'):
29
+ if sklearn_check_version("1.0"):
28
30
  from sklearn.utils.metaestimators import available_if
29
31
 
30
32
  from onedal.svm import SVC as onedal_SVC
@@ -33,21 +35,46 @@ from onedal.svm import SVC as onedal_SVC
33
35
  class SVC(sklearn_SVC, BaseSVC):
34
36
  __doc__ = sklearn_SVC.__doc__
35
37
 
36
- if sklearn_check_version('1.2'):
38
+ if sklearn_check_version("1.2"):
37
39
  _parameter_constraints: dict = {**sklearn_SVC._parameter_constraints}
38
40
 
39
41
  @_deprecate_positional_args
40
- def __init__(self, *, C=1.0, kernel='rbf', degree=3, gamma='scale',
41
- coef0=0.0, shrinking=True, probability=False,
42
- tol=1e-3, cache_size=200, class_weight=None,
43
- verbose=False, max_iter=-1, decision_function_shape='ovr',
44
- break_ties=False, random_state=None):
42
+ def __init__(
43
+ self,
44
+ *,
45
+ C=1.0,
46
+ kernel="rbf",
47
+ degree=3,
48
+ gamma="scale",
49
+ coef0=0.0,
50
+ shrinking=True,
51
+ probability=False,
52
+ tol=1e-3,
53
+ cache_size=200,
54
+ class_weight=None,
55
+ verbose=False,
56
+ max_iter=-1,
57
+ decision_function_shape="ovr",
58
+ break_ties=False,
59
+ random_state=None,
60
+ ):
45
61
  super().__init__(
46
- C=C, kernel=kernel, degree=degree, gamma=gamma, coef0=coef0,
47
- shrinking=shrinking, probability=probability, tol=tol, cache_size=cache_size,
48
- class_weight=class_weight, verbose=verbose, max_iter=max_iter,
49
- decision_function_shape=decision_function_shape, break_ties=break_ties,
50
- random_state=random_state)
62
+ C=C,
63
+ kernel=kernel,
64
+ degree=degree,
65
+ gamma=gamma,
66
+ coef0=coef0,
67
+ shrinking=shrinking,
68
+ probability=probability,
69
+ tol=tol,
70
+ cache_size=cache_size,
71
+ class_weight=class_weight,
72
+ verbose=verbose,
73
+ max_iter=max_iter,
74
+ decision_function_shape=decision_function_shape,
75
+ break_ties=break_ties,
76
+ random_state=random_state,
77
+ )
51
78
 
52
79
  def fit(self, X, y, sample_weight=None):
53
80
  """
@@ -87,10 +114,17 @@ class SVC(sklearn_SVC, BaseSVC):
87
114
  self._validate_params()
88
115
  if sklearn_check_version("1.0"):
89
116
  self._check_feature_names(X, reset=True)
90
- dispatch(self, 'fit', {
91
- 'onedal': self.__class__._onedal_fit,
92
- 'sklearn': sklearn_SVC.fit,
93
- }, X, y, sample_weight)
117
+ dispatch(
118
+ self,
119
+ "fit",
120
+ {
121
+ "onedal": self.__class__._onedal_fit,
122
+ "sklearn": sklearn_SVC.fit,
123
+ },
124
+ X,
125
+ y,
126
+ sample_weight,
127
+ )
94
128
  return self
95
129
 
96
130
  @wrap_output_data
@@ -113,12 +147,18 @@ class SVC(sklearn_SVC, BaseSVC):
113
147
  """
114
148
  if sklearn_check_version("1.0"):
115
149
  self._check_feature_names(X, reset=False)
116
- return dispatch(self, 'predict', {
117
- 'onedal': self.__class__._onedal_predict,
118
- 'sklearn': sklearn_SVC.predict,
119
- }, X)
150
+ return dispatch(
151
+ self,
152
+ "predict",
153
+ {
154
+ "onedal": self.__class__._onedal_predict,
155
+ "sklearn": sklearn_SVC.predict,
156
+ },
157
+ X,
158
+ )
159
+
160
+ if sklearn_check_version("1.0"):
120
161
 
121
- if sklearn_check_version('1.0'):
122
162
  @available_if(sklearn_SVC._check_proba)
123
163
  def predict_proba(self, X):
124
164
  """
@@ -148,7 +188,9 @@ class SVC(sklearn_SVC, BaseSVC):
148
188
  datasets.
149
189
  """
150
190
  return self._predict_proba(X)
191
+
151
192
  else:
193
+
152
194
  @property
153
195
  def predict_proba(self):
154
196
  self._check_proba()
@@ -156,64 +198,79 @@ class SVC(sklearn_SVC, BaseSVC):
156
198
 
157
199
  @wrap_output_data
158
200
  def _predict_proba(self, X):
159
- sklearn_pred_proba = (sklearn_SVC.predict_proba
160
- if sklearn_check_version("1.0")
161
- else sklearn_SVC._predict_proba)
162
-
163
- return dispatch(self, 'predict_proba', {
164
- 'onedal': self.__class__._onedal_predict_proba,
165
- 'sklearn': sklearn_pred_proba,
166
- }, X)
201
+ sklearn_pred_proba = (
202
+ sklearn_SVC.predict_proba
203
+ if sklearn_check_version("1.0")
204
+ else sklearn_SVC._predict_proba
205
+ )
206
+
207
+ return dispatch(
208
+ self,
209
+ "predict_proba",
210
+ {
211
+ "onedal": self.__class__._onedal_predict_proba,
212
+ "sklearn": sklearn_pred_proba,
213
+ },
214
+ X,
215
+ )
167
216
 
168
217
  @wrap_output_data
169
218
  def decision_function(self, X):
170
219
  if sklearn_check_version("1.0"):
171
220
  self._check_feature_names(X, reset=False)
172
- return dispatch(self, 'decision_function', {
173
- 'onedal': self.__class__._onedal_decision_function,
174
- 'sklearn': sklearn_SVC.decision_function,
175
- }, X)
221
+ return dispatch(
222
+ self,
223
+ "decision_function",
224
+ {
225
+ "onedal": self.__class__._onedal_decision_function,
226
+ "sklearn": sklearn_SVC.decision_function,
227
+ },
228
+ X,
229
+ )
176
230
 
177
231
  def _onedal_gpu_supported(self, method_name, *data):
178
232
  class_name = self.__class__.__name__
179
233
  patching_status = PatchingConditionsChain(
180
- f'sklearn.svm.{class_name}.{method_name}')
181
- if method_name == 'fit':
182
- if len(data) > 1:
183
- self._class_count = len(np.unique(data[1]))
184
- self._is_sparse = sp.isspmatrix(data[0])
185
- patching_status.and_conditions([
186
- (self.kernel in ['linear', 'rbf'],
187
- f'Kernel is "{self.kernel}" while '
188
- '"linear" and "rbf" are only supported on GPU.'),
189
- (self.class_weight is None, 'Class weight is not supported on GPU.'),
190
- (self._class_count == 2, 'Multiclassification is not supported on GPU.'),
191
- (not self._is_sparse, 'Sparse input is not supported on GPU.')
192
- ])
193
- return patching_status.get_status(logs=True)
194
- if method_name in ['predict', 'predict_proba', 'decision_function']:
195
- patching_status.and_conditions([
196
- (hasattr(self, '_onedal_estimator') and self._onedal_gpu_supported(
197
- 'fit', *data),
198
- 'oneDAL model was not trained on GPU.')
199
- ])
200
- return patching_status.get_status(logs=True)
201
- raise RuntimeError(f'Unknown method {method_name} in {class_name}')
234
+ f"sklearn.svm.{class_name}.{method_name}"
235
+ )
236
+ if len(data) > 1:
237
+ self._class_count = len(np.unique(data[1]))
238
+ self._is_sparse = sp.isspmatrix(data[0])
239
+ conditions = [
240
+ (
241
+ self.kernel in ["linear", "rbf"],
242
+ f'Kernel is "{self.kernel}" while '
243
+ '"linear" and "rbf" are only supported on GPU.',
244
+ ),
245
+ (self.class_weight is None, "Class weight is not supported on GPU."),
246
+ (not self._is_sparse, "Sparse input is not supported on GPU."),
247
+ (self._class_count == 2, "Multiclassification is not supported on GPU."),
248
+ ]
249
+ if method_name == "fit":
250
+ patching_status.and_conditions(conditions)
251
+ return patching_status
252
+ if method_name in ["predict", "predict_proba", "decision_function"]:
253
+ conditions.append(
254
+ (hasattr(self, "_onedal_estimator"), "oneDAL model was not trained")
255
+ )
256
+ patching_status.and_conditions(conditions)
257
+ return patching_status
258
+ raise RuntimeError(f"Unknown method {method_name} in {class_name}")
202
259
 
203
260
  def _onedal_fit(self, X, y, sample_weight=None, queue=None):
204
261
  onedal_params = {
205
- 'C': self.C,
206
- 'kernel': self.kernel,
207
- 'degree': self.degree,
208
- 'gamma': self.gamma,
209
- 'coef0': self.coef0,
210
- 'tol': self.tol,
211
- 'shrinking': self.shrinking,
212
- 'cache_size': self.cache_size,
213
- 'max_iter': self.max_iter,
214
- 'class_weight': self.class_weight,
215
- 'break_ties': self.break_ties,
216
- 'decision_function_shape': self.decision_function_shape,
262
+ "C": self.C,
263
+ "kernel": self.kernel,
264
+ "degree": self.degree,
265
+ "gamma": self.gamma,
266
+ "coef0": self.coef0,
267
+ "tol": self.tol,
268
+ "shrinking": self.shrinking,
269
+ "cache_size": self.cache_size,
270
+ "max_iter": self.max_iter,
271
+ "class_weight": self.class_weight,
272
+ "break_ties": self.break_ties,
273
+ "decision_function_shape": self.decision_function_shape,
217
274
  }
218
275
 
219
276
  self._onedal_estimator = onedal_SVC(**onedal_params)
@@ -227,15 +284,16 @@ class SVC(sklearn_SVC, BaseSVC):
227
284
  return self._onedal_estimator.predict(X, queue=queue)
228
285
 
229
286
  def _onedal_predict_proba(self, X, queue=None):
230
- if getattr(self, 'clf_prob', None) is None:
287
+ if getattr(self, "clf_prob", None) is None:
231
288
  raise NotFittedError(
232
- "predict_proba is not available when fitted with probability=False")
233
- from .._config import get_config, config_context
289
+ "predict_proba is not available when fitted with probability=False"
290
+ )
291
+ from .._config import config_context, get_config
234
292
 
235
293
  # We use stock metaestimators below, so the only way
236
294
  # to pass a queue is using config_context.
237
295
  cfg = get_config()
238
- cfg['target_offload'] = queue
296
+ cfg["target_offload"] = queue
239
297
  with config_context(**cfg):
240
298
  return self.clf_prob.predict_proba(X)
241
299
 
@@ -1,4 +1,4 @@
1
- #===============================================================================
1
+ # ==============================================================================
2
2
  # Copyright 2021 Intel Corporation
3
3
  #
4
4
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -12,31 +12,53 @@
12
12
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
- #===============================================================================
16
-
17
- from daal4py.sklearn._utils import sklearn_check_version
18
- from ._common import BaseSVR
19
- from .._device_offload import dispatch, wrap_output_data
15
+ # ==============================================================================
20
16
 
21
17
  from sklearn.svm import SVR as sklearn_SVR
22
18
  from sklearn.utils.validation import _deprecate_positional_args
19
+
20
+ from daal4py.sklearn._utils import sklearn_check_version
23
21
  from onedal.svm import SVR as onedal_SVR
24
22
 
23
+ from .._device_offload import dispatch, wrap_output_data
24
+ from ._common import BaseSVR
25
+
25
26
 
26
27
  class SVR(sklearn_SVR, BaseSVR):
27
28
  __doc__ = sklearn_SVR.__doc__
28
29
 
29
- if sklearn_check_version('1.2'):
30
+ if sklearn_check_version("1.2"):
30
31
  _parameter_constraints: dict = {**sklearn_SVR._parameter_constraints}
31
32
 
32
33
  @_deprecate_positional_args
33
- def __init__(self, *, kernel='rbf', degree=3, gamma='scale',
34
- coef0=0.0, tol=1e-3, C=1.0, epsilon=0.1, shrinking=True,
35
- cache_size=200, verbose=False, max_iter=-1):
34
+ def __init__(
35
+ self,
36
+ *,
37
+ kernel="rbf",
38
+ degree=3,
39
+ gamma="scale",
40
+ coef0=0.0,
41
+ tol=1e-3,
42
+ C=1.0,
43
+ epsilon=0.1,
44
+ shrinking=True,
45
+ cache_size=200,
46
+ verbose=False,
47
+ max_iter=-1,
48
+ ):
36
49
  super().__init__(
37
- kernel=kernel, degree=degree, gamma=gamma, coef0=coef0, tol=tol, C=C,
38
- epsilon=epsilon, shrinking=shrinking, cache_size=cache_size, verbose=verbose,
39
- max_iter=max_iter)
50
+ kernel=kernel,
51
+ degree=degree,
52
+ gamma=gamma,
53
+ coef0=coef0,
54
+ tol=tol,
55
+ C=C,
56
+ epsilon=epsilon,
57
+ shrinking=shrinking,
58
+ cache_size=cache_size,
59
+ verbose=verbose,
60
+ max_iter=max_iter,
61
+ )
40
62
 
41
63
  def fit(self, X, y, sample_weight=None):
42
64
  """
@@ -76,10 +98,17 @@ class SVR(sklearn_SVR, BaseSVR):
76
98
  self._validate_params()
77
99
  if sklearn_check_version("1.0"):
78
100
  self._check_feature_names(X, reset=True)
79
- dispatch(self, 'fit', {
80
- 'onedal': self.__class__._onedal_fit,
81
- 'sklearn': sklearn_SVR.fit,
82
- }, X, y, sample_weight)
101
+ dispatch(
102
+ self,
103
+ "fit",
104
+ {
105
+ "onedal": self.__class__._onedal_fit,
106
+ "sklearn": sklearn_SVR.fit,
107
+ },
108
+ X,
109
+ y,
110
+ sample_weight,
111
+ )
83
112
 
84
113
  return self
85
114
 
@@ -103,23 +132,28 @@ class SVR(sklearn_SVR, BaseSVR):
103
132
  """
104
133
  if sklearn_check_version("1.0"):
105
134
  self._check_feature_names(X, reset=False)
106
- return dispatch(self, 'predict', {
107
- 'onedal': self.__class__._onedal_predict,
108
- 'sklearn': sklearn_SVR.predict,
109
- }, X)
135
+ return dispatch(
136
+ self,
137
+ "predict",
138
+ {
139
+ "onedal": self.__class__._onedal_predict,
140
+ "sklearn": sklearn_SVR.predict,
141
+ },
142
+ X,
143
+ )
110
144
 
111
145
  def _onedal_fit(self, X, y, sample_weight=None, queue=None):
112
146
  onedal_params = {
113
- 'C': self.C,
114
- 'epsilon': self.epsilon,
115
- 'kernel': self.kernel,
116
- 'degree': self.degree,
117
- 'gamma': self.gamma,
118
- 'coef0': self.coef0,
119
- 'tol': self.tol,
120
- 'shrinking': self.shrinking,
121
- 'cache_size': self.cache_size,
122
- 'max_iter': self.max_iter,
147
+ "C": self.C,
148
+ "epsilon": self.epsilon,
149
+ "kernel": self.kernel,
150
+ "degree": self.degree,
151
+ "gamma": self.gamma,
152
+ "coef0": self.coef0,
153
+ "tol": self.tol,
154
+ "shrinking": self.shrinking,
155
+ "cache_size": self.cache_size,
156
+ "max_iter": self.max_iter,
123
157
  }
124
158
 
125
159
  self._onedal_estimator = onedal_SVR(**onedal_params)
@@ -0,0 +1,102 @@
1
+ #!/usr/bin/env python
2
+ # ===============================================================================
3
+ # Copyright 2021 Intel Corporation
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ # ===============================================================================
17
+
18
+ import numpy as np
19
+ import pytest
20
+ from numpy.testing import assert_allclose
21
+
22
+ from onedal.tests.utils._dataframes_support import (
23
+ _as_numpy,
24
+ _convert_to_dataframe,
25
+ get_dataframes_and_queues,
26
+ )
27
+
28
+
29
+ # TODO:
30
+ # investigate failure for `dpnp.ndarrays` and `dpctl.tensors` on `GPU`
31
+ @pytest.mark.parametrize(
32
+ "dataframe,queue", get_dataframes_and_queues(device_filter_="cpu")
33
+ )
34
+ def test_sklearnex_import_svc(dataframe, queue):
35
+ from sklearnex.svm import SVC
36
+
37
+ X = np.array([[-2, -1], [-1, -1], [-1, -2], [+1, +1], [+1, +2], [+2, +1]])
38
+ y = np.array([1, 1, 1, 2, 2, 2])
39
+ X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
40
+ y = _convert_to_dataframe(y, sycl_queue=queue, target_df=dataframe)
41
+ svc = SVC(kernel="linear").fit(X, y)
42
+ assert "daal4py" in svc.__module__ or "sklearnex" in svc.__module__
43
+ assert_allclose(_as_numpy(svc.dual_coef_), [[-0.25, 0.25]])
44
+ assert_allclose(_as_numpy(svc.support_), [1, 3])
45
+
46
+
47
+ # TODO:
48
+ # investigate failure for `dpnp.ndarrays` and `dpctl.tensors` on `GPU`
49
+ @pytest.mark.parametrize(
50
+ "dataframe,queue", get_dataframes_and_queues(device_filter_="cpu")
51
+ )
52
+ def test_sklearnex_import_nusvc(dataframe, queue):
53
+ from sklearnex.svm import NuSVC
54
+
55
+ X = np.array([[-2, -1], [-1, -1], [-1, -2], [+1, +1], [+1, +2], [+2, +1]])
56
+ y = np.array([1, 1, 1, 2, 2, 2])
57
+ X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
58
+ y = _convert_to_dataframe(y, sycl_queue=queue, target_df=dataframe)
59
+ svc = NuSVC(kernel="linear").fit(X, y)
60
+ assert "daal4py" in svc.__module__ or "sklearnex" in svc.__module__
61
+ assert_allclose(
62
+ _as_numpy(svc.dual_coef_), [[-0.04761905, -0.0952381, 0.0952381, 0.04761905]]
63
+ )
64
+ assert_allclose(_as_numpy(svc.support_), [0, 1, 3, 4])
65
+
66
+
67
+ # TODO:
68
+ # investigate failure for `dpnp.ndarrays` and `dpctl.tensors` on `GPU`
69
+ @pytest.mark.parametrize(
70
+ "dataframe,queue", get_dataframes_and_queues(device_filter_="cpu")
71
+ )
72
+ def test_sklearnex_import_svr(dataframe, queue):
73
+ from sklearnex.svm import SVR
74
+
75
+ X = np.array([[-2, -1], [-1, -1], [-1, -2], [+1, +1], [+1, +2], [+2, +1]])
76
+ y = np.array([1, 1, 1, 2, 2, 2])
77
+ X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
78
+ y = _convert_to_dataframe(y, sycl_queue=queue, target_df=dataframe)
79
+ svc = SVR(kernel="linear").fit(X, y)
80
+ assert "daal4py" in svc.__module__ or "sklearnex" in svc.__module__
81
+ assert_allclose(_as_numpy(svc.dual_coef_), [[-0.1, 0.1]])
82
+ assert_allclose(_as_numpy(svc.support_), [1, 3])
83
+
84
+
85
+ # TODO:
86
+ # investigate failure for `dpnp.ndarrays` and `dpctl.tensors` on `GPU`
87
+ @pytest.mark.parametrize(
88
+ "dataframe,queue", get_dataframes_and_queues(device_filter_="cpu")
89
+ )
90
+ def test_sklearnex_import_nusvr(dataframe, queue):
91
+ from sklearnex.svm import NuSVR
92
+
93
+ X = np.array([[-2, -1], [-1, -1], [-1, -2], [+1, +1], [+1, +2], [+2, +1]])
94
+ y = np.array([1, 1, 1, 2, 2, 2])
95
+ X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
96
+ y = _convert_to_dataframe(y, sycl_queue=queue, target_df=dataframe)
97
+ svc = NuSVR(kernel="linear", nu=0.9).fit(X, y)
98
+ assert "daal4py" in svc.__module__ or "sklearnex" in svc.__module__
99
+ assert_allclose(
100
+ _as_numpy(svc.dual_coef_), [[-1.0, 0.611111, 1.0, -0.611111]], rtol=1e-3
101
+ )
102
+ assert_allclose(_as_numpy(svc.support_), [1, 2, 3, 5])