scikit-learn-intelex 2024.0.1__py311-none-win_amd64.whl → 2024.2.0__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 (104) hide show
  1. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/__init__.py +3 -1
  2. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/__main__.py +0 -1
  3. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/_utils.py +15 -1
  4. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +0 -1
  5. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +2 -1
  6. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/cluster/k_means.py +0 -1
  7. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +0 -1
  8. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +0 -1
  9. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/covariance/__init__.py +19 -0
  10. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +130 -0
  11. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +143 -0
  12. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -1
  13. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/decomposition/pca.py +0 -1
  14. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +0 -1
  15. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +35 -1
  16. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -1
  17. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +17 -2
  18. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +0 -1
  19. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +0 -1
  20. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +0 -1
  21. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/linear_model/__init__.py +1 -3
  22. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +0 -1
  23. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/linear_model/linear.py +9 -1
  24. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/linear_model/logistic_path.py +0 -1
  25. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +333 -0
  26. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/linear_model/ridge.py +0 -1
  27. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +8 -3
  28. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +93 -0
  29. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -1
  30. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/manifold/t_sne.py +0 -1
  31. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +0 -1
  32. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -1
  33. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +0 -1
  34. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +0 -1
  35. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +0 -1
  36. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +0 -1
  37. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +0 -1
  38. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +0 -1
  39. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +1 -2
  40. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/neighbors/_lof.py +167 -0
  41. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +1 -2
  42. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +5 -4
  43. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +5 -4
  44. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +4 -3
  45. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +12 -12
  46. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/preview/__init__.py +1 -2
  47. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/preview/cluster/__init__.py +0 -1
  48. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/preview/cluster/k_means.py +2 -1
  49. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +19 -0
  50. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +132 -0
  51. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +53 -0
  52. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +0 -1
  53. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/pca.py +43 -45
  54. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_preview_pca.py +7 -3
  55. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +1 -0
  56. {scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/spmd}/basic_statistics/__init__.py +0 -1
  57. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +19 -0
  58. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +21 -0
  59. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +2 -1
  60. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +21 -0
  61. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -1
  62. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +4 -0
  63. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +2 -0
  64. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +5 -1
  65. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +2 -0
  66. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +0 -1
  67. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +1 -4
  68. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +46 -16
  69. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +93 -0
  70. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/tests/test_patching.py +19 -5
  71. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/utils/validation.py +0 -1
  72. {scikit_learn_intelex-2024.0.1.dist-info → scikit_learn_intelex-2024.2.0.dist-info}/METADATA +2 -2
  73. scikit_learn_intelex-2024.2.0.dist-info/RECORD +101 -0
  74. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +0 -29
  75. scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/neighbors/lof.py +0 -437
  76. scikit_learn_intelex-2024.0.1.dist-info/RECORD +0 -90
  77. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/_config.py +0 -0
  78. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/_device_offload.py +0 -0
  79. {scikit_learn_intelex-2024.0.1.data/data/Lib/site-packages/sklearnex/spmd → scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex}/basic_statistics/__init__.py +0 -0
  80. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +0 -0
  81. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +0 -0
  82. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/preview/cluster/_common.py +0 -0
  83. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +0 -0
  84. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +0 -0
  85. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +0 -0
  86. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +0 -0
  87. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/__init__.py +0 -0
  88. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +0 -0
  89. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +0 -0
  90. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +0 -0
  91. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +0 -0
  92. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +0 -0
  93. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/neighbors.py +0 -0
  94. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/svm/_common.py +0 -0
  95. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/tests/_models_info.py +0 -0
  96. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/tests/test_config.py +0 -0
  97. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/tests/test_parallel.py +0 -0
  98. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability_tests.py +0 -0
  99. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/tests/utils/_launch_algorithms.py +0 -0
  100. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/utils/__init__.py +0 -0
  101. {scikit_learn_intelex-2024.0.1.data → scikit_learn_intelex-2024.2.0.data}/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -0
  102. {scikit_learn_intelex-2024.0.1.dist-info → scikit_learn_intelex-2024.2.0.dist-info}/LICENSE.txt +0 -0
  103. {scikit_learn_intelex-2024.0.1.dist-info → scikit_learn_intelex-2024.2.0.dist-info}/WHEEL +0 -0
  104. {scikit_learn_intelex-2024.0.1.dist-info → scikit_learn_intelex-2024.2.0.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env python
2
1
  # ==============================================================================
3
2
  # Copyright 2021 Intel Corporation
4
3
  #
@@ -15,6 +14,8 @@
15
14
  # limitations under the License.
16
15
  # ==============================================================================
17
16
 
17
+ from onedal.common.hyperparameters import get_hyperparameters
18
+
18
19
  from . import utils
19
20
  from ._config import config_context, get_config, set_config
20
21
  from .dispatcher import (
@@ -33,6 +34,7 @@ __all__ = [
33
34
  "decomposition",
34
35
  "ensemble",
35
36
  "get_config",
37
+ "get_hyperparameters",
36
38
  "get_patch_map",
37
39
  "get_patch_names",
38
40
  "is_patched_instance",
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env python
2
1
  # ==============================================================================
3
2
  # Copyright 2021 Intel Corporation
4
3
  #
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env python
2
1
  # ===============================================================================
3
2
  # Copyright 2021 Intel Corporation
4
3
  #
@@ -93,3 +92,18 @@ def get_patch_message(s, queue=None):
93
92
 
94
93
  def get_sklearnex_version(rule):
95
94
  return daal_check_version(rule)
95
+
96
+
97
+ def register_hyperparameters(hyperparameters_map):
98
+ """Decorator for hyperparameters support in estimator class.
99
+ Adds `get_hyperparameters` method to class.
100
+ """
101
+
102
+ def wrap_class(estimator_class):
103
+ def get_hyperparameters(self, op):
104
+ return hyperparameters_map[op]
105
+
106
+ estimator_class.get_hyperparameters = get_hyperparameters
107
+ return estimator_class
108
+
109
+ return wrap_class
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env python
2
1
  # ===============================================================================
3
2
  # Copyright 2021 Intel Corporation
4
3
  #
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env python
2
1
  # ===============================================================================
3
2
  # Copyright 2021 Intel Corporation
4
3
  #
@@ -23,6 +22,7 @@ from scipy import sparse as sp
23
22
  from sklearn.cluster import DBSCAN as sklearn_DBSCAN
24
23
  from sklearn.utils.validation import _check_sample_weight
25
24
 
25
+ from daal4py.sklearn._n_jobs_support import control_n_jobs
26
26
  from daal4py.sklearn._utils import sklearn_check_version
27
27
  from onedal.cluster import DBSCAN as onedal_DBSCAN
28
28
 
@@ -46,6 +46,7 @@ class BaseDBSCAN(ABC):
46
46
  self.n_features_in_ = self._onedal_estimator.n_features_in_
47
47
 
48
48
 
49
+ @control_n_jobs(decorated_methods=["fit"])
49
50
  class DBSCAN(sklearn_DBSCAN, BaseDBSCAN):
50
51
  __doc__ = sklearn_DBSCAN.__doc__
51
52
 
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env python
2
1
  # ===============================================================================
3
2
  # Copyright 2021 Intel Corporation
4
3
  #
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env python
2
1
  # ===============================================================================
3
2
  # Copyright 2021 Intel Corporation
4
3
  #
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env python
2
1
  # ===============================================================================
3
2
  # Copyright 2021 Intel Corporation
4
3
  #
@@ -0,0 +1,19 @@
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 .incremental_covariance import IncrementalEmpiricalCovariance
18
+
19
+ __all__ = ["IncrementalEmpiricalCovariance"]
@@ -0,0 +1,130 @@
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
+ import numpy as np
18
+ from sklearn.utils import check_array, gen_batches
19
+
20
+ from daal4py.sklearn._n_jobs_support import control_n_jobs
21
+ from onedal._device_offload import support_usm_ndarray
22
+ from onedal.covariance import (
23
+ IncrementalEmpiricalCovariance as onedal_IncrementalEmpiricalCovariance,
24
+ )
25
+
26
+
27
+ @control_n_jobs(decorated_methods=["partial_fit"])
28
+ class IncrementalEmpiricalCovariance:
29
+ """
30
+ Incremental estimator for covariance.
31
+ Allows to compute empirical covariance estimated by maximum
32
+ likelihood method if data are splitted into batches.
33
+
34
+ Parameters
35
+ ----------
36
+ batch_size : int, default=None
37
+ The number of samples to use for each batch. Only used when calling
38
+ ``fit``. If ``batch_size`` is ``None``, then ``batch_size``
39
+ is inferred from the data and set to ``5 * n_features``, to provide a
40
+ balance between approximation accuracy and memory consumption.
41
+
42
+ Attributes
43
+ ----------
44
+ location_ : ndarray of shape (n_features,)
45
+ Estimated location, i.e. the estimated mean.
46
+
47
+ covariance_ : ndarray of shape (n_features, n_features)
48
+ Estimated covariance matrix
49
+ """
50
+
51
+ _onedal_incremental_covariance = staticmethod(onedal_IncrementalEmpiricalCovariance)
52
+
53
+ def __init__(self, batch_size=None):
54
+ self._need_to_finalize = False # If True then finalize compute should
55
+ # be called to obtain covariance_ or location_ from partial compute data
56
+ self.batch_size = batch_size
57
+
58
+ def _onedal_finalize_fit(self):
59
+ assert hasattr(self, "_onedal_estimator")
60
+ self._onedal_estimator.finalize_fit()
61
+ self._need_to_finalize = False
62
+
63
+ def _onedal_partial_fit(self, X, queue):
64
+ onedal_params = {
65
+ "method": "dense",
66
+ "bias": True,
67
+ }
68
+ if not hasattr(self, "_onedal_estimator"):
69
+ self._onedal_estimator = self._onedal_incremental_covariance(**onedal_params)
70
+ self._onedal_estimator.partial_fit(X, queue)
71
+ self._need_to_finalize = True
72
+
73
+ @property
74
+ def covariance_(self):
75
+ if self._need_to_finalize:
76
+ self._onedal_finalize_fit()
77
+ return self._onedal_estimator.covariance_
78
+
79
+ @property
80
+ def location_(self):
81
+ if self._need_to_finalize:
82
+ self._onedal_finalize_fit()
83
+ return self._onedal_estimator.location_
84
+
85
+ @support_usm_ndarray()
86
+ def partial_fit(self, X, queue=None):
87
+ """
88
+ Incremental fit with X. All of X is processed as a single batch.
89
+
90
+ Parameters
91
+ ----------
92
+ X : array-like of shape (n_samples, n_features)
93
+ Training data, where `n_samples` is the number of samples and
94
+ `n_features` is the number of features.
95
+
96
+ Returns
97
+ -------
98
+ self : object
99
+ Returns the instance itself.
100
+ """
101
+ X = check_array(X, dtype=[np.float64, np.float32])
102
+ self._onedal_partial_fit(X, queue)
103
+ return self
104
+
105
+ def fit(self, X, queue=None):
106
+ """
107
+ Fit the model with X, using minibatches of size batch_size.
108
+
109
+ Parameters
110
+ ----------
111
+ X : array-like of shape (n_samples, n_features)
112
+ Training data, where `n_samples` is the number of samples and
113
+ `n_features` is the number of features.
114
+
115
+ Returns
116
+ -------
117
+ self : object
118
+ Returns the instance itself.
119
+ """
120
+ n_samples, n_features = X.shape
121
+ if self.batch_size is None:
122
+ batch_size_ = 5 * n_features
123
+ else:
124
+ batch_size_ = self.batch_size
125
+ for batch in gen_batches(n_samples, batch_size_):
126
+ X_batch = X[batch]
127
+ self.partial_fit(X_batch, queue=queue)
128
+
129
+ self._onedal_finalize_fit()
130
+ return self
@@ -0,0 +1,143 @@
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
+ import numpy as np
18
+ import pytest
19
+ from numpy.testing import assert_allclose
20
+
21
+ from onedal.tests.utils._dataframes_support import (
22
+ _convert_to_dataframe,
23
+ get_dataframes_and_queues,
24
+ )
25
+
26
+
27
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
28
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
29
+ def test_sklearnex_partial_fit_on_gold_data(dataframe, queue, dtype):
30
+ from sklearnex.covariance import IncrementalEmpiricalCovariance
31
+
32
+ X = np.array([[0, 1], [0, 1]])
33
+ X = X.astype(dtype)
34
+ X_split = np.array_split(X, 2)
35
+ inccov = IncrementalEmpiricalCovariance()
36
+
37
+ for i in range(2):
38
+ X_split_df = _convert_to_dataframe(
39
+ X_split[i], sycl_queue=queue, target_df=dataframe
40
+ )
41
+ result = inccov.partial_fit(X_split_df)
42
+
43
+ expected_covariance = np.array([[0, 0], [0, 0]])
44
+ expected_means = np.array([0, 1])
45
+
46
+ assert_allclose(expected_covariance, result.covariance_)
47
+ assert_allclose(expected_means, result.location_)
48
+
49
+ X = np.array([[1, 2], [3, 6]])
50
+ X = X.astype(dtype)
51
+ X_split = np.array_split(X, 2)
52
+ inccov = IncrementalEmpiricalCovariance()
53
+
54
+ for i in range(2):
55
+ X_split_df = _convert_to_dataframe(
56
+ X_split[i], sycl_queue=queue, target_df=dataframe
57
+ )
58
+ result = inccov.partial_fit(X_split_df)
59
+
60
+ expected_covariance = np.array([[1, 2], [2, 4]])
61
+ expected_means = np.array([2, 4])
62
+
63
+ assert_allclose(expected_covariance, result.covariance_)
64
+ assert_allclose(expected_means, result.location_)
65
+
66
+
67
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
68
+ @pytest.mark.parametrize("batch_size", [2, 4])
69
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
70
+ def test_sklearnex_fit_on_gold_data(dataframe, queue, batch_size, dtype):
71
+ from sklearnex.covariance import IncrementalEmpiricalCovariance
72
+
73
+ X = np.array([[0, 1, 2, 3], [0, -1, -2, -3], [0, 1, 2, 3], [0, 1, 2, 3]])
74
+ X = X.astype(dtype)
75
+ X_df = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
76
+ inccov = IncrementalEmpiricalCovariance(batch_size=batch_size)
77
+
78
+ result = inccov.fit(X_df)
79
+
80
+ expected_covariance = np.array(
81
+ [[0, 0, 0, 0], [0, 0.75, 1.5, 2.25], [0, 1.5, 3, 4.5], [0, 2.25, 4.5, 6.75]]
82
+ )
83
+ expected_means = np.array([0, 0.5, 1, 1.5])
84
+
85
+ assert_allclose(expected_covariance, result.covariance_)
86
+ assert_allclose(expected_means, result.location_)
87
+
88
+
89
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
90
+ @pytest.mark.parametrize("num_batches", [2, 4, 6, 8, 10])
91
+ @pytest.mark.parametrize("row_count", [100, 1000, 2000])
92
+ @pytest.mark.parametrize("column_count", [10, 100, 200])
93
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
94
+ def test_sklearnex_partial_fit_on_random_data(
95
+ dataframe, queue, num_batches, row_count, column_count, dtype
96
+ ):
97
+ from sklearnex.covariance import IncrementalEmpiricalCovariance
98
+
99
+ seed = 77
100
+ gen = np.random.default_rng(seed)
101
+ X = gen.uniform(low=-0.3, high=+0.7, size=(row_count, column_count))
102
+ X = X.astype(dtype)
103
+ X_split = np.array_split(X, num_batches)
104
+ inccov = IncrementalEmpiricalCovariance()
105
+
106
+ for i in range(num_batches):
107
+ X_split_df = _convert_to_dataframe(
108
+ X_split[i], sycl_queue=queue, target_df=dataframe
109
+ )
110
+ result = inccov.partial_fit(X_split_df)
111
+
112
+ expected_covariance = np.cov(X.T, bias=1)
113
+ expected_means = np.mean(X, axis=0)
114
+
115
+ assert_allclose(expected_covariance, result.covariance_, atol=1e-6)
116
+ assert_allclose(expected_means, result.location_, atol=1e-6)
117
+
118
+
119
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
120
+ @pytest.mark.parametrize("num_batches", [2, 4, 6, 8, 10])
121
+ @pytest.mark.parametrize("row_count", [100, 1000, 2000])
122
+ @pytest.mark.parametrize("column_count", [10, 100, 200])
123
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
124
+ def test_sklearnex_fit_on_random_data(
125
+ dataframe, queue, num_batches, row_count, column_count, dtype
126
+ ):
127
+ from sklearnex.covariance import IncrementalEmpiricalCovariance
128
+
129
+ seed = 77
130
+ gen = np.random.default_rng(seed)
131
+ X = gen.uniform(low=-0.3, high=+0.7, size=(row_count, column_count))
132
+ X = X.astype(dtype)
133
+ X_df = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
134
+ batch_size = row_count // num_batches
135
+ inccov = IncrementalEmpiricalCovariance(batch_size=batch_size)
136
+
137
+ result = inccov.fit(X_df)
138
+
139
+ expected_covariance = np.cov(X.T, bias=1)
140
+ expected_means = np.mean(X, axis=0)
141
+
142
+ assert_allclose(expected_covariance, result.covariance_, atol=1e-6)
143
+ assert_allclose(expected_means, result.location_, atol=1e-6)
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env python
2
1
  # ===============================================================================
3
2
  # Copyright 2021 Intel Corporation
4
3
  #
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env python
2
1
  # ===============================================================================
3
2
  # Copyright 2021 Intel Corporation
4
3
  #
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env python
2
1
  # ===============================================================================
3
2
  # Copyright 2023 Intel Corporation
4
3
  #
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env python
2
1
  # ==============================================================================
3
2
  # Copyright 2021 Intel Corporation
4
3
  #
@@ -42,6 +41,7 @@ def get_patch_map():
42
41
  # Scikit-learn* modules
43
42
  import sklearn as base_module
44
43
  import sklearn.cluster as cluster_module
44
+ import sklearn.covariance as covariance_module
45
45
  import sklearn.decomposition as decomposition_module
46
46
  import sklearn.ensemble as ensemble_module
47
47
  import sklearn.linear_model as linear_model_module
@@ -69,6 +69,7 @@ def get_patch_map():
69
69
  from .ensemble import RandomForestClassifier as RandomForestClassifier_sklearnex
70
70
  from .ensemble import RandomForestRegressor as RandomForestRegressor_sklearnex
71
71
  from .linear_model import LinearRegression as LinearRegression_sklearnex
72
+ from .linear_model import LogisticRegression as LogisticRegression_sklearnex
72
73
  from .neighbors import KNeighborsClassifier as KNeighborsClassifier_sklearnex
73
74
  from .neighbors import KNeighborsRegressor as KNeighborsRegressor_sklearnex
74
75
  from .neighbors import LocalOutlierFactor as LocalOutlierFactor_sklearnex
@@ -76,6 +77,9 @@ def get_patch_map():
76
77
 
77
78
  # Preview classes for patching
78
79
  from .preview.cluster import KMeans as KMeans_sklearnex
80
+ from .preview.covariance import (
81
+ EmpiricalCovariance as EmpiricalCovariance_sklearnex,
82
+ )
79
83
  from .preview.decomposition import PCA as PCA_sklearnex
80
84
  from .svm import SVC as SVC_sklearnex
81
85
  from .svm import SVR as SVR_sklearnex
@@ -101,6 +105,18 @@ def get_patch_map():
101
105
  ]
102
106
  ]
103
107
 
108
+ # Covariance
109
+ mapping["empiricalcovariance"] = [
110
+ [
111
+ (
112
+ covariance_module,
113
+ "EmpiricalCovariance",
114
+ EmpiricalCovariance_sklearnex,
115
+ ),
116
+ None,
117
+ ]
118
+ ]
119
+
104
120
  # DBSCAN
105
121
  mapping.pop("dbscan")
106
122
  mapping["dbscan"] = [[(cluster_module, "DBSCAN", DBSCAN_sklearnex), None]]
@@ -128,6 +144,24 @@ def get_patch_map():
128
144
  ]
129
145
  mapping["linearregression"] = mapping["linear"]
130
146
 
147
+ # Logistic Regression
148
+
149
+ mapping.pop("logisticregression")
150
+ mapping.pop("log_reg")
151
+ mapping.pop("logistic")
152
+ mapping.pop("_logistic_regression_path")
153
+ mapping["log_reg"] = [
154
+ [
155
+ (
156
+ linear_model_module,
157
+ "LogisticRegression",
158
+ LogisticRegression_sklearnex,
159
+ ),
160
+ None,
161
+ ]
162
+ ]
163
+ mapping["logisticregression"] = mapping["log_reg"]
164
+
131
165
  # kNN
132
166
  mapping.pop("knn_classifier")
133
167
  mapping.pop("kneighborsclassifier")
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env python
2
1
  # ===============================================================================
3
2
  # Copyright 2023 Intel Corporation
4
3
  #
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env python
2
1
  # ==============================================================================
3
2
  # Copyright 2021 Intel Corporation
4
3
  #
@@ -43,6 +42,7 @@ from sklearn.utils.validation import (
43
42
  check_X_y,
44
43
  )
45
44
 
45
+ from daal4py.sklearn._n_jobs_support import control_n_jobs
46
46
  from daal4py.sklearn._utils import (
47
47
  check_tree_nodes,
48
48
  daal_check_version,
@@ -114,6 +114,8 @@ class BaseForest(ABC):
114
114
  # [:, np.newaxis] that does not.
115
115
  y = np.reshape(y, (-1, 1))
116
116
 
117
+ self._n_samples, self.n_outputs_ = y.shape
118
+
117
119
  y, expanded_class_weight = self._validate_y_class_weight(y)
118
120
 
119
121
  self.n_features_in_ = X.shape[1]
@@ -189,7 +191,16 @@ class BaseForest(ABC):
189
191
  self.oob_decision_function_ = (
190
192
  self._onedal_estimator.oob_decision_function_
191
193
  )
192
-
194
+ if self.bootstrap:
195
+ self._n_samples_bootstrap = max(
196
+ round(
197
+ self._onedal_estimator.observations_per_tree_fraction
198
+ * self._n_samples
199
+ ),
200
+ 1,
201
+ )
202
+ else:
203
+ self._n_samples_bootstrap = None
193
204
  self._validate_estimator()
194
205
  return self
195
206
 
@@ -1122,6 +1133,7 @@ class ForestRegressor(sklearn_ForestRegressor, BaseForest):
1122
1133
  predict.__doc__ = sklearn_ForestRegressor.predict.__doc__
1123
1134
 
1124
1135
 
1136
+ @control_n_jobs(decorated_methods=["fit", "predict", "predict_proba"])
1125
1137
  class RandomForestClassifier(ForestClassifier):
1126
1138
  __doc__ = sklearn_RandomForestClassifier.__doc__
1127
1139
  _onedal_factory = onedal_RandomForestClassifier
@@ -1331,6 +1343,7 @@ class RandomForestClassifier(ForestClassifier):
1331
1343
  self.min_bin_size = min_bin_size
1332
1344
 
1333
1345
 
1346
+ @control_n_jobs(decorated_methods=["fit", "predict"])
1334
1347
  class RandomForestRegressor(ForestRegressor):
1335
1348
  __doc__ = sklearn_RandomForestRegressor.__doc__
1336
1349
  _onedal_factory = onedal_RandomForestRegressor
@@ -1531,6 +1544,7 @@ class RandomForestRegressor(ForestRegressor):
1531
1544
  self.min_bin_size = min_bin_size
1532
1545
 
1533
1546
 
1547
+ @control_n_jobs(decorated_methods=["fit", "predict", "predict_proba"])
1534
1548
  class ExtraTreesClassifier(ForestClassifier):
1535
1549
  __doc__ = sklearn_ExtraTreesClassifier.__doc__
1536
1550
  _onedal_factory = onedal_ExtraTreesClassifier
@@ -1740,6 +1754,7 @@ class ExtraTreesClassifier(ForestClassifier):
1740
1754
  self.min_bin_size = min_bin_size
1741
1755
 
1742
1756
 
1757
+ @control_n_jobs(decorated_methods=["fit", "predict"])
1743
1758
  class ExtraTreesRegressor(ForestRegressor):
1744
1759
  __doc__ = sklearn_ExtraTreesRegressor.__doc__
1745
1760
  _onedal_factory = onedal_ExtraTreesRegressor
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env python
2
1
  # ===============================================================================
3
2
  # Copyright 2023 Intel Corporation
4
3
  #
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env python
2
1
  # ===============================================================================
3
2
  # Copyright 2021 Intel Corporation
4
3
  #
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env python
2
1
  # ===============================================================================
3
2
  # Copyright 2021 Intel Corporation
4
3
  #
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env python
2
1
  # ===============================================================================
3
2
  # Copyright 2021 Intel Corporation
4
3
  #
@@ -17,14 +16,13 @@
17
16
 
18
17
  from .coordinate_descent import ElasticNet, Lasso
19
18
  from .linear import LinearRegression
20
- from .logistic_path import LogisticRegression, logistic_regression_path
19
+ from .logistic_regression import LogisticRegression
21
20
  from .ridge import Ridge
22
21
 
23
22
  __all__ = [
24
23
  "Ridge",
25
24
  "LinearRegression",
26
25
  "LogisticRegression",
27
- "logistic_regression_path",
28
26
  "ElasticNet",
29
27
  "Lasso",
30
28
  ]
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env python
2
1
  # ===============================================================================
3
2
  # Copyright 2021 Intel Corporation
4
3
  #
@@ -65,10 +65,15 @@ if daal_check_version((2023, "P", 100)):
65
65
  import numpy as np
66
66
  from sklearn.linear_model import LinearRegression as sklearn_LinearRegression
67
67
 
68
+ from daal4py.sklearn._n_jobs_support import control_n_jobs
68
69
  from daal4py.sklearn._utils import get_dtype, make2d, sklearn_check_version
69
70
 
70
71
  from .._device_offload import dispatch, wrap_output_data
71
- from .._utils import PatchingConditionsChain, get_patch_message
72
+ from .._utils import (
73
+ PatchingConditionsChain,
74
+ get_patch_message,
75
+ register_hyperparameters,
76
+ )
72
77
  from ..utils.validation import _assert_all_finite
73
78
 
74
79
  if sklearn_check_version("1.0") and not sklearn_check_version("1.2"):
@@ -78,9 +83,12 @@ if daal_check_version((2023, "P", 100)):
78
83
  from sklearn.exceptions import NotFittedError
79
84
  from sklearn.utils.validation import _deprecate_positional_args, check_X_y
80
85
 
86
+ from onedal.common.hyperparameters import get_hyperparameters
81
87
  from onedal.linear_model import LinearRegression as onedal_LinearRegression
82
88
  from onedal.utils import _num_features, _num_samples
83
89
 
90
+ @register_hyperparameters({"fit": get_hyperparameters("linear_regression", "train")})
91
+ @control_n_jobs(decorated_methods=["fit", "predict"])
84
92
  class LinearRegression(sklearn_LinearRegression, BaseLinearRegression):
85
93
  __doc__ = sklearn_LinearRegression.__doc__
86
94
  intercept_, coef_ = None, None
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env python
2
1
  # ===============================================================================
3
2
  # Copyright 2021 Intel Corporation
4
3
  #