scikit-learn-intelex 2024.2.0__py312-none-win_amd64.whl → 2024.4.0__py312-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.
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
@@ -17,11 +17,13 @@
17
17
  import numpy as np
18
18
  from scipy import sparse as sp
19
19
  from sklearn.exceptions import NotFittedError
20
+ from sklearn.metrics import accuracy_score
20
21
  from sklearn.svm import SVC as sklearn_SVC
21
22
  from sklearn.utils.validation import _deprecate_positional_args
22
23
 
23
24
  from daal4py.sklearn._n_jobs_support import control_n_jobs
24
25
  from daal4py.sklearn._utils import sklearn_check_version
26
+ from sklearnex.utils import get_namespace
25
27
 
26
28
  from .._device_offload import dispatch, wrap_output_data
27
29
  from .._utils import PatchingConditionsChain
@@ -34,7 +36,7 @@ from onedal.svm import SVC as onedal_SVC
34
36
 
35
37
 
36
38
  @control_n_jobs(
37
- decorated_methods=["fit", "predict", "_predict_proba", "decision_function"]
39
+ decorated_methods=["fit", "predict", "_predict_proba", "decision_function", "score"]
38
40
  )
39
41
  class SVC(sklearn_SVC, BaseSVC):
40
42
  __doc__ = sklearn_SVC.__doc__
@@ -81,39 +83,6 @@ class SVC(sklearn_SVC, BaseSVC):
81
83
  )
82
84
 
83
85
  def fit(self, X, y, sample_weight=None):
84
- """
85
- Fit the SVM model according to the given training data.
86
-
87
- Parameters
88
- ----------
89
- X : {array-like, sparse matrix} of shape (n_samples, n_features) \
90
- or (n_samples, n_samples)
91
- Training vectors, where `n_samples` is the number of samples
92
- and `n_features` is the number of features.
93
- For kernel="precomputed", the expected shape of X is
94
- (n_samples, n_samples).
95
-
96
- y : array-like of shape (n_samples,)
97
- Target values (class labels in classification, real numbers in
98
- regression).
99
-
100
- sample_weight : array-like of shape (n_samples,), default=None
101
- Per-sample weights. Rescale C per sample. Higher weights
102
- force the classifier to put more emphasis on these points.
103
-
104
- Returns
105
- -------
106
- self : object
107
- Fitted estimator.
108
-
109
- Notes
110
- -----
111
- If X and y are not C-ordered and contiguous arrays of np.float64 and
112
- X is not a scipy.sparse.csr_matrix, X and/or y may be copied.
113
-
114
- If X is a dense array, then the other methods will not support sparse
115
- matrices as input.
116
- """
117
86
  if sklearn_check_version("1.2"):
118
87
  self._validate_params()
119
88
  if sklearn_check_version("1.0"):
@@ -133,22 +102,6 @@ class SVC(sklearn_SVC, BaseSVC):
133
102
 
134
103
  @wrap_output_data
135
104
  def predict(self, X):
136
- """
137
- Perform regression on samples in X.
138
-
139
- For an one-class model, +1 (inlier) or -1 (outlier) is returned.
140
-
141
- Parameters
142
- ----------
143
- X : {array-like, sparse matrix} of shape (n_samples, n_features)
144
- For kernel="precomputed", the expected shape of X is
145
- (n_samples_test, n_samples_train).
146
-
147
- Returns
148
- -------
149
- y_pred : ndarray of shape (n_samples,)
150
- The predicted values.
151
- """
152
105
  if sklearn_check_version("1.0"):
153
106
  self._check_feature_names(X, reset=False)
154
107
  return dispatch(
@@ -161,6 +114,22 @@ class SVC(sklearn_SVC, BaseSVC):
161
114
  X,
162
115
  )
163
116
 
117
+ @wrap_output_data
118
+ def score(self, X, y, sample_weight=None):
119
+ if sklearn_check_version("1.0"):
120
+ self._check_feature_names(X, reset=False)
121
+ return dispatch(
122
+ self,
123
+ "score",
124
+ {
125
+ "onedal": self.__class__._onedal_score,
126
+ "sklearn": sklearn_SVC.score,
127
+ },
128
+ X,
129
+ y,
130
+ sample_weight=sample_weight,
131
+ )
132
+
164
133
  if sklearn_check_version("1.0"):
165
134
 
166
135
  @available_if(sklearn_SVC._check_proba)
@@ -193,6 +162,38 @@ class SVC(sklearn_SVC, BaseSVC):
193
162
  """
194
163
  return self._predict_proba(X)
195
164
 
165
+ @available_if(sklearn_SVC._check_proba)
166
+ def predict_log_proba(self, X):
167
+ """Compute log probabilities of possible outcomes for samples in X.
168
+
169
+ The model need to have probability information computed at training
170
+ time: fit with attribute `probability` set to True.
171
+
172
+ Parameters
173
+ ----------
174
+ X : array-like of shape (n_samples, n_features) or \
175
+ (n_samples_test, n_samples_train)
176
+ For kernel="precomputed", the expected shape of X is
177
+ (n_samples_test, n_samples_train).
178
+
179
+ Returns
180
+ -------
181
+ T : ndarray of shape (n_samples, n_classes)
182
+ Returns the log-probabilities of the sample for each class in
183
+ the model. The columns correspond to the classes in sorted
184
+ order, as they appear in the attribute :term:`classes_`.
185
+
186
+ Notes
187
+ -----
188
+ The probability model is created using cross validation, so
189
+ the results can be slightly different than those obtained by
190
+ predict. Also, it will produce meaningless results on very small
191
+ datasets.
192
+ """
193
+ xp, _ = get_namespace(X)
194
+
195
+ return xp.log(self.predict_proba(X))
196
+
196
197
  else:
197
198
 
198
199
  @property
@@ -200,6 +201,12 @@ class SVC(sklearn_SVC, BaseSVC):
200
201
  self._check_proba()
201
202
  return self._predict_proba
202
203
 
204
+ def _predict_log_proba(self, X):
205
+ xp, _ = get_namespace(X)
206
+ return xp.log(self.predict_proba(X))
207
+
208
+ predict_proba.__doc__ = sklearn_SVC.predict_proba.__doc__
209
+
203
210
  @wrap_output_data
204
211
  def _predict_proba(self, X):
205
212
  sklearn_pred_proba = (
@@ -232,6 +239,8 @@ class SVC(sklearn_SVC, BaseSVC):
232
239
  X,
233
240
  )
234
241
 
242
+ decision_function.__doc__ = sklearn_SVC.decision_function.__doc__
243
+
235
244
  def _onedal_gpu_supported(self, method_name, *data):
236
245
  class_name = self.__class__.__name__
237
246
  patching_status = PatchingConditionsChain(
@@ -253,7 +262,7 @@ class SVC(sklearn_SVC, BaseSVC):
253
262
  if method_name == "fit":
254
263
  patching_status.and_conditions(conditions)
255
264
  return patching_status
256
- if method_name in ["predict", "predict_proba", "decision_function"]:
265
+ if method_name in ["predict", "predict_proba", "decision_function", "score"]:
257
266
  conditions.append(
258
267
  (hasattr(self, "_onedal_estimator"), "oneDAL model was not trained")
259
268
  )
@@ -303,3 +312,13 @@ class SVC(sklearn_SVC, BaseSVC):
303
312
 
304
313
  def _onedal_decision_function(self, X, queue=None):
305
314
  return self._onedal_estimator.decision_function(X, queue=queue)
315
+
316
+ def _onedal_score(self, X, y, sample_weight=None, queue=None):
317
+ return accuracy_score(
318
+ y, self._onedal_predict(X, queue=queue), sample_weight=sample_weight
319
+ )
320
+
321
+ fit.__doc__ = sklearn_SVC.fit.__doc__
322
+ predict.__doc__ = sklearn_SVC.predict.__doc__
323
+ decision_function.__doc__ = sklearn_SVC.decision_function.__doc__
324
+ score.__doc__ = sklearn_SVC.score.__doc__
@@ -63,39 +63,6 @@ class SVR(sklearn_SVR, BaseSVR):
63
63
  )
64
64
 
65
65
  def fit(self, X, y, sample_weight=None):
66
- """
67
- Fit the SVM model according to the given training data.
68
-
69
- Parameters
70
- ----------
71
- X : {array-like, sparse matrix} of shape (n_samples, n_features) \
72
- or (n_samples, n_samples)
73
- Training vectors, where `n_samples` is the number of samples
74
- and `n_features` is the number of features.
75
- For kernel="precomputed", the expected shape of X is
76
- (n_samples, n_samples).
77
-
78
- y : array-like of shape (n_samples,)
79
- Target values (class labels in classification, real numbers in
80
- regression).
81
-
82
- sample_weight : array-like of shape (n_samples,), default=None
83
- Per-sample weights. Rescale C per sample. Higher weights
84
- force the classifier to put more emphasis on these points.
85
-
86
- Returns
87
- -------
88
- self : object
89
- Fitted estimator.
90
-
91
- Notes
92
- -----
93
- If X and y are not C-ordered and contiguous arrays of np.float64 and
94
- X is not a scipy.sparse.csr_matrix, X and/or y may be copied.
95
-
96
- If X is a dense array, then the other methods will not support sparse
97
- matrices as input.
98
- """
99
66
  if sklearn_check_version("1.2"):
100
67
  self._validate_params()
101
68
  if sklearn_check_version("1.0"):
@@ -116,22 +83,6 @@ class SVR(sklearn_SVR, BaseSVR):
116
83
 
117
84
  @wrap_output_data
118
85
  def predict(self, X):
119
- """
120
- Perform regression on samples in X.
121
-
122
- For an one-class model, +1 (inlier) or -1 (outlier) is returned.
123
-
124
- Parameters
125
- ----------
126
- X : {array-like, sparse matrix} of shape (n_samples, n_features)
127
- For kernel="precomputed", the expected shape of X is
128
- (n_samples_test, n_samples_train).
129
-
130
- Returns
131
- -------
132
- y_pred : ndarray of shape (n_samples,)
133
- The predicted values.
134
- """
135
86
  if sklearn_check_version("1.0"):
136
87
  self._check_feature_names(X, reset=False)
137
88
  return dispatch(
@@ -164,3 +115,6 @@ class SVR(sklearn_SVR, BaseSVR):
164
115
 
165
116
  def _onedal_predict(self, X, queue=None):
166
117
  return self._onedal_estimator.predict(X, queue=queue)
118
+
119
+ fit.__doc__ = sklearn_SVR.fit.__doc__
120
+ predict.__doc__ = sklearn_SVR.predict.__doc__
@@ -0,0 +1,164 @@
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 inspect import isclass
18
+
19
+ import numpy as np
20
+ from sklearn.base import (
21
+ BaseEstimator,
22
+ ClassifierMixin,
23
+ ClusterMixin,
24
+ OutlierMixin,
25
+ RegressorMixin,
26
+ TransformerMixin,
27
+ )
28
+ from sklearn.datasets import load_diabetes, load_iris
29
+ from sklearn.neighbors._base import KNeighborsMixin
30
+
31
+ from onedal.tests.utils._dataframes_support import _convert_to_dataframe
32
+ from sklearnex import get_patch_map, patch_sklearn, sklearn_is_patched, unpatch_sklearn
33
+ from sklearnex.linear_model import LogisticRegression
34
+ from sklearnex.neighbors import (
35
+ KNeighborsClassifier,
36
+ KNeighborsRegressor,
37
+ LocalOutlierFactor,
38
+ NearestNeighbors,
39
+ )
40
+ from sklearnex.svm import SVC, NuSVC
41
+
42
+
43
+ def _load_all_models(with_sklearnex=True, estimator=True):
44
+ # insure that patch state is correct as dictated by patch_sklearn boolean
45
+ # and return it to the previous state no matter what occurs.
46
+ already_patched_map = sklearn_is_patched(return_map=True)
47
+ already_patched = any(already_patched_map.values())
48
+ try:
49
+ if with_sklearnex:
50
+ patch_sklearn()
51
+ elif already_patched:
52
+ unpatch_sklearn()
53
+
54
+ models = {}
55
+ for patch_infos in get_patch_map().values():
56
+ candidate = getattr(patch_infos[0][0][0], patch_infos[0][0][1], None)
57
+ if candidate is not None and isclass(candidate) == estimator:
58
+ if not estimator or issubclass(candidate, BaseEstimator):
59
+ models[patch_infos[0][0][1]] = candidate
60
+ finally:
61
+ if with_sklearnex:
62
+ unpatch_sklearn()
63
+ # both branches are now in an unpatched state, repatch as necessary
64
+ if already_patched:
65
+ patch_sklearn(name=[i for i in already_patched_map if already_patched_map[i]])
66
+
67
+ return models
68
+
69
+
70
+ PATCHED_MODELS = _load_all_models(with_sklearnex=True)
71
+ UNPATCHED_MODELS = _load_all_models(with_sklearnex=False)
72
+
73
+ PATCHED_FUNCTIONS = _load_all_models(with_sklearnex=True, estimator=False)
74
+ UNPATCHED_FUNCTIONS = _load_all_models(with_sklearnex=False, estimator=False)
75
+
76
+ mixin_map = [
77
+ [
78
+ ClassifierMixin,
79
+ ["decision_function", "predict", "predict_proba", "predict_log_proba", "score"],
80
+ "classification",
81
+ ],
82
+ [RegressorMixin, ["predict", "score"], "regression"],
83
+ [ClusterMixin, ["fit_predict"], "classification"],
84
+ [TransformerMixin, ["fit_transform", "transform", "score"], "classification"],
85
+ [OutlierMixin, ["fit_predict", "predict"], "classification"],
86
+ [KNeighborsMixin, ["kneighbors"], None],
87
+ ]
88
+
89
+
90
+ SPECIAL_INSTANCES = {
91
+ str(i): i
92
+ for i in [
93
+ LocalOutlierFactor(novelty=True),
94
+ SVC(probability=True),
95
+ NuSVC(probability=True),
96
+ KNeighborsClassifier(algorithm="brute"),
97
+ KNeighborsRegressor(algorithm="brute"),
98
+ NearestNeighbors(algorithm="brute"),
99
+ LogisticRegression(solver="newton-cg"),
100
+ ]
101
+ }
102
+
103
+
104
+ def gen_models_info(algorithms):
105
+ output = []
106
+ for i in algorithms:
107
+
108
+ if i in PATCHED_MODELS:
109
+ est = PATCHED_MODELS[i]
110
+ elif i in SPECIAL_INSTANCES:
111
+ est = SPECIAL_INSTANCES[i].__class__
112
+ else:
113
+ raise KeyError(f"Unrecognized sklearnex estimator: {i}")
114
+
115
+ methods = set()
116
+ candidates = set(
117
+ [i for i in dir(est) if not i.startswith("_") and not i.endswith("_")]
118
+ )
119
+
120
+ for mixin, method, _ in mixin_map:
121
+ if issubclass(est, mixin):
122
+ methods |= candidates & set(method)
123
+
124
+ output += [[i, j] for j in methods] if methods else [[i, None]]
125
+
126
+ # In the case that no methods are available, set method to None.
127
+ # This will allow estimators without mixins to still test the fit
128
+ # method in various tests.
129
+ return output
130
+
131
+
132
+ def gen_dataset(estimator, queue=None, target_df=None, dtype=np.float64):
133
+ dataset = None
134
+ name = estimator.__class__.__name__
135
+ est = PATCHED_MODELS[name]
136
+ for mixin, _, data in mixin_map:
137
+ if issubclass(est, mixin) and data is not None:
138
+ dataset = data
139
+ # load data
140
+ if dataset == "classification" or dataset is None:
141
+ X, y = load_iris(return_X_y=True)
142
+ elif dataset == "regression":
143
+ X, y = load_diabetes(return_X_y=True)
144
+ else:
145
+ raise ValueError("Unknown dataset type")
146
+
147
+ X = _convert_to_dataframe(X, sycl_queue=queue, target_df=target_df, dtype=dtype)
148
+ y = _convert_to_dataframe(y, sycl_queue=queue, target_df=target_df, dtype=dtype)
149
+ return X, y
150
+
151
+
152
+ DTYPES = [
153
+ np.int8,
154
+ np.int16,
155
+ np.int32,
156
+ np.int64,
157
+ np.float16,
158
+ np.float32,
159
+ np.float64,
160
+ np.uint8,
161
+ np.uint16,
162
+ np.uint32,
163
+ np.uint64,
164
+ ]
@@ -14,6 +14,7 @@
14
14
  # limitations under the License.
15
15
  # ==============================================================================
16
16
 
17
+
17
18
  import gc
18
19
  import logging
19
20
  import tracemalloc
@@ -30,7 +31,6 @@ from sklearn.model_selection import KFold
30
31
  from sklearnex import get_patch_map
31
32
  from sklearnex.metrics import pairwise_distances, roc_auc_score
32
33
  from sklearnex.model_selection import train_test_split
33
- from sklearnex.preview.decomposition import PCA as PreviewPCA
34
34
  from sklearnex.utils import _assert_all_finite
35
35
 
36
36
 
@@ -75,6 +75,8 @@ class RocAucEstimator:
75
75
 
76
76
 
77
77
  # add all daal4py estimators enabled in patching (except banned)
78
+
79
+
78
80
  def get_patched_estimators(ban_list, output_list):
79
81
  patched_estimators = get_patch_map().values()
80
82
  for listing in patched_estimators:
@@ -96,7 +98,6 @@ def remove_duplicated_estimators(estimators_list):
96
98
 
97
99
  BANNED_ESTIMATORS = ("TSNE",) # too slow for using in testing on common data size
98
100
  estimators = [
99
- PreviewPCA,
100
101
  TrainTestSplitEstimator,
101
102
  FiniteCheckEstimator,
102
103
  CosineDistancesEstimator,
@@ -153,6 +154,7 @@ def split_train_inference(kf, x, y, estimator):
153
154
  y_train, y_test = y.iloc[train_index], y.iloc[test_index]
154
155
  # TODO: add parameters for all estimators to prevent
155
156
  # fallback to stock scikit-learn with default parameters
157
+
156
158
  alg = estimator()
157
159
  alg.fit(x_train, y_train)
158
160
  if hasattr(alg, "predict"):
@@ -163,7 +165,6 @@ def split_train_inference(kf, x, y, estimator):
163
165
  alg.kneighbors(x_test)
164
166
  del alg, x_train, x_test, y_train, y_test
165
167
  mem_tracks.append(tracemalloc.get_traced_memory()[0])
166
-
167
168
  return mem_tracks
168
169
 
169
170
 
@@ -215,6 +216,10 @@ def _kfold_function_template(estimator, data_transform_function, data_shape):
215
216
  )
216
217
 
217
218
 
219
+ # disable fallback check as logging impacts memory use
220
+
221
+
222
+ @pytest.mark.allow_sklearn_fallback
218
223
  @pytest.mark.parametrize("data_transform_function", data_transforms)
219
224
  @pytest.mark.parametrize("estimator", estimators)
220
225
  @pytest.mark.parametrize("data_shape", data_shapes)