scikit-learn-intelex 2024.2.0__py311-none-win_amd64.whl → 2024.4.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 (112) hide show
  1. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/__init__.py +9 -7
  2. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/_device_offload.py +31 -4
  3. {scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/spmd → scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex}/basic_statistics/__init__.py +2 -1
  4. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +288 -0
  5. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +386 -0
  6. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +3 -1
  7. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/conftest.py +63 -0
  8. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +335 -0
  9. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_preview_pca.py → scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +22 -8
  10. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +74 -43
  11. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +78 -89
  12. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +15 -19
  13. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +316 -0
  14. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +63 -11
  15. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +40 -5
  16. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +0 -2
  17. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/neighbors/_lof.py +74 -20
  18. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +4 -1
  19. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +44 -131
  20. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py → scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +198 -221
  21. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +146 -0
  22. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +0 -5
  23. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/preview/__init__.py +1 -1
  24. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/preview/cluster/k_means.py +5 -73
  25. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +6 -5
  26. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +18 -5
  27. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +4 -12
  28. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/svm/_common.py +4 -7
  29. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +70 -50
  30. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +6 -52
  31. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +70 -51
  32. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +3 -49
  33. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/tests/_utils.py +164 -0
  34. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +8 -3
  35. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +268 -0
  36. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +8 -2
  37. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/tests/test_parallel.py +6 -8
  38. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/tests/test_patching.py +371 -0
  39. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/utils/__init__.py +2 -1
  40. scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/utils/_namespace.py +97 -0
  41. {scikit_learn_intelex-2024.2.0.dist-info → scikit_learn_intelex-2024.4.0.dist-info}/METADATA +2 -2
  42. scikit_learn_intelex-2024.4.0.dist-info/RECORD +101 -0
  43. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +0 -17
  44. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +0 -27
  45. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +0 -381
  46. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +0 -308
  47. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +0 -19
  48. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/pca.py +0 -374
  49. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/tests/_models_info.py +0 -170
  50. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +0 -240
  51. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/tests/test_patching.py +0 -136
  52. scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex/tests/utils/_launch_algorithms.py +0 -118
  53. scikit_learn_intelex-2024.2.0.dist-info/RECORD +0 -101
  54. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/__main__.py +0 -0
  55. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/_config.py +0 -0
  56. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/_utils.py +0 -0
  57. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +0 -0
  58. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +0 -0
  59. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/cluster/k_means.py +0 -0
  60. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +0 -0
  61. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +0 -0
  62. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/covariance/__init__.py +0 -0
  63. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +0 -0
  64. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +0 -0
  65. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -0
  66. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +0 -0
  67. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -0
  68. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +0 -0
  69. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +0 -0
  70. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/linear_model/__init__.py +0 -0
  71. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +0 -0
  72. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/linear_model/logistic_path.py +0 -0
  73. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/linear_model/ridge.py +0 -0
  74. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -0
  75. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/manifold/t_sne.py +0 -0
  76. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +0 -0
  77. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -0
  78. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +0 -0
  79. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +0 -0
  80. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +0 -0
  81. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +0 -0
  82. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +0 -0
  83. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +0 -0
  84. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +0 -0
  85. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/preview/cluster/__init__.py +0 -0
  86. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/preview/cluster/_common.py +0 -0
  87. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +0 -0
  88. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +0 -0
  89. {scikit_learn_intelex-2024.2.0.data/data/Lib/site-packages/sklearnex → scikit_learn_intelex-2024.4.0.data/data/Lib/site-packages/sklearnex/spmd}/basic_statistics/__init__.py +0 -0
  90. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +0 -0
  91. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +0 -0
  92. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +0 -0
  93. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +0 -0
  94. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +0 -0
  95. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +0 -0
  96. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/__init__.py +0 -0
  97. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +0 -0
  98. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +0 -0
  99. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +0 -0
  100. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +0 -0
  101. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +0 -0
  102. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +0 -0
  103. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/neighbors.py +0 -0
  104. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -0
  105. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +0 -0
  106. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/tests/test_config.py +0 -0
  107. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability_tests.py +0 -0
  108. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -0
  109. {scikit_learn_intelex-2024.2.0.data → scikit_learn_intelex-2024.4.0.data}/data/Lib/site-packages/sklearnex/utils/validation.py +0 -0
  110. {scikit_learn_intelex-2024.2.0.dist-info → scikit_learn_intelex-2024.4.0.dist-info}/LICENSE.txt +0 -0
  111. {scikit_learn_intelex-2024.2.0.dist-info → scikit_learn_intelex-2024.4.0.dist-info}/WHEEL +0 -0
  112. {scikit_learn_intelex-2024.2.0.dist-info → scikit_learn_intelex-2024.4.0.dist-info}/top_level.txt +0 -0
@@ -1,170 +0,0 @@
1
- # ==============================================================================
2
- # Copyright 2021 Intel Corporation
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
15
- # ==============================================================================
16
-
17
- import numpy as np
18
- from sklearn.cluster import DBSCAN, KMeans
19
- from sklearn.decomposition import PCA
20
- from sklearn.ensemble import RandomForestClassifier, RandomForestRegressor
21
- from sklearn.linear_model import (
22
- ElasticNet,
23
- Lasso,
24
- LinearRegression,
25
- LogisticRegression,
26
- LogisticRegressionCV,
27
- Ridge,
28
- )
29
- from sklearn.manifold import TSNE
30
- from sklearn.neighbors import (
31
- KNeighborsClassifier,
32
- KNeighborsRegressor,
33
- LocalOutlierFactor,
34
- NearestNeighbors,
35
- )
36
- from sklearn.svm import SVC
37
-
38
- MODELS_INFO = [
39
- {
40
- "model": KNeighborsClassifier(algorithm="brute"),
41
- "methods": ["kneighbors", "predict", "predict_proba", "score"],
42
- "dataset": "classifier",
43
- },
44
- {
45
- "model": KNeighborsRegressor(algorithm="brute"),
46
- "methods": ["kneighbors", "predict", "score"],
47
- "dataset": "regression",
48
- },
49
- {
50
- "model": NearestNeighbors(algorithm="brute"),
51
- "methods": ["kneighbors"],
52
- "dataset": "blobs",
53
- },
54
- {
55
- "model": LocalOutlierFactor(novelty=False),
56
- "methods": ["fit_predict"],
57
- "dataset": "blobs",
58
- },
59
- {
60
- "model": LocalOutlierFactor(novelty=True),
61
- "methods": ["predict"],
62
- "dataset": "blobs",
63
- },
64
- {
65
- "model": DBSCAN(),
66
- "methods": ["fit_predict"],
67
- "dataset": "blobs",
68
- },
69
- {
70
- "model": SVC(probability=True),
71
- "methods": ["decision_function", "predict", "predict_proba", "score"],
72
- "dataset": "classifier",
73
- },
74
- {
75
- "model": KMeans(),
76
- "methods": ["fit_predict", "fit_transform", "transform", "predict", "score"],
77
- "dataset": "blobs",
78
- },
79
- {
80
- "model": ElasticNet(),
81
- "methods": ["predict", "score"],
82
- "dataset": "regression",
83
- },
84
- {
85
- "model": Lasso(),
86
- "methods": ["predict", "score"],
87
- "dataset": "regression",
88
- },
89
- {
90
- "model": PCA(),
91
- "methods": ["fit_transform", "transform", "score"],
92
- "dataset": "classifier",
93
- },
94
- {
95
- "model": LogisticRegression(max_iter=100, multi_class="multinomial"),
96
- "methods": [
97
- "decision_function",
98
- "predict",
99
- "predict_proba",
100
- "predict_log_proba",
101
- "score",
102
- ],
103
- "dataset": "classifier",
104
- },
105
- {
106
- "model": LogisticRegressionCV(max_iter=100),
107
- "methods": [
108
- "decision_function",
109
- "predict",
110
- "predict_proba",
111
- "predict_log_proba",
112
- "score",
113
- ],
114
- "dataset": "classifier",
115
- },
116
- {
117
- "model": RandomForestClassifier(n_estimators=10),
118
- "methods": ["predict", "predict_proba", "predict_log_proba", "score"],
119
- "dataset": "classifier",
120
- },
121
- {
122
- "model": RandomForestRegressor(n_estimators=10),
123
- "methods": ["predict", "score"],
124
- "dataset": "regression",
125
- },
126
- {
127
- "model": LinearRegression(),
128
- "methods": ["predict", "score"],
129
- "dataset": "regression",
130
- },
131
- {
132
- "model": Ridge(),
133
- "methods": ["predict", "score"],
134
- "dataset": "regression",
135
- },
136
- ]
137
-
138
- TYPES = [
139
- np.int8,
140
- np.int16,
141
- np.int32,
142
- np.int64,
143
- np.float16,
144
- np.float32,
145
- np.float64,
146
- np.uint8,
147
- np.uint16,
148
- np.uint32,
149
- np.uint64,
150
- ]
151
-
152
- TO_SKIP = [
153
- # --------------- NO INFO ---------------
154
- r"KMeans .*transform",
155
- r"KMeans .*score",
156
- r"PCA .*score",
157
- r"LogisticRegression .*decision_function",
158
- r"LogisticRegressionCV .*decision_function",
159
- r"LogisticRegressionCV .*predict",
160
- r"LogisticRegressionCV .*predict_proba",
161
- r"LogisticRegressionCV .*predict_log_proba",
162
- r"LogisticRegressionCV .*score",
163
- # --------------- Scikit ---------------
164
- r"Ridge float16 predict",
165
- r"Ridge float16 score",
166
- r"RandomForestClassifier .*predict_proba",
167
- r"RandomForestClassifier .*predict_log_proba",
168
- r"pairwise_distances .*pairwise_distances", # except float64
169
- r"roc_auc_score .*roc_auc_score",
170
- ]
@@ -1,240 +0,0 @@
1
- # ===============================================================================
2
- # Copyright 2021 Intel Corporation
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
15
- # ===============================================================================
16
-
17
- import sklearnex
18
- from daal4py.sklearn._utils import daal_check_version
19
-
20
-
21
- def test_monkey_patching():
22
- _tokens = sklearnex.get_patch_names()
23
- _values = sklearnex.get_patch_map().values()
24
- _classes = list()
25
-
26
- for v in _values:
27
- for c in v:
28
- _classes.append(c[0])
29
-
30
- sklearnex.patch_sklearn()
31
-
32
- for i, _ in enumerate(_tokens):
33
- t = _tokens[i]
34
- p = _classes[i][0]
35
- n = _classes[i][1]
36
-
37
- class_module = getattr(p, n).__module__
38
- assert class_module.startswith("daal4py") or class_module.startswith(
39
- "sklearnex"
40
- ), "Patching has completed with error."
41
-
42
- for i, _ in enumerate(_tokens):
43
- t = _tokens[i]
44
- p = _classes[i][0]
45
- n = _classes[i][1]
46
-
47
- sklearnex.unpatch_sklearn(t)
48
- sklearn_class = getattr(p, n, None)
49
- if sklearn_class is not None:
50
- sklearn_class = sklearn_class.__module__
51
- assert sklearn_class is None or sklearn_class.startswith(
52
- "sklearn"
53
- ), "Unpatching has completed with error."
54
-
55
- sklearnex.unpatch_sklearn()
56
-
57
- for i, _ in enumerate(_tokens):
58
- t = _tokens[i]
59
- p = _classes[i][0]
60
- n = _classes[i][1]
61
-
62
- sklearn_class = getattr(p, n, None)
63
- if sklearn_class is not None:
64
- sklearn_class = sklearn_class.__module__
65
- assert sklearn_class is None or sklearn_class.startswith(
66
- "sklearn"
67
- ), "Unpatching has completed with error."
68
-
69
- sklearnex.unpatch_sklearn()
70
-
71
- for i, _ in enumerate(_tokens):
72
- t = _tokens[i]
73
- p = _classes[i][0]
74
- n = _classes[i][1]
75
-
76
- sklearnex.patch_sklearn(t)
77
-
78
- class_module = getattr(p, n).__module__
79
- assert class_module.startswith("daal4py") or class_module.startswith(
80
- "sklearnex"
81
- ), "Patching has completed with error."
82
-
83
- sklearnex.unpatch_sklearn()
84
-
85
-
86
- def test_patch_by_list_simple():
87
- sklearnex.patch_sklearn(["LogisticRegression"])
88
-
89
- from sklearn.ensemble import RandomForestRegressor
90
- from sklearn.linear_model import LogisticRegression
91
- from sklearn.neighbors import KNeighborsRegressor
92
- from sklearn.svm import SVC
93
-
94
- assert RandomForestRegressor.__module__.startswith("sklearn")
95
- assert KNeighborsRegressor.__module__.startswith("sklearn")
96
- if daal_check_version((2024, "P", 1)):
97
- assert LogisticRegression.__module__.startswith("sklearnex")
98
- else:
99
- assert LogisticRegression.__module__.startswith("daal4py")
100
- assert SVC.__module__.startswith("sklearn")
101
-
102
- sklearnex.unpatch_sklearn()
103
-
104
-
105
- def test_patch_by_list_many_estimators():
106
- sklearnex.patch_sklearn(["LogisticRegression", "SVC"])
107
-
108
- from sklearn.ensemble import RandomForestRegressor
109
- from sklearn.linear_model import LogisticRegression
110
- from sklearn.neighbors import KNeighborsRegressor
111
- from sklearn.svm import SVC
112
-
113
- assert RandomForestRegressor.__module__.startswith("sklearn")
114
- assert KNeighborsRegressor.__module__.startswith("sklearn")
115
- if daal_check_version((2024, "P", 1)):
116
- assert LogisticRegression.__module__.startswith("sklearnex")
117
- else:
118
- assert LogisticRegression.__module__.startswith("daal4py")
119
- assert SVC.__module__.startswith("daal4py") or SVC.__module__.startswith("sklearnex")
120
-
121
- sklearnex.unpatch_sklearn()
122
-
123
-
124
- def test_unpatch_by_list_many_estimators():
125
- sklearnex.patch_sklearn()
126
-
127
- from sklearn.ensemble import RandomForestRegressor
128
- from sklearn.linear_model import LogisticRegression
129
- from sklearn.neighbors import KNeighborsRegressor
130
- from sklearn.svm import SVC
131
-
132
- assert RandomForestRegressor.__module__.startswith("sklearnex")
133
- assert KNeighborsRegressor.__module__.startswith(
134
- "daal4py"
135
- ) or KNeighborsRegressor.__module__.startswith("sklearnex")
136
- if daal_check_version((2024, "P", 1)):
137
- assert LogisticRegression.__module__.startswith("sklearnex")
138
- else:
139
- assert LogisticRegression.__module__.startswith("daal4py")
140
- assert SVC.__module__.startswith("daal4py") or SVC.__module__.startswith("sklearnex")
141
-
142
- sklearnex.unpatch_sklearn(["KNeighborsRegressor", "RandomForestRegressor"])
143
-
144
- from sklearn.ensemble import RandomForestRegressor
145
- from sklearn.linear_model import LogisticRegression
146
- from sklearn.neighbors import KNeighborsRegressor
147
- from sklearn.svm import SVC
148
-
149
- assert RandomForestRegressor.__module__.startswith("sklearn")
150
- assert KNeighborsRegressor.__module__.startswith("sklearn")
151
- if daal_check_version((2024, "P", 1)):
152
- assert LogisticRegression.__module__.startswith("sklearnex")
153
- else:
154
- assert LogisticRegression.__module__.startswith("daal4py")
155
-
156
- assert SVC.__module__.startswith("daal4py") or SVC.__module__.startswith("sklearnex")
157
-
158
-
159
- def test_patching_checker():
160
- for name in [None, "SVC", "PCA"]:
161
- sklearnex.patch_sklearn(name=name)
162
- assert sklearnex.sklearn_is_patched(name=name)
163
-
164
- sklearnex.unpatch_sklearn(name=name)
165
- assert not sklearnex.sklearn_is_patched(name=name)
166
-
167
- sklearnex.patch_sklearn()
168
- patching_status_map = sklearnex.sklearn_is_patched(return_map=True)
169
- assert len(patching_status_map) == len(sklearnex.get_patch_names())
170
- for status in patching_status_map.values():
171
- assert status
172
-
173
- sklearnex.unpatch_sklearn()
174
- patching_status_map = sklearnex.sklearn_is_patched(return_map=True)
175
- assert len(patching_status_map) == len(sklearnex.get_patch_names())
176
- for status in patching_status_map.values():
177
- assert not status
178
-
179
-
180
- def test_preview_namespace():
181
- def get_estimators():
182
- from sklearn.cluster import DBSCAN
183
- from sklearn.decomposition import PCA
184
- from sklearn.ensemble import RandomForestClassifier
185
- from sklearn.linear_model import LinearRegression
186
- from sklearn.svm import SVC
187
-
188
- return (
189
- LinearRegression(),
190
- PCA(),
191
- DBSCAN(),
192
- SVC(),
193
- RandomForestClassifier(),
194
- )
195
-
196
- # BUG: previous patching tests force PCA to be patched with daal4py.
197
- # This unpatching returns behavior to expected
198
- sklearnex.unpatch_sklearn()
199
- # behavior with enabled preview
200
- sklearnex.patch_sklearn(preview=True)
201
- from sklearnex.dispatcher import _is_preview_enabled
202
-
203
- assert _is_preview_enabled()
204
-
205
- lr, pca, dbscan, svc, rfc = get_estimators()
206
- assert "sklearnex" in rfc.__module__
207
-
208
- if daal_check_version((2023, "P", 100)):
209
- assert "sklearnex" in lr.__module__
210
- else:
211
- assert "daal4py" in lr.__module__
212
-
213
- assert "sklearnex.preview" in pca.__module__
214
- assert "sklearnex" in dbscan.__module__
215
- assert "sklearnex" in svc.__module__
216
- sklearnex.unpatch_sklearn()
217
-
218
- # no patching behavior
219
- lr, pca, dbscan, svc, rfc = get_estimators()
220
- assert "sklearn." in lr.__module__ and "daal4py" not in lr.__module__
221
- assert "sklearn." in pca.__module__ and "daal4py" not in pca.__module__
222
- assert "sklearn." in dbscan.__module__ and "daal4py" not in dbscan.__module__
223
- assert "sklearn." in svc.__module__ and "daal4py" not in svc.__module__
224
- assert "sklearn." in rfc.__module__ and "daal4py" not in rfc.__module__
225
-
226
- # default patching behavior
227
- sklearnex.patch_sklearn()
228
- assert not _is_preview_enabled()
229
-
230
- lr, pca, dbscan, svc, rfc = get_estimators()
231
- if daal_check_version((2023, "P", 100)):
232
- assert "sklearnex" in lr.__module__
233
- else:
234
- assert "daal4py" in lr.__module__
235
-
236
- assert "daal4py" in pca.__module__
237
- assert "sklearnex" in rfc.__module__
238
- assert "sklearnex" in dbscan.__module__
239
- assert "sklearnex" in svc.__module__
240
- sklearnex.unpatch_sklearn()
@@ -1,136 +0,0 @@
1
- # ==============================================================================
2
- # Copyright 2021 Intel Corporation
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
15
- # ==============================================================================
16
-
17
- import inspect
18
- import os
19
- import pathlib
20
- import re
21
- import subprocess
22
- import sys
23
- from inspect import isclass
24
-
25
- import pytest
26
- from _models_info import TO_SKIP
27
- from sklearn.base import BaseEstimator
28
-
29
- from sklearnex import get_patch_map, is_patched_instance, patch_sklearn, unpatch_sklearn
30
-
31
-
32
- def get_branch(s):
33
- if len(s) == 0:
34
- return "NO INFO"
35
- for i in s:
36
- if "failed to run accelerated version, fallback to original Scikit-learn" in i:
37
- return "was in OPT, but go in Scikit"
38
- for i in s:
39
- if "running accelerated version" in i:
40
- return "OPT"
41
- return "Scikit"
42
-
43
-
44
- def run_parse(mas, result):
45
- name, dtype = mas[0].split()
46
- temp = []
47
- INFO_POS = 16
48
- for i in range(1, len(mas)):
49
- mas[i] = mas[i][INFO_POS:] # remove 'SKLEARNEX INFO: '
50
- if not mas[i].startswith("sklearn"):
51
- ind = name + " " + dtype + " " + mas[i]
52
- result[ind] = get_branch(temp)
53
- temp.clear()
54
- else:
55
- temp.append(mas[i])
56
-
57
-
58
- def get_result_log():
59
- os.environ["SKLEARNEX_VERBOSE"] = "INFO"
60
- absolute_path = str(pathlib.Path(__file__).parent.absolute())
61
- try:
62
- process = subprocess.check_output(
63
- [sys.executable, absolute_path + "/utils/_launch_algorithms.py"]
64
- )
65
- except subprocess.CalledProcessError as e:
66
- print(e)
67
- exit(1)
68
- mas = []
69
- result = {}
70
- for i in process.decode().split("\n"):
71
- if i.startswith("SKLEARNEX WARNING"):
72
- continue
73
- if not i.startswith("SKLEARNEX INFO") and len(mas) != 0:
74
- run_parse(mas, result)
75
- mas.clear()
76
- mas.append(i.strip())
77
- else:
78
- mas.append(i.strip())
79
- del os.environ["SKLEARNEX_VERBOSE"]
80
- return result
81
-
82
-
83
- result_log = get_result_log()
84
-
85
-
86
- @pytest.mark.parametrize("configuration", result_log)
87
- def test_patching(configuration):
88
- if "OPT" in result_log[configuration]:
89
- return
90
- for skip in TO_SKIP:
91
- if re.search(skip, configuration) is not None:
92
- pytest.skip("SKIPPED", allow_module_level=False)
93
- raise ValueError("Test patching failed: " + configuration)
94
-
95
-
96
- def _load_all_models(patched):
97
- if patched:
98
- patch_sklearn()
99
-
100
- models = {}
101
- for patch_infos in get_patch_map().values():
102
- maybe_class = getattr(patch_infos[0][0][0], patch_infos[0][0][1], None)
103
- if (
104
- maybe_class is not None
105
- and isclass(maybe_class)
106
- and issubclass(maybe_class, BaseEstimator)
107
- ):
108
- models[patch_infos[0][0][1]] = maybe_class
109
-
110
- if patched:
111
- unpatch_sklearn()
112
-
113
- return models
114
-
115
-
116
- PATCHED_MODELS = _load_all_models(patched=True)
117
- UNPATCHED_MODELS = _load_all_models(patched=False)
118
-
119
-
120
- @pytest.mark.parametrize("estimator", UNPATCHED_MODELS.keys())
121
- def test_is_patched_instance(estimator):
122
- patched = PATCHED_MODELS[estimator]
123
- unpatched = UNPATCHED_MODELS[estimator]
124
- assert is_patched_instance(patched), f"{patched} is a patched instance"
125
- assert not is_patched_instance(unpatched), f"{unpatched} is an unpatched instance"
126
-
127
-
128
- @pytest.mark.parametrize("member", ["_onedal_cpu_supported", "_onedal_gpu_supported"])
129
- @pytest.mark.parametrize(
130
- "name",
131
- [i for i in PATCHED_MODELS.keys() if "sklearnex" in PATCHED_MODELS[i].__module__],
132
- )
133
- def test_onedal_supported_member(name, member):
134
- patched = PATCHED_MODELS[name]
135
- sig = str(inspect.signature(getattr(patched, member)))
136
- assert "(self, method_name, *data)" == sig
@@ -1,118 +0,0 @@
1
- # ==============================================================================
2
- # Copyright 2021 Intel Corporation
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
15
- # ==============================================================================
16
-
17
- import logging
18
- import random
19
-
20
- import numpy as np
21
-
22
- from sklearnex import patch_sklearn
23
-
24
- patch_sklearn()
25
-
26
- import pathlib
27
- import sys
28
-
29
- from sklearn.datasets import load_diabetes, load_iris, make_regression
30
- from sklearn.metrics import pairwise_distances, roc_auc_score
31
-
32
- absolute_path = str(pathlib.Path(__file__).parent.absolute())
33
- sys.path.append(absolute_path + "/../")
34
- from _models_info import MODELS_INFO, TYPES
35
-
36
-
37
- def get_class_name(x):
38
- return x.__class__.__name__
39
-
40
-
41
- def generate_dataset(name, dtype, model_name):
42
- if model_name == "LinearRegression":
43
- X, y = make_regression(n_samples=1000, n_features=5)
44
- elif name in ["blobs", "classifier"]:
45
- X, y = load_iris(return_X_y=True)
46
- elif name == "regression":
47
- X, y = load_diabetes(return_X_y=True)
48
- else:
49
- raise ValueError("Unknown dataset type")
50
- X = np.array(X, dtype=dtype)
51
- y = np.array(y, dtype=dtype)
52
- return (X, y)
53
-
54
-
55
- def run_patch(model_info, dtype):
56
- print(get_class_name(model_info["model"]), dtype.__name__)
57
- X, y = generate_dataset(
58
- model_info["dataset"], dtype, get_class_name(model_info["model"])
59
- )
60
- model = model_info["model"]
61
- model.fit(X, y)
62
- logging.info("fit")
63
- for i in model_info["methods"]:
64
- if i == "predict":
65
- model.predict(X)
66
- elif i == "predict_proba":
67
- model.predict_proba(X)
68
- elif i == "predict_log_proba":
69
- model.predict_log_proba(X)
70
- elif i == "decision_function":
71
- model.decision_function(X)
72
- elif i == "fit_predict":
73
- model.fit_predict(X)
74
- elif i == "transform":
75
- model.transform(X)
76
- elif i == "fit_transform":
77
- model.fit_transform(X)
78
- elif i == "kneighbors":
79
- model.kneighbors(X)
80
- elif i == "score":
81
- model.score(X, y)
82
- else:
83
- raise ValueError(i + " is wrong method")
84
- logging.info(i)
85
-
86
-
87
- def run_algotithms():
88
- for info in MODELS_INFO:
89
- for t in TYPES:
90
- model_name = get_class_name(info["model"])
91
- if model_name in ["Ridge", "LinearRegression"] and t.__name__ == "uint32":
92
- continue
93
- run_patch(info, t)
94
-
95
-
96
- def run_utils():
97
- # pairwise_distances
98
- for metric in ["cosine", "correlation"]:
99
- for t in TYPES:
100
- X = np.random.rand(1000)
101
- X = np.array(X, dtype=t)
102
- print("pairwise_distances", t.__name__)
103
- _ = pairwise_distances(X.reshape(1, -1), metric=metric)
104
- logging.info("pairwise_distances")
105
- # roc_auc_score
106
- for t in [np.float32, np.float64]:
107
- a = [random.randint(0, 1) for i in range(1000)]
108
- b = [random.randint(0, 1) for i in range(1000)]
109
- a = np.array(a, dtype=t)
110
- b = np.array(b, dtype=t)
111
- print("roc_auc_score", t.__name__)
112
- _ = roc_auc_score(a, b)
113
- logging.info("roc_auc_score")
114
-
115
-
116
- if __name__ == "__main__":
117
- run_algotithms()
118
- run_utils()