scikit-learn-intelex 2025.1.0__py312-none-win_amd64.whl → 2025.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.

Potentially problematic release.


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

Files changed (270) hide show
  1. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/_daal4py.cp312-win_amd64.pyd +0 -0
  2. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/mpi_transceiver.cp312-win_amd64.pyd +0 -0
  3. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/validation.py +6 -3
  4. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/_device_offload.py +10 -28
  5. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp312-win_amd64.pyd +0 -0
  6. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp312-win_amd64.pyd +0 -0
  7. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/basic_statistics/basic_statistics.py +5 -5
  8. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/basic_statistics/incremental_basic_statistics.py +34 -19
  9. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/basic_statistics/tests/test_basic_statistics.py +16 -72
  10. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/basic_statistics/tests/test_incremental_basic_statistics.py +100 -17
  11. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/utils.py +50 -0
  12. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/cluster/dbscan.py +5 -10
  13. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/cluster/kmeans.py +9 -16
  14. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/cluster/kmeans_init.py +7 -10
  15. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/common/_policy.py +0 -4
  16. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/common/tests/test_sycl.py +128 -0
  17. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/covariance/covariance.py +6 -9
  18. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/covariance/incremental_covariance.py +41 -26
  19. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/covariance/tests/test_incremental_covariance.py +69 -1
  20. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/datatypes/__init__.py +19 -0
  21. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +10 -43
  22. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/datatypes/tests/test_data.py +83 -22
  23. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/decomposition/incremental_pca.py +42 -32
  24. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/decomposition/pca.py +7 -7
  25. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/decomposition/tests/test_incremental_pca.py +87 -0
  26. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/ensemble/forest.py +20 -11
  27. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/linear_model/incremental_linear_model.py +86 -52
  28. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/linear_model/linear_model.py +19 -23
  29. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/linear_model/logistic_regression.py +9 -11
  30. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_linear_regression.py +70 -25
  31. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_ridge_regression.py +64 -0
  32. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_linear_regression.py +13 -4
  33. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/neighbors/neighbors.py +21 -25
  34. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/primitives/kernel_functions.py +3 -4
  35. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/svm/svm.py +9 -9
  36. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/utils/tests/test_validation.py +142 -0
  37. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/utils/validation.py +38 -14
  38. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/_utils.py +58 -13
  39. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +39 -8
  40. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +7 -0
  41. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +171 -36
  42. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +79 -28
  43. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +2 -2
  44. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/cluster/k_means.py +4 -2
  45. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +0 -2
  46. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +7 -0
  47. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +50 -0
  48. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/decomposition/pca.py +3 -1
  49. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +1 -10
  50. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +2 -2
  51. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +23 -18
  52. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +25 -12
  53. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/linear_model/incremental_ridge.py +15 -8
  54. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/linear_model/linear.py +8 -3
  55. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +15 -13
  56. {scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview → scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex}/linear_model/ridge.py +390 -424
  57. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +65 -5
  58. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_ridge.py +61 -0
  59. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +11 -36
  60. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_ridge.py +256 -0
  61. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/manifold/t_sne.py +5 -0
  62. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +250 -0
  63. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +2 -2
  64. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/preview/__init__.py +1 -1
  65. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +6 -2
  66. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +1 -1
  67. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +14 -3
  68. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +70 -0
  69. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +3 -3
  70. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +6 -7
  71. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +3 -2
  72. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +16 -14
  73. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/svm/_common.py +2 -2
  74. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/tests/test_common.py +130 -29
  75. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/tests/test_hyperparameters.py +43 -0
  76. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +7 -39
  77. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +4 -11
  78. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/tests/test_patching.py +0 -8
  79. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +7 -2
  80. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/tests/utils/__init__.py +4 -0
  81. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/tests/utils/base.py +65 -0
  82. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/utils/validation.py → scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/utils/__init__.py +3 -1
  83. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/utils/tests/test_validation.py +238 -0
  84. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/utils/validation.py +208 -0
  85. {scikit_learn_intelex-2025.1.0.dist-info → scikit_learn_intelex-2025.4.0.dist-info}/METADATA +38 -77
  86. scikit_learn_intelex-2025.4.0.dist-info/RECORD +259 -0
  87. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/daal4py/_daal4py.cp312-win_amd64.pyd +0 -0
  88. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp312-win_amd64.pyd +0 -0
  89. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp312-win_amd64.pyd +0 -0
  90. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/onedal/datatypes/__init__.py +0 -19
  91. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/linear_model/ridge.py +0 -24
  92. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +0 -26
  93. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/__init__.py +0 -19
  94. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/tests/test_ridge.py +0 -102
  95. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/utils/__init__.py +0 -19
  96. scikit_learn_intelex-2025.1.0.data/data/Lib/site-packages/sklearnex/utils/tests/test_finite.py +0 -89
  97. scikit_learn_intelex-2025.1.0.dist-info/RECORD +0 -257
  98. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/__init__.py +0 -0
  99. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/__main__.py +0 -0
  100. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/doc/third-party-programs.txt +0 -0
  101. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/mb/__init__.py +0 -0
  102. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/mb/model_builders.py +0 -0
  103. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/__init__.py +0 -0
  104. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/_n_jobs_support.py +0 -0
  105. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/_utils.py +0 -0
  106. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/__init__.py +0 -0
  107. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/dbscan.py +0 -0
  108. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/k_means.py +0 -0
  109. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/tests/test_dbscan.py +0 -0
  110. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/decomposition/__init__.py +0 -0
  111. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/decomposition/_pca.py +0 -0
  112. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/AdaBoostClassifier.py +0 -0
  113. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/GBTDAAL.py +0 -0
  114. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/__init__.py +0 -0
  115. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/_forest.py +0 -0
  116. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/tests/test_decision_forest.py +0 -0
  117. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/__init__.py +0 -0
  118. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/_coordinate_descent.py +0 -0
  119. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/_linear.py +0 -0
  120. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/_ridge.py +0 -0
  121. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/coordinate_descent.py +0 -0
  122. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/linear.py +0 -0
  123. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_loss.py +0 -0
  124. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +0 -0
  125. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/ridge.py +0 -0
  126. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_linear.py +0 -0
  127. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_ridge.py +0 -0
  128. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/manifold/__init__.py +0 -0
  129. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/manifold/_t_sne.py +0 -0
  130. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/metrics/__init__.py +0 -0
  131. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/metrics/_pairwise.py +0 -0
  132. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/metrics/_ranking.py +0 -0
  133. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/model_selection/__init__.py +0 -0
  134. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/model_selection/_split.py +0 -0
  135. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/model_selection/tests/test_split.py +0 -0
  136. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/__init__.py +0 -0
  137. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/dispatcher.py +0 -0
  138. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/_models_info.py +0 -0
  139. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_monkeypatch.py +0 -0
  140. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_patching.py +0 -0
  141. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/utils/_launch_algorithms.py +0 -0
  142. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/__init__.py +0 -0
  143. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_base.py +0 -0
  144. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_classification.py +0 -0
  145. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_regression.py +0 -0
  146. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_unsupervised.py +0 -0
  147. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/tests/test_kneighbors.py +0 -0
  148. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/svm/__init__.py +0 -0
  149. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/svm/svm.py +0 -0
  150. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/__init__.py +0 -0
  151. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/base.py +0 -0
  152. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/tests/test_utils.py +0 -0
  153. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/__init__.py +0 -0
  154. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/_config.py +0 -0
  155. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/basic_statistics/__init__.py +0 -0
  156. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/cluster/__init__.py +0 -0
  157. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/cluster/tests/test_dbscan.py +0 -0
  158. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/cluster/tests/test_kmeans.py +0 -0
  159. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/cluster/tests/test_kmeans_init.py +0 -0
  160. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/common/_base.py +0 -0
  161. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/common/_estimator_checks.py +0 -0
  162. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/common/_mixin.py +0 -0
  163. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/common/_spmd_policy.py +0 -0
  164. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/common/hyperparameters.py +0 -0
  165. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/common/tests/test_policy.py +0 -0
  166. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/covariance/__init__.py +0 -0
  167. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/covariance/tests/test_covariance.py +0 -0
  168. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/datatypes/tests/common.py +0 -0
  169. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/decomposition/__init__.py +0 -0
  170. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/ensemble/__init__.py +0 -0
  171. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/ensemble/tests/test_random_forest.py +0 -0
  172. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/linear_model/__init__.py +0 -0
  173. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_logistic_regression.py +0 -0
  174. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_ridge.py +0 -0
  175. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/neighbors/__init__.py +0 -0
  176. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/neighbors/tests/test_knn_classification.py +0 -0
  177. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/primitives/__init__.py +0 -0
  178. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/primitives/get_tree.py +0 -0
  179. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/primitives/tests/test_kernel_functions.py +0 -0
  180. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/svm/__init__.py +0 -0
  181. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/svm/tests/test_csr_svm.py +0 -0
  182. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/svm/tests/test_nusvc.py +0 -0
  183. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/svm/tests/test_nusvr.py +0 -0
  184. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/svm/tests/test_svc.py +0 -0
  185. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/svm/tests/test_svr.py +0 -0
  186. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/tests/test_common.py +0 -0
  187. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/tests/utils/_dataframes_support.py +0 -0
  188. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/tests/utils/_device_selection.py +0 -0
  189. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/utils/__init__.py +0 -0
  190. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/utils/_array_api.py +0 -0
  191. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/onedal/utils/_dpep_helpers.py +0 -0
  192. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/__init__.py +0 -0
  193. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/__main__.py +0 -0
  194. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/_config.py +0 -0
  195. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/_device_offload.py +0 -0
  196. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +0 -0
  197. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +0 -0
  198. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +0 -0
  199. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/conftest.py +0 -0
  200. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/covariance/__init__.py +0 -0
  201. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -0
  202. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +0 -0
  203. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +0 -0
  204. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -0
  205. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +0 -0
  206. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +0 -0
  207. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/linear_model/__init__.py +0 -0
  208. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +0 -0
  209. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +0 -0
  210. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -0
  211. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -0
  212. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +0 -0
  213. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +0 -0
  214. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +0 -0
  215. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +0 -0
  216. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +0 -0
  217. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +0 -0
  218. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +0 -0
  219. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/neighbors/_lof.py +0 -0
  220. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +0 -0
  221. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +0 -0
  222. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +0 -0
  223. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +0 -0
  224. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +0 -0
  225. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +0 -0
  226. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +0 -0
  227. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +0 -0
  228. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +0 -0
  229. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +0 -0
  230. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +0 -0
  231. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +0 -0
  232. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +0 -0
  233. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +0 -0
  234. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +0 -0
  235. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +0 -0
  236. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/incremental_covariance.py +0 -0
  237. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_covariance_spmd.py +0 -0
  238. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +0 -0
  239. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/__init__.py +0 -0
  240. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/incremental_pca.py +0 -0
  241. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +0 -0
  242. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +0 -0
  243. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_pca_spmd.py +0 -0
  244. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +0 -0
  245. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +0 -0
  246. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/tests/test_forest_spmd.py +0 -0
  247. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +0 -0
  248. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/incremental_linear_model.py +0 -0
  249. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +0 -0
  250. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +0 -0
  251. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +0 -0
  252. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +0 -0
  253. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +0 -0
  254. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/neighbors.py +0 -0
  255. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +0 -0
  256. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -0
  257. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +0 -0
  258. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +0 -0
  259. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +0 -0
  260. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +0 -0
  261. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +0 -0
  262. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/tests/test_config.py +0 -0
  263. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +0 -0
  264. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/tests/test_parallel.py +0 -0
  265. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/tests/utils/spmd.py +0 -0
  266. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/utils/_array_api.py +0 -0
  267. {scikit_learn_intelex-2025.1.0.data → scikit_learn_intelex-2025.4.0.data}/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -0
  268. {scikit_learn_intelex-2025.1.0.dist-info → scikit_learn_intelex-2025.4.0.dist-info}/LICENSE.txt +0 -0
  269. {scikit_learn_intelex-2025.1.0.dist-info → scikit_learn_intelex-2025.4.0.dist-info}/WHEEL +0 -0
  270. {scikit_learn_intelex-2025.1.0.dist-info → scikit_learn_intelex-2025.4.0.dist-info}/top_level.txt +0 -0
@@ -31,7 +31,7 @@ from daal4py import (
31
31
  from ..common._base import BaseEstimator
32
32
  from ..common._estimator_checks import _check_is_fitted, _is_classifier, _is_regressor
33
33
  from ..common._mixin import ClassifierMixin, RegressorMixin
34
- from ..datatypes import _convert_to_supported, from_table, to_table
34
+ from ..datatypes import from_table, to_table
35
35
  from ..utils import (
36
36
  _check_array,
37
37
  _check_classification_targets,
@@ -130,7 +130,7 @@ class NeighborsCommonBase(BaseEstimator, metaclass=ABCMeta):
130
130
  else:
131
131
  p = self.p
132
132
  return {
133
- "fptype": "float" if X.dtype == np.float32 else "double",
133
+ "fptype": X.dtype,
134
134
  "vote_weights": "uniform" if weights == "uniform" else "distance",
135
135
  "method": self._fit_method,
136
136
  "radius": self.radius,
@@ -427,10 +427,10 @@ class KNeighborsClassifier(NeighborsBase, ClassifierMixin):
427
427
  return train_alg(**params).compute(X, y).model
428
428
 
429
429
  policy = self._get_policy(queue, X, y)
430
- X, y = _convert_to_supported(policy, X, y)
431
- params = self._get_onedal_params(X, y)
430
+ X_table, y_table = to_table(X, y, queue=queue)
431
+ params = self._get_onedal_params(X_table, y)
432
432
  train_alg = self._get_backend(
433
- "neighbors", "classification", "train", policy, params, *to_table(X, y)
433
+ "neighbors", "classification", "train", policy, params, X_table, y_table
434
434
  )
435
435
 
436
436
  return train_alg.model
@@ -442,7 +442,7 @@ class KNeighborsClassifier(NeighborsBase, ClassifierMixin):
442
442
  return bf_knn_classification_prediction(**params).compute(X, model)
443
443
 
444
444
  policy = self._get_policy(queue, X)
445
- X = _convert_to_supported(policy, X)
445
+ X = to_table(X, queue=queue)
446
446
  if hasattr(self, "_onedal_model"):
447
447
  model = self._onedal_model
448
448
  else:
@@ -451,9 +451,9 @@ class KNeighborsClassifier(NeighborsBase, ClassifierMixin):
451
451
  )
452
452
  if "responses" not in params["result_option"]:
453
453
  params["result_option"] += "|responses"
454
- params["fptype"] = "float" if X.dtype == np.float32 else "double"
454
+ params["fptype"] = X.dtype
455
455
  result = self._get_backend(
456
- "neighbors", "classification", "infer", policy, params, model, to_table(X)
456
+ "neighbors", "classification", "infer", policy, params, model, X
457
457
  )
458
458
 
459
459
  return result
@@ -562,10 +562,6 @@ class KNeighborsRegressor(NeighborsBase, RegressorMixin):
562
562
  )
563
563
  self.weights = weights
564
564
 
565
- def _get_onedal_params(self, X, y=None):
566
- params = super()._get_onedal_params(X, y)
567
- return params
568
-
569
565
  def _get_daal_params(self, data):
570
566
  params = super()._get_daal_params(data)
571
567
  params["resultsToCompute"] = "computeIndicesOfNeighbors|computeDistances"
@@ -585,14 +581,14 @@ class KNeighborsRegressor(NeighborsBase, RegressorMixin):
585
581
  return train_alg(**params).compute(X, y).model
586
582
 
587
583
  policy = self._get_policy(queue, X, y)
588
- X, y = _convert_to_supported(policy, X, y)
589
- params = self._get_onedal_params(X, y)
584
+ X_table, y_table = to_table(X, y, queue=queue)
585
+ params = self._get_onedal_params(X_table, y)
590
586
  train_alg_regr = self._get_backend("neighbors", "regression", None)
591
587
  train_alg_srch = self._get_backend("neighbors", "search", None)
592
588
 
593
589
  if gpu_device:
594
- return train_alg_regr.train(policy, params, *to_table(X, y)).model
595
- return train_alg_srch.train(policy, params, to_table(X)).model
590
+ return train_alg_regr.train(policy, params, X_table, y_table).model
591
+ return train_alg_srch.train(policy, params, X_table).model
596
592
 
597
593
  def _onedal_predict(self, model, X, params, queue):
598
594
  if type(model) is kdtree_knn_classification_model:
@@ -602,7 +598,7 @@ class KNeighborsRegressor(NeighborsBase, RegressorMixin):
602
598
 
603
599
  gpu_device = queue is not None and queue.sycl_device.is_gpu
604
600
  policy = self._get_policy(queue, X)
605
- X = _convert_to_supported(policy, X)
601
+ X = to_table(X, queue=queue)
606
602
  backend = (
607
603
  self._get_backend("neighbors", "regression", None)
608
604
  if gpu_device
@@ -615,8 +611,8 @@ class KNeighborsRegressor(NeighborsBase, RegressorMixin):
615
611
  model = self._create_model(backend)
616
612
  if "responses" not in params["result_option"] and gpu_device:
617
613
  params["result_option"] += "|responses"
618
- params["fptype"] = "float" if X.dtype == np.float32 else "double"
619
- result = backend.infer(policy, params, model, to_table(X))
614
+ params["fptype"] = X.dtype
615
+ result = backend.infer(policy, params, model, X)
620
616
 
621
617
  return result
622
618
 
@@ -732,10 +728,10 @@ class NearestNeighbors(NeighborsBase):
732
728
  return train_alg(**params).compute(X, y).model
733
729
 
734
730
  policy = self._get_policy(queue, X, y)
735
- X, y = _convert_to_supported(policy, X, y)
736
- params = self._get_onedal_params(X, y)
731
+ X_table = to_table(X, queue=queue)
732
+ params = self._get_onedal_params(X_table, y)
737
733
  train_alg = self._get_backend(
738
- "neighbors", "search", "train", policy, params, to_table(X)
734
+ "neighbors", "search", "train", policy, params, X_table
739
735
  )
740
736
 
741
737
  return train_alg.model
@@ -747,15 +743,15 @@ class NearestNeighbors(NeighborsBase):
747
743
  return bf_knn_classification_prediction(**params).compute(X, model)
748
744
 
749
745
  policy = self._get_policy(queue, X)
750
- X = _convert_to_supported(policy, X)
746
+ X = to_table(X, queue=queue)
751
747
  if hasattr(self, "_onedal_model"):
752
748
  model = self._onedal_model
753
749
  else:
754
750
  model = self._create_model(self._get_backend("neighbors", "search", None))
755
751
 
756
- params["fptype"] = "float" if X.dtype == np.float32 else "double"
752
+ params["fptype"] = X.dtype
757
753
  result = self._get_backend(
758
- "neighbors", "search", "infer", policy, params, model, to_table(X)
754
+ "neighbors", "search", "infer", policy, params, model, X
759
755
  )
760
756
 
761
757
  return result
@@ -19,7 +19,7 @@ import numpy as np
19
19
  from onedal import _backend
20
20
 
21
21
  from ..common._policy import _get_policy
22
- from ..datatypes import _convert_to_supported, from_table, to_table
22
+ from ..datatypes import from_table, to_table
23
23
  from ..utils import _check_array
24
24
 
25
25
 
@@ -34,9 +34,8 @@ def _check_inputs(X, Y):
34
34
 
35
35
  def _compute_kernel(params, submodule, X, Y, queue):
36
36
  policy = _get_policy(queue, X, Y)
37
- X, Y = _convert_to_supported(policy, X, Y)
38
- params["fptype"] = "float" if X.dtype == np.float32 else "double"
39
- X, Y = to_table(X, Y)
37
+ X, Y = to_table(X, Y, queue=queue)
38
+ params["fptype"] = X.dtype
40
39
  result = submodule.compute(policy, params, X, Y)
41
40
  return from_table(result.values)
42
41
 
@@ -25,7 +25,7 @@ from onedal import _backend
25
25
  from ..common._estimator_checks import _check_is_fitted
26
26
  from ..common._mixin import ClassifierMixin, RegressorMixin
27
27
  from ..common._policy import _get_policy
28
- from ..datatypes import _convert_to_supported, from_table, to_table
28
+ from ..datatypes import from_table, to_table
29
29
  from ..utils import (
30
30
  _check_array,
31
31
  _check_n_features,
@@ -96,7 +96,7 @@ class BaseSVM(metaclass=ABCMeta):
96
96
  self.n_iter_ = 1 if max_iter < 1 else max_iter
97
97
  class_count = 0 if self.classes_ is None else len(self.classes_)
98
98
  return {
99
- "fptype": "float" if data.dtype == np.float32 else "double",
99
+ "fptype": data.dtype,
100
100
  "method": self.algorithm,
101
101
  "kernel": self.kernel,
102
102
  "c": self.C,
@@ -174,9 +174,9 @@ class BaseSVM(metaclass=ABCMeta):
174
174
  self._scale_, self._sigma_ = _gamma, np.sqrt(0.5 / _gamma)
175
175
 
176
176
  policy = _get_policy(queue, *data)
177
- X = _convert_to_supported(policy, X)
178
- params = self._get_onedal_params(X)
179
- result = module.train(policy, params, *to_table(*data))
177
+ data = to_table(*data, queue=queue)
178
+ params = self._get_onedal_params(data[0])
179
+ result = module.train(policy, params, *data)
180
180
 
181
181
  if self._sparse:
182
182
  self.dual_coef_ = sp.csr_matrix(from_table(result.coeffs).T)
@@ -253,14 +253,14 @@ class BaseSVM(metaclass=ABCMeta):
253
253
  )
254
254
 
255
255
  policy = _get_policy(queue, X)
256
- X = _convert_to_supported(policy, X)
256
+ X = to_table(X, queue=queue)
257
257
  params = self._get_onedal_params(X)
258
258
 
259
259
  if hasattr(self, "_onedal_model"):
260
260
  model = self._onedal_model
261
261
  else:
262
262
  model = self._create_model(module)
263
- result = module.infer(policy, params, model, to_table(X))
263
+ result = module.infer(policy, params, model, X)
264
264
  y = from_table(result.responses)
265
265
  return y
266
266
 
@@ -310,14 +310,14 @@ class BaseSVM(metaclass=ABCMeta):
310
310
  )
311
311
 
312
312
  policy = _get_policy(queue, X)
313
- X = _convert_to_supported(policy, X)
313
+ X = to_table(X, queue=queue)
314
314
  params = self._get_onedal_params(X)
315
315
 
316
316
  if hasattr(self, "_onedal_model"):
317
317
  model = self._onedal_model
318
318
  else:
319
319
  model = self._create_model(module)
320
- result = module.infer(policy, params, model, to_table(X))
320
+ result = module.infer(policy, params, model, X)
321
321
  decision_function = from_table(result.decision_function)
322
322
 
323
323
  if len(self.classes_) == 2:
@@ -0,0 +1,142 @@
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 numpy.random as rand
19
+ import pytest
20
+ import scipy.sparse as sp
21
+
22
+ from onedal.tests.utils._dataframes_support import (
23
+ _convert_to_dataframe,
24
+ get_dataframes_and_queues,
25
+ )
26
+ from onedal.utils.validation import assert_all_finite
27
+
28
+
29
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
30
+ @pytest.mark.parametrize(
31
+ "shape",
32
+ [
33
+ [16, 2048],
34
+ [65539], # 2**16 + 3,
35
+ [1000, 1000],
36
+ [
37
+ 3,
38
+ ],
39
+ ],
40
+ )
41
+ @pytest.mark.parametrize("allow_nan", [False, True])
42
+ @pytest.mark.parametrize(
43
+ "dataframe, queue", get_dataframes_and_queues("numpy,dpnp,dpctl")
44
+ )
45
+ def test_sum_infinite_actually_finite(dtype, shape, allow_nan, dataframe, queue):
46
+ X = np.empty(shape, dtype=dtype)
47
+ X.fill(np.finfo(dtype).max)
48
+ X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
49
+ assert_all_finite(X, allow_nan=allow_nan)
50
+
51
+
52
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
53
+ @pytest.mark.parametrize(
54
+ "shape",
55
+ [
56
+ [16, 2048],
57
+ [65539], # 2**16 + 3,
58
+ [1000, 1000],
59
+ [
60
+ 3,
61
+ ],
62
+ ],
63
+ )
64
+ @pytest.mark.parametrize("allow_nan", [False, True])
65
+ @pytest.mark.parametrize("check", ["inf", "NaN", None])
66
+ @pytest.mark.parametrize("seed", [0, 123456])
67
+ @pytest.mark.parametrize(
68
+ "dataframe, queue", get_dataframes_and_queues("numpy,dpnp,dpctl")
69
+ )
70
+ def test_assert_finite_random_location(
71
+ dtype, shape, allow_nan, check, seed, dataframe, queue
72
+ ):
73
+ rand.seed(seed)
74
+ X = rand.uniform(high=np.finfo(dtype).max, size=shape).astype(dtype)
75
+
76
+ if check:
77
+ loc = rand.randint(0, X.size - 1)
78
+ X.reshape((-1,))[loc] = float(check)
79
+
80
+ X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
81
+
82
+ if check is None or (allow_nan and check == "NaN"):
83
+ assert_all_finite(X, allow_nan=allow_nan)
84
+ else:
85
+ msg_err = "Input contains " + ("infinity" if allow_nan else "NaN, infinity") + "."
86
+ with pytest.raises(ValueError, match=msg_err):
87
+ assert_all_finite(X, allow_nan=allow_nan)
88
+
89
+
90
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
91
+ @pytest.mark.parametrize("allow_nan", [False, True])
92
+ @pytest.mark.parametrize("check", ["inf", "NaN", None])
93
+ @pytest.mark.parametrize("seed", [0, 123456])
94
+ @pytest.mark.parametrize(
95
+ "dataframe, queue", get_dataframes_and_queues("numpy,dpnp,dpctl")
96
+ )
97
+ def test_assert_finite_random_shape_and_location(
98
+ dtype, allow_nan, check, seed, dataframe, queue
99
+ ):
100
+ lb, ub = 2, 1048576 # ub is 2^20
101
+ rand.seed(seed)
102
+ X = rand.uniform(high=np.finfo(dtype).max, size=rand.randint(lb, ub)).astype(dtype)
103
+
104
+ if check:
105
+ loc = rand.randint(0, X.size - 1)
106
+ X[loc] = float(check)
107
+
108
+ X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
109
+
110
+ if check is None or (allow_nan and check == "NaN"):
111
+ assert_all_finite(X, allow_nan=allow_nan)
112
+ else:
113
+ msg_err = "Input contains " + ("infinity" if allow_nan else "NaN, infinity") + "."
114
+ with pytest.raises(ValueError, match=msg_err):
115
+ assert_all_finite(X, allow_nan=allow_nan)
116
+
117
+
118
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
119
+ @pytest.mark.parametrize("allow_nan", [False, True])
120
+ @pytest.mark.parametrize("check", ["inf", "NaN", None])
121
+ @pytest.mark.parametrize("seed", [0, 123456])
122
+ def test_assert_finite_sparse(dtype, allow_nan, check, seed):
123
+ lb, ub = 2, 2056
124
+ rand.seed(seed)
125
+ X = sp.random(
126
+ rand.randint(lb, ub),
127
+ rand.randint(lb, ub),
128
+ format="csr",
129
+ dtype=dtype,
130
+ random_state=rand.default_rng(seed),
131
+ )
132
+
133
+ if check:
134
+ locx = rand.randint(0, X.data.shape[0] - 1)
135
+ X.data[locx] = float(check)
136
+
137
+ if check is None or (allow_nan and check == "NaN"):
138
+ assert_all_finite(X, allow_nan=allow_nan)
139
+ else:
140
+ msg_err = "Input contains " + ("infinity" if allow_nan else "NaN, infinity") + "."
141
+ with pytest.raises(ValueError, match=msg_err):
142
+ assert_all_finite(X, allow_nan=allow_nan)
@@ -31,7 +31,12 @@ else:
31
31
  from sklearn.preprocessing import LabelEncoder
32
32
  from sklearn.utils.validation import check_array
33
33
 
34
- from daal4py.sklearn.utils.validation import _assert_all_finite
34
+ from daal4py.sklearn.utils.validation import (
35
+ _assert_all_finite as _daal4py_assert_all_finite,
36
+ )
37
+ from onedal import _backend
38
+ from onedal.common._policy import _get_policy
39
+ from onedal.datatypes import to_table
35
40
 
36
41
 
37
42
  class DataConversionWarning(UserWarning):
@@ -135,10 +140,10 @@ def _check_array(
135
140
  if force_all_finite:
136
141
  if sp.issparse(array):
137
142
  if hasattr(array, "data"):
138
- _assert_all_finite(array.data)
143
+ _daal4py_assert_all_finite(array.data)
139
144
  force_all_finite = False
140
145
  else:
141
- _assert_all_finite(array)
146
+ _daal4py_assert_all_finite(array)
142
147
  force_all_finite = False
143
148
  array = check_array(
144
149
  array=array,
@@ -153,15 +158,6 @@ def _check_array(
153
158
 
154
159
  if sp.issparse(array):
155
160
  return array
156
-
157
- # TODO: Convert this kind of arrays to a table like in daal4py
158
- if not array.flags.aligned and not array.flags.writeable:
159
- array = np.array(array.tolist())
160
-
161
- # TODO: If data is not contiguous copy to contiguous
162
- # Need implemeted numpy table in oneDAL
163
- if not array.flags.c_contiguous and not array.flags.f_contiguous:
164
- array = np.ascontiguousarray(array, array.dtype)
165
161
  return array
166
162
 
167
163
 
@@ -200,7 +196,7 @@ def _check_X_y(
200
196
  if y_numeric and y.dtype.kind == "O":
201
197
  y = y.astype(np.float64)
202
198
  if force_all_finite:
203
- _assert_all_finite(y)
199
+ _daal4py_assert_all_finite(y)
204
200
 
205
201
  lengths = [X.shape[0], y.shape[0]]
206
202
  uniques = np.unique(lengths)
@@ -285,7 +281,7 @@ def _type_of_target(y):
285
281
  # check float and contains non-integer float values
286
282
  if y.dtype.kind == "f" and np.any(y != y.astype(int)):
287
283
  # [.1, .2, 3] or [[.1, .2, 3]] or [[1., .2]] and not [1., 2., 3.]
288
- _assert_all_finite(y)
284
+ _daal4py_assert_all_finite(y)
289
285
  return "continuous" + suffix
290
286
 
291
287
  if (len(np.unique(y)) > 2) or (y.ndim >= 2 and len(y[0]) > 1):
@@ -438,3 +434,31 @@ def _is_csr(x):
438
434
  return isinstance(x, sp.csr_matrix) or (
439
435
  hasattr(sp, "csr_array") and isinstance(x, sp.csr_array)
440
436
  )
437
+
438
+
439
+ def _assert_all_finite(X, allow_nan=False, input_name=""):
440
+ policy = _get_policy(None, X)
441
+ X_t = to_table(X)
442
+ params = {
443
+ "fptype": X_t.dtype,
444
+ "method": "dense",
445
+ "allow_nan": allow_nan,
446
+ }
447
+ if not _backend.finiteness_checker.compute.compute(policy, params, X_t).finite:
448
+ type_err = "infinity" if allow_nan else "NaN, infinity"
449
+ padded_input_name = input_name + " " if input_name else ""
450
+ msg_err = f"Input {padded_input_name}contains {type_err}."
451
+ raise ValueError(msg_err)
452
+
453
+
454
+ def assert_all_finite(
455
+ X,
456
+ *,
457
+ allow_nan=False,
458
+ input_name="",
459
+ ):
460
+ _assert_all_finite(
461
+ X.data if sp.issparse(X) else X,
462
+ allow_nan=allow_nan,
463
+ input_name=input_name,
464
+ )
@@ -16,14 +16,27 @@
16
16
 
17
17
  import logging
18
18
  import os
19
- import sys
19
+ import re
20
20
  import warnings
21
21
  from abc import ABC
22
22
 
23
+ import sklearn
24
+
23
25
  from daal4py.sklearn._utils import (
24
26
  PatchingConditionsChain as daal4py_PatchingConditionsChain,
25
27
  )
26
- from daal4py.sklearn._utils import daal_check_version
28
+ from daal4py.sklearn._utils import daal_check_version, sklearn_check_version
29
+
30
+ # Note: if inheriting from '_HTMLDocumentationLinkMixin' here, it then doesn't matter
31
+ # the order of inheritance of classes for estimators when this is later subclassed,
32
+ # whereas if inheriting from something else, the subclass that inherits from this needs
33
+ # to be the first inherited class in estimators in order for it to take effect.
34
+ if sklearn_check_version("1.4"):
35
+ from sklearn.utils._estimator_html_repr import _HTMLDocumentationLinkMixin
36
+
37
+ BaseForHTMLDocLink = _HTMLDocumentationLinkMixin
38
+ else:
39
+ BaseForHTMLDocLink = ABC
27
40
 
28
41
 
29
42
  class PatchingConditionsChain(daal4py_PatchingConditionsChain):
@@ -106,27 +119,59 @@ def register_hyperparameters(hyperparameters_map):
106
119
  Adds `get_hyperparameters` method to class.
107
120
  """
108
121
 
109
- def wrap_class(estimator_class):
110
- def get_hyperparameters(self, op):
111
- return hyperparameters_map[op]
122
+ def decorator(cls):
123
+ """Add `get_hyperparameters()` static method"""
124
+
125
+ class StaticHyperparametersAccessor:
126
+ """Like a @staticmethod, but additionally raises a Warning when called on an instance."""
127
+
128
+ def __get__(self, instance, _):
129
+ if instance is not None:
130
+ warnings.warn(
131
+ "Hyperparameters are static variables and can not be modified per instance."
132
+ )
133
+ return self.get_hyperparameters
134
+
135
+ def get_hyperparameters(self, op):
136
+ return hyperparameters_map[op]
137
+
138
+ cls.get_hyperparameters = StaticHyperparametersAccessor()
139
+ return cls
140
+
141
+ return decorator
142
+
112
143
 
113
- estimator_class.get_hyperparameters = get_hyperparameters
114
- return estimator_class
144
+ # This abstract class is meant to generate a clickable doc link for classses
145
+ # in sklearnex that are not part of base scikit-learn.
146
+ class IntelEstimator(BaseForHTMLDocLink):
147
+ @property
148
+ def _doc_link_module(self) -> str:
149
+ return "sklearnex"
115
150
 
116
- return wrap_class
151
+ @property
152
+ def _doc_link_template(self) -> str:
153
+ module_path, _ = self.__class__.__module__.rsplit(".", 1)
154
+ class_name = self.__class__.__name__
155
+ return f"https://uxlfoundation.github.io/scikit-learn-intelex/latest/non-scikit-algorithms.html#{module_path}.{class_name}"
117
156
 
118
157
 
119
158
  # This abstract class is meant to generate a clickable doc link for classses
120
- # in sklearnex that are not part of base scikit-learn. It should be inherited
121
- # before inheriting from a scikit-learn estimator, otherwise will get overriden
122
- # by the estimator's original.
123
- class IntelEstimator(ABC):
159
+ # in sklearnex that have counterparts in scikit-learn.
160
+ class PatchableEstimator(BaseForHTMLDocLink):
124
161
  @property
125
162
  def _doc_link_module(self) -> str:
126
163
  return "sklearnex"
127
164
 
128
165
  @property
129
166
  def _doc_link_template(self) -> str:
167
+ if re.search(r"^\d\.\d\.\d$", sklearn.__version__):
168
+ sklearn_version_parts = sklearn.__version__.split(".")
169
+ doc_version_url = sklearn_version_parts[0] + "." + sklearn_version_parts[1]
170
+ else:
171
+ doc_version_url = "stable"
130
172
  module_path, _ = self.__class__.__module__.rsplit(".", 1)
173
+ module_path = re.sub("sklearnex", "sklearn", module_path)
131
174
  class_name = self.__class__.__name__
132
- return f"https://intel.github.io/scikit-learn-intelex/latest/non-scikit-algorithms.html#{module_path}.{class_name}"
175
+ # for TSNE, which re-uses daal4py
176
+ module_path = re.sub(r"daal4py\.", "", module_path)
177
+ return f"https://scikit-learn.org/{doc_version_url}/modules/generated/{module_path}.{class_name}.html"
@@ -17,13 +17,15 @@
17
17
  import warnings
18
18
 
19
19
  import numpy as np
20
+ from scipy.sparse import issparse
20
21
  from sklearn.base import BaseEstimator
21
22
  from sklearn.utils import check_array
22
23
  from sklearn.utils.validation import _check_sample_weight
23
24
 
24
25
  from daal4py.sklearn._n_jobs_support import control_n_jobs
25
- from daal4py.sklearn._utils import sklearn_check_version
26
+ from daal4py.sklearn._utils import daal_check_version, sklearn_check_version
26
27
  from onedal.basic_statistics import BasicStatistics as onedal_BasicStatistics
28
+ from onedal.utils import _is_csr
27
29
 
28
30
  from .._device_offload import dispatch
29
31
  from .._utils import IntelEstimator, PatchingConditionsChain
@@ -62,13 +64,13 @@ class BasicStatistics(IntelEstimator, BaseEstimator):
62
64
  mean_ : ndarray of shape (n_features,)
63
65
  Mean of each feature over all samples.
64
66
  variance_ : ndarray of shape (n_features,)
65
- Variance of each feature over all samples.
67
+ Variance of each feature over all samples. Bessel's correction is used.
66
68
  variation_ : ndarray of shape (n_features,)
67
- Variation of each feature over all samples.
69
+ Variation of each feature over all samples. Bessel's correction is used.
68
70
  sum_squares_ : ndarray of shape (n_features,)
69
71
  Sum of squares for each feature over all samples.
70
72
  standard_deviation_ : ndarray of shape (n_features,)
71
- Standard deviation of each feature over all samples.
73
+ Unbiased standard deviation of each feature over all samples. Bessel's correction is used.
72
74
  sum_squares_centered_ : ndarray of shape (n_features,)
73
75
  Centered sum of squares for each feature over all samples.
74
76
  second_order_raw_moment_ : ndarray of shape (n_features,)
@@ -166,21 +168,50 @@ class BasicStatistics(IntelEstimator, BaseEstimator):
166
168
  f"'{self.__class__.__name__}' object has no attribute '{attr}'"
167
169
  )
168
170
 
169
- def _onedal_supported(self, method_name, *data):
171
+ def _onedal_cpu_supported(self, method_name, *data):
170
172
  patching_status = PatchingConditionsChain(
171
173
  f"sklearnex.basic_statistics.{self.__class__.__name__}.{method_name}"
172
174
  )
173
175
  return patching_status
174
176
 
175
- _onedal_cpu_supported = _onedal_supported
176
- _onedal_gpu_supported = _onedal_supported
177
+ def _onedal_gpu_supported(self, method_name, *data):
178
+ patching_status = PatchingConditionsChain(
179
+ f"sklearnex.basic_statistics.{self.__class__.__name__}.{method_name}"
180
+ )
181
+ X, sample_weight = data
182
+
183
+ is_data_supported = not issparse(X) or (
184
+ _is_csr(X) and daal_check_version((2025, "P", 200))
185
+ )
186
+
187
+ is_sample_weight_supported = sample_weight is None or not issparse(X)
188
+
189
+ patching_status.and_conditions(
190
+ [
191
+ (
192
+ is_sample_weight_supported,
193
+ "Sample weights are not supported for CSR data format",
194
+ ),
195
+ (
196
+ is_data_supported,
197
+ "Supported data formats: Dense, CSR (oneDAL version >= 2025.2.0).",
198
+ ),
199
+ ]
200
+ )
201
+ return patching_status
177
202
 
178
203
  def _onedal_fit(self, X, sample_weight=None, queue=None):
179
204
  if sklearn_check_version("1.2"):
180
205
  self._validate_params()
181
206
 
182
207
  if sklearn_check_version("1.0"):
183
- X = validate_data(self, X, dtype=[np.float64, np.float32], ensure_2d=False)
208
+ X = validate_data(
209
+ self,
210
+ X,
211
+ dtype=[np.float64, np.float32],
212
+ ensure_2d=False,
213
+ accept_sparse="csr",
214
+ )
184
215
  else:
185
216
  X = check_array(X, dtype=[np.float64, np.float32])
186
217
 
@@ -103,6 +103,13 @@ class IncrementalBasicStatistics(IntelEstimator, BaseEstimator):
103
103
  ----
104
104
  Attribute exists only if corresponding result option has been provided.
105
105
 
106
+ Note
107
+ ----
108
+ Serializing instances of this class will trigger a forced finalization of calculations.
109
+ Since finalize_fit can't be dispatched without directly provided queue
110
+ and the dispatching policy can't be serialized, the computation is finalized
111
+ during serialization call and the policy is not saved in serialized data.
112
+
106
113
  Note
107
114
  ----
108
115
  Names of attributes without the trailing underscore are