scikit-learn-intelex 2025.7.0__py310-none-win_amd64.whl → 2025.8.0__py310-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 (271) hide show
  1. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/_daal4py.cp310-win_amd64.pyd +0 -0
  2. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/mpi_transceiver.cp310-win_amd64.pyd +0 -0
  3. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_loss.py +4 -4
  4. scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +616 -0
  5. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/_device_offload.py +41 -40
  6. scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp310-win_amd64.pyd +0 -0
  7. scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp310-win_amd64.pyd +0 -0
  8. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/basic_statistics/basic_statistics.py +52 -76
  9. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/basic_statistics/incremental_basic_statistics.py +26 -41
  10. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/basic_statistics/tests/test_basic_statistics.py +6 -7
  11. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/basic_statistics/tests/test_incremental_basic_statistics.py +11 -11
  12. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/cluster/dbscan.py +7 -25
  13. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/cluster/kmeans.py +1 -1
  14. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/common/hyperparameters.py +31 -11
  15. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/common/tests/test_sycl.py +5 -0
  16. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/covariance/covariance.py +8 -10
  17. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/datatypes/__init__.py +6 -3
  18. scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +156 -0
  19. scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/onedal/datatypes/_dlpack.py +61 -0
  20. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/datatypes/_sycl_usm.py +9 -24
  21. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/datatypes/tests/test_data.py +16 -17
  22. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/ensemble/forest.py +5 -5
  23. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/linear_model/incremental_linear_model.py +48 -160
  24. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/linear_model/linear_model.py +75 -188
  25. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/linear_model/logistic_regression.py +5 -10
  26. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_linear_regression.py +10 -17
  27. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/tests/test_common.py +14 -0
  28. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/utils/_array_api.py +3 -0
  29. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/utils/_sycl_queue_manager.py +51 -25
  30. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/utils/_third_party.py +52 -2
  31. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/__init__.py +2 -1
  32. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/_device_offload.py +13 -12
  33. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/_utils.py +31 -4
  34. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +26 -37
  35. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +33 -42
  36. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +30 -27
  37. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/cluster/k_means.py +1 -0
  38. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +2 -0
  39. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/decomposition/pca.py +7 -2
  40. scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +110 -0
  41. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +1 -6
  42. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +8 -2
  43. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +22 -7
  44. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +2 -0
  45. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +76 -68
  46. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/incremental_ridge.py +69 -53
  47. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/linear.py +53 -41
  48. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +8 -0
  49. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/ridge.py +42 -31
  50. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +27 -61
  51. scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +577 -0
  52. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +8 -6
  53. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +3 -4
  54. scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +112 -0
  55. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +7 -4
  56. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +6 -3
  57. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +12 -8
  58. scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +26 -0
  59. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_covariance_spmd.py +11 -4
  60. scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +299 -0
  61. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/tests/test_forest_spmd.py +21 -4
  62. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +7 -4
  63. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +16 -8
  64. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +12 -4
  65. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +31 -0
  66. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/test_config.py +55 -6
  67. scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/sklearnex/tests/test_hyperparameters.py +111 -0
  68. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/test_patching.py +13 -13
  69. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/utils/base.py +3 -21
  70. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/utils/_array_api.py +71 -0
  71. scikit_learn_intelex-2025.8.0.data/data/Lib/site-packages/sklearnex/utils/parallel.py +97 -0
  72. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/utils/validation.py +19 -1
  73. {scikit_learn_intelex-2025.7.0.dist-info → scikit_learn_intelex-2025.8.0.dist-info}/METADATA +2 -2
  74. scikit_learn_intelex-2025.8.0.dist-info/RECORD +259 -0
  75. scikit_learn_intelex-2025.7.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +0 -1039
  76. scikit_learn_intelex-2025.7.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp310-win_amd64.pyd +0 -0
  77. scikit_learn_intelex-2025.7.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp310-win_amd64.pyd +0 -0
  78. scikit_learn_intelex-2025.7.0.data/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +0 -110
  79. scikit_learn_intelex-2025.7.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +0 -115
  80. scikit_learn_intelex-2025.7.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +0 -134
  81. scikit_learn_intelex-2025.7.0.data/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +0 -119
  82. scikit_learn_intelex-2025.7.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +0 -50
  83. scikit_learn_intelex-2025.7.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +0 -71
  84. scikit_learn_intelex-2025.7.0.data/data/Lib/site-packages/sklearnex/tests/test_hyperparameters.py +0 -43
  85. scikit_learn_intelex-2025.7.0.data/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -59
  86. scikit_learn_intelex-2025.7.0.dist-info/RECORD +0 -258
  87. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/__init__.py +0 -0
  88. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/__main__.py +0 -0
  89. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/mb/__init__.py +0 -0
  90. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/mb/gbt_convertors.py +0 -0
  91. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/mb/logistic_regression_builders.py +0 -0
  92. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/mb/tree_based_builders.py +0 -0
  93. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/__init__.py +0 -0
  94. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/_n_jobs_support.py +0 -0
  95. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/_utils.py +0 -0
  96. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/__init__.py +0 -0
  97. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/dbscan.py +0 -0
  98. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/k_means.py +0 -0
  99. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/cluster/tests/test_dbscan.py +0 -0
  100. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/decomposition/__init__.py +0 -0
  101. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/decomposition/_pca.py +0 -0
  102. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/AdaBoostClassifier.py +0 -0
  103. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/GBTDAAL.py +0 -0
  104. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/__init__.py +0 -0
  105. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/_forest.py +0 -0
  106. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/ensemble/tests/test_decision_forest.py +0 -0
  107. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/__init__.py +0 -0
  108. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/_coordinate_descent.py +0 -0
  109. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/_linear.py +0 -0
  110. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/_ridge.py +0 -0
  111. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/coordinate_descent.py +0 -0
  112. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/linear.py +0 -0
  113. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/ridge.py +0 -0
  114. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_linear.py +0 -0
  115. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_ridge.py +0 -0
  116. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/manifold/__init__.py +0 -0
  117. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/manifold/_t_sne.py +0 -0
  118. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/metrics/__init__.py +0 -0
  119. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/metrics/_pairwise.py +0 -0
  120. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/metrics/_ranking.py +0 -0
  121. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/model_selection/__init__.py +0 -0
  122. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/model_selection/_split.py +0 -0
  123. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/model_selection/tests/test_split.py +0 -0
  124. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/__init__.py +0 -0
  125. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/dispatcher.py +0 -0
  126. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/_models_info.py +0 -0
  127. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_monkeypatch.py +0 -0
  128. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_patching.py +0 -0
  129. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/utils/_launch_algorithms.py +0 -0
  130. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/__init__.py +0 -0
  131. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_base.py +0 -0
  132. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_classification.py +0 -0
  133. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_regression.py +0 -0
  134. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/_unsupervised.py +0 -0
  135. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/neighbors/tests/test_kneighbors.py +0 -0
  136. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/svm/__init__.py +0 -0
  137. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/svm/svm.py +0 -0
  138. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/__init__.py +0 -0
  139. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/base.py +0 -0
  140. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/tests/test_utils.py +0 -0
  141. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/daal4py/sklearn/utils/validation.py +0 -0
  142. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/__init__.py +0 -0
  143. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/_config.py +0 -0
  144. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/basic_statistics/__init__.py +0 -0
  145. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/basic_statistics/tests/utils.py +0 -0
  146. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/cluster/__init__.py +0 -0
  147. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/cluster/kmeans_init.py +0 -0
  148. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/cluster/tests/test_dbscan.py +0 -0
  149. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/cluster/tests/test_kmeans.py +0 -0
  150. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/cluster/tests/test_kmeans_init.py +0 -0
  151. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/common/_backend.py +0 -0
  152. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/common/_estimator_checks.py +0 -0
  153. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/common/_mixin.py +0 -0
  154. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/covariance/__init__.py +0 -0
  155. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/covariance/incremental_covariance.py +0 -0
  156. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/covariance/tests/test_covariance.py +0 -0
  157. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/covariance/tests/test_incremental_covariance.py +0 -0
  158. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/datatypes/tests/common.py +0 -0
  159. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/decomposition/__init__.py +0 -0
  160. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/decomposition/incremental_pca.py +0 -0
  161. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/decomposition/pca.py +0 -0
  162. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/decomposition/tests/test_incremental_pca.py +0 -0
  163. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/ensemble/__init__.py +0 -0
  164. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/ensemble/tests/test_random_forest.py +0 -0
  165. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/linear_model/__init__.py +0 -0
  166. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_linear_regression.py +0 -0
  167. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_ridge_regression.py +0 -0
  168. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_logistic_regression.py +0 -0
  169. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/linear_model/tests/test_ridge.py +0 -0
  170. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/neighbors/__init__.py +0 -0
  171. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/neighbors/neighbors.py +0 -0
  172. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/neighbors/tests/test_knn_classification.py +0 -0
  173. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/primitives/__init__.py +0 -0
  174. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/primitives/get_tree.py +0 -0
  175. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/primitives/kernel_functions.py +0 -0
  176. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/primitives/tests/test_kernel_functions.py +0 -0
  177. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/svm/__init__.py +0 -0
  178. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/svm/svm.py +0 -0
  179. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/svm/tests/test_csr_svm.py +0 -0
  180. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/svm/tests/test_nusvc.py +0 -0
  181. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/svm/tests/test_nusvr.py +0 -0
  182. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/svm/tests/test_svc.py +0 -0
  183. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/svm/tests/test_svr.py +0 -0
  184. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/tests/utils/_dataframes_support.py +0 -0
  185. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/tests/utils/_device_selection.py +0 -0
  186. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/utils/tests/test_validation.py +0 -0
  187. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/onedal/utils/validation.py +0 -0
  188. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/__main__.py +0 -0
  189. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/_config.py +0 -0
  190. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/base.py +0 -0
  191. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +0 -0
  192. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +0 -0
  193. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +0 -0
  194. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +0 -0
  195. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +0 -0
  196. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +0 -0
  197. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/conftest.py +0 -0
  198. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/covariance/__init__.py +0 -0
  199. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +0 -0
  200. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -0
  201. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +0 -0
  202. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -0
  203. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +0 -0
  204. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +0 -0
  205. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/__init__.py +0 -0
  206. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +0 -0
  207. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_ridge.py +0 -0
  208. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_ridge.py +0 -0
  209. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -0
  210. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/manifold/t_sne.py +0 -0
  211. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +0 -0
  212. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -0
  213. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +0 -0
  214. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +0 -0
  215. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +0 -0
  216. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +0 -0
  217. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +0 -0
  218. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +0 -0
  219. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +0 -0
  220. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/neighbors/_lof.py +0 -0
  221. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +0 -0
  222. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +0 -0
  223. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +0 -0
  224. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +0 -0
  225. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/preview/__init__.py +0 -0
  226. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +0 -0
  227. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +0 -0
  228. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +0 -0
  229. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +0 -0
  230. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +0 -0
  231. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +0 -0
  232. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +0 -0
  233. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +0 -0
  234. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +0 -0
  235. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +0 -0
  236. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +0 -0
  237. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +0 -0
  238. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +0 -0
  239. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/incremental_covariance.py +0 -0
  240. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +0 -0
  241. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/__init__.py +0 -0
  242. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/incremental_pca.py +0 -0
  243. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +0 -0
  244. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +0 -0
  245. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_pca_spmd.py +0 -0
  246. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +0 -0
  247. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +0 -0
  248. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/incremental_linear_model.py +0 -0
  249. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +0 -0
  250. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +0 -0
  251. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +0 -0
  252. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +0 -0
  253. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -0
  254. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/svm/_common.py +0 -0
  255. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +0 -0
  256. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +0 -0
  257. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +0 -0
  258. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +0 -0
  259. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/test_common.py +0 -0
  260. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +0 -0
  261. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +0 -0
  262. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +0 -0
  263. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/test_parallel.py +0 -0
  264. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +0 -0
  265. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/utils/__init__.py +0 -0
  266. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/tests/utils/spmd.py +0 -0
  267. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/utils/__init__.py +0 -0
  268. {scikit_learn_intelex-2025.7.0.data → scikit_learn_intelex-2025.8.0.data}/data/Lib/site-packages/sklearnex/utils/tests/test_validation.py +0 -0
  269. {scikit_learn_intelex-2025.7.0.dist-info → scikit_learn_intelex-2025.8.0.dist-info}/LICENSE.txt +0 -0
  270. {scikit_learn_intelex-2025.7.0.dist-info → scikit_learn_intelex-2025.8.0.dist-info}/WHEEL +0 -0
  271. {scikit_learn_intelex-2025.7.0.dist-info → scikit_learn_intelex-2025.8.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,577 @@
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 warnings
18
+
19
+ import numpy as np
20
+ import pytest
21
+ from numpy.testing import assert_allclose
22
+ from scipy.sparse import csr_matrix
23
+ from sklearn.datasets import load_breast_cancer, load_iris, make_classification
24
+ from sklearn.exceptions import ConvergenceWarning
25
+ from sklearn.linear_model import LogisticRegression as _sklearn_LogisticRegression
26
+ from sklearn.metrics import accuracy_score, log_loss
27
+ from sklearn.model_selection import train_test_split
28
+
29
+ from daal4py.sklearn._utils import daal_check_version
30
+ from onedal.tests.utils._dataframes_support import (
31
+ _as_numpy,
32
+ _convert_to_dataframe,
33
+ get_dataframes_and_queues,
34
+ get_queues,
35
+ )
36
+ from sklearnex import config_context
37
+
38
+
39
+ def prepare_input(X, y, dataframe, queue):
40
+ X_train, X_test, y_train, y_test = train_test_split(
41
+ X, y, train_size=0.8, random_state=42
42
+ )
43
+ X_train = _convert_to_dataframe(X_train, sycl_queue=queue, target_df=dataframe)
44
+ y_train = _convert_to_dataframe(y_train, sycl_queue=queue, target_df=dataframe)
45
+ X_test = _convert_to_dataframe(X_test, sycl_queue=queue, target_df=dataframe)
46
+ return X_train, X_test, y_train, y_test
47
+
48
+
49
+ @pytest.mark.parametrize(
50
+ "dataframe,queue", get_dataframes_and_queues(device_filter_="cpu")
51
+ )
52
+ def test_sklearnex_multiclass_classification(dataframe, queue):
53
+ from sklearnex.linear_model import LogisticRegression
54
+
55
+ X, y = load_iris(return_X_y=True)
56
+ X_train, X_test, y_train, y_test = prepare_input(X, y, dataframe, queue=queue)
57
+
58
+ logreg = LogisticRegression(fit_intercept=True, solver="lbfgs", max_iter=200).fit(
59
+ X_train, y_train
60
+ )
61
+
62
+ if daal_check_version((2024, "P", 1)):
63
+ assert "sklearnex" in logreg.__module__
64
+ else:
65
+ assert "daal4py" in logreg.__module__
66
+
67
+ y_pred = _as_numpy(logreg.predict(X_test))
68
+ assert accuracy_score(y_test, y_pred) > 0.99
69
+
70
+
71
+ @pytest.mark.parametrize(
72
+ "dataframe,queue",
73
+ get_dataframes_and_queues(),
74
+ )
75
+ def test_sklearnex_binary_classification(dataframe, queue):
76
+ from sklearnex.linear_model import LogisticRegression
77
+
78
+ X, y = load_breast_cancer(return_X_y=True)
79
+ X_train, X_test, y_train, y_test = prepare_input(X, y, dataframe, queue=queue)
80
+
81
+ with warnings.catch_warnings():
82
+ warnings.simplefilter("ignore", category=ConvergenceWarning)
83
+ logreg = LogisticRegression(
84
+ fit_intercept=True, solver="newton-cg", max_iter=100
85
+ ).fit(X_train, y_train)
86
+
87
+ if daal_check_version((2024, "P", 1)):
88
+ assert "sklearnex" in logreg.__module__
89
+ else:
90
+ assert "daal4py" in logreg.__module__
91
+ if (
92
+ dataframe != "numpy"
93
+ and queue is not None
94
+ and queue.sycl_device.is_gpu
95
+ and daal_check_version((2024, "P", 1))
96
+ ):
97
+ # fit was done on gpu
98
+ assert hasattr(logreg, "_onedal_estimator")
99
+
100
+ y_pred = _as_numpy(logreg.predict(X_test))
101
+ assert accuracy_score(y_test, y_pred) > 0.95
102
+
103
+
104
+ if daal_check_version((2024, "P", 700)):
105
+
106
+ @pytest.mark.parametrize("queue", get_queues("gpu"))
107
+ @pytest.mark.parametrize("dtype", [np.float32, np.float64])
108
+ @pytest.mark.parametrize(
109
+ "dims", [(3007, 17, 0.05), (50000, 100, 0.01), (512, 10, 0.5)]
110
+ )
111
+ def test_csr(queue, dtype, dims):
112
+ from sklearnex.linear_model import LogisticRegression
113
+
114
+ n, p, density = dims
115
+
116
+ # Create sparse dataset for classification
117
+ X, y = make_classification(n, p, random_state=42)
118
+ X = X.astype(dtype)
119
+ y = y.astype(dtype)
120
+ np.random.seed(2007 + n + p)
121
+ mask = np.random.binomial(1, density, (n, p))
122
+ X = X * mask
123
+ X_sp = csr_matrix(X)
124
+
125
+ model = LogisticRegression(fit_intercept=True, solver="newton-cg")
126
+ model_sp = LogisticRegression(fit_intercept=True, solver="newton-cg")
127
+
128
+ with config_context(target_offload="gpu:0"):
129
+ model.fit(X, y)
130
+ pred = model.predict(X)
131
+ prob = model.predict_proba(X)
132
+ model_sp.fit(X_sp, y)
133
+ pred_sp = model_sp.predict(X_sp)
134
+ prob_sp = model_sp.predict_proba(X_sp)
135
+
136
+ rtol = 2e-4
137
+ assert_allclose(pred, pred_sp, rtol=rtol)
138
+ assert_allclose(prob, prob_sp, rtol=rtol)
139
+ assert_allclose(model.coef_, model_sp.coef_, rtol=rtol)
140
+ assert_allclose(model.intercept_, model_sp.intercept_, rtol=rtol)
141
+
142
+
143
+ # Note: this is adapted from a test in scikit-learn:
144
+ # https://github.com/scikit-learn/scikit-learn/blob/9b7a86fb6d45905eec7b7afd01d3ae32643c8180/sklearn/linear_model/tests/test_logistic.py#L1494
145
+ # Here we don't always expect them to match exactly due to differences in numerical precision
146
+ # and how each library deals with large/small numbers, but oftentimes the results from oneDAL
147
+ # end up being better in terms of resulting function values (for the objective function being
148
+ # minimized), hence this test will try to look at function values if coefficients aren't
149
+ # sufficiently similar.
150
+ def test_logistic_regression_is_correct():
151
+ from sklearnex.linear_model import LogisticRegression
152
+
153
+ X = np.array([[-1, 0], [0, 1], [1, 1]])
154
+ y = np.array([0, 1, 1])
155
+ C = 3.0
156
+ model_sklearn = _sklearn_LogisticRegression(C=C).fit(X, y)
157
+ model_sklearnex = LogisticRegression(C=C).fit(X, y)
158
+
159
+ try:
160
+ np.testing.assert_allclose(model_sklearnex.coef_, model_sklearn.coef_)
161
+ np.testing.assert_allclose(model_sklearnex.intercept_, model_sklearn.intercept_)
162
+ except AssertionError:
163
+
164
+ def logistic_model_function(predicted_probabilities, coefs):
165
+ neg_log_likelihood = X.shape[0] * log_loss(y, predicted_probabilities)
166
+ sum_squares_coefs = np.dot(coefs.reshape(-1), coefs.reshape(-1))
167
+ return C * neg_log_likelihood + 0.5 * sum_squares_coefs
168
+
169
+ fn_sklearn = logistic_model_function(
170
+ model_sklearn.predict_proba(X)[:, 1], model_sklearn.coef_
171
+ )
172
+ fn_sklearnex = logistic_model_function(
173
+ model_sklearnex.predict_proba(X)[:, 1], model_sklearnex.coef_
174
+ )
175
+ assert fn_sklearnex <= fn_sklearn
176
+
177
+
178
+ def test_multinomial_logistic_regression_is_correct():
179
+ from sklearnex.linear_model import LogisticRegression
180
+
181
+ X = np.array([[-1, 0], [0, 1], [1, 1]])
182
+ y = np.array([2, 1, 0])
183
+ C = 3.0
184
+ with warnings.catch_warnings():
185
+ warnings.simplefilter("ignore", category=FutureWarning)
186
+ model_sklearn = _sklearn_LogisticRegression(C=C, multi_class="multinomial").fit(
187
+ X, y
188
+ )
189
+ model_sklearnex = LogisticRegression(C=C, multi_class="multinomial").fit(X, y)
190
+
191
+ try:
192
+ np.testing.assert_allclose(model_sklearnex.coef_, model_sklearn.coef_)
193
+ np.testing.assert_allclose(model_sklearnex.intercept_, model_sklearn.intercept_)
194
+ except AssertionError:
195
+
196
+ def logistic_model_function(predicted_probabilities, coefs):
197
+ neg_log_likelihood = X.shape[0] * log_loss(y, predicted_probabilities)
198
+ sum_squares_coefs = np.dot(coefs.reshape(-1), coefs.reshape(-1))
199
+ return C * neg_log_likelihood + 0.5 * sum_squares_coefs
200
+
201
+ fn_sklearn = logistic_model_function(
202
+ model_sklearn.predict_proba(X), model_sklearn.coef_
203
+ )
204
+ fn_sklearnex = logistic_model_function(
205
+ model_sklearnex.predict_proba(X), model_sklearnex.coef_
206
+ )
207
+ assert fn_sklearnex <= fn_sklearn
208
+
209
+
210
+ # Here, scikit-learn does a theoretically incorrect calculation in which
211
+ # they set the predictions for the 'negative' class as the negative of the
212
+ # predictions for the positive class instead of all-zeros. The idea is to
213
+ # match theirs, which is done by falling back. This test ensures that the
214
+ # predictions match with sklearn in case it isn't done during conformance tests.
215
+ @pytest.mark.parametrize("fit_intercept", [False, True])
216
+ @pytest.mark.parametrize("C", [1, 0.1])
217
+ @pytest.mark.allow_sklearn_fallback
218
+ def test_binary_multinomial_probabilities(fit_intercept, C):
219
+ from sklearnex.linear_model import LogisticRegression
220
+
221
+ # Adapted from this test:
222
+ # https://github.com/scikit-learn/scikit-learn/blob/baf828ca126bcb2c0ad813226963621cafe38adb/sklearn/utils/estimator_checks.py#L963
223
+ X = np.array(
224
+ [
225
+ [1, 3],
226
+ [1, 3],
227
+ [1, 3],
228
+ [1, 3],
229
+ [2, 1],
230
+ [2, 1],
231
+ [2, 1],
232
+ [2, 1],
233
+ [3, 3],
234
+ [3, 3],
235
+ [3, 3],
236
+ [3, 3],
237
+ [4, 1],
238
+ [4, 1],
239
+ [4, 1],
240
+ [4, 1],
241
+ ],
242
+ dtype=np.float64,
243
+ )
244
+ y_binary = np.array([1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 2, 2], dtype=int)
245
+
246
+ with warnings.catch_warnings():
247
+ warnings.simplefilter("ignore")
248
+ model_sklearnex = LogisticRegression(
249
+ C=C, fit_intercept=fit_intercept, multi_class="multinomial"
250
+ ).fit(X, y_binary)
251
+ model_sklearn = _sklearn_LogisticRegression(
252
+ C=C, fit_intercept=fit_intercept, multi_class="multinomial"
253
+ ).fit(X, y_binary)
254
+ np.testing.assert_allclose(
255
+ model_sklearnex.predict_proba(X),
256
+ model_sklearn.predict_proba(X),
257
+ rtol=1e-2,
258
+ atol=1e-3,
259
+ )
260
+
261
+
262
+ # Note: some solvers have an internal state, such as previous gradients,
263
+ # which is not preserved across warm starts and which influences the
264
+ # optimization routines. For these, a warm-started call with the coefficients
265
+ # from a previous iterations will not be equal to a cold-start call with
266
+ # one more iteration.
267
+ # Note2: usually, passing weights will cause the procedure to fall back to
268
+ # stock scikit-learn. We want to check that fallbacks also handle warm starts
269
+ # correctly when falling back.
270
+ @pytest.mark.parametrize("fit_intercept", [False, True])
271
+ @pytest.mark.parametrize("n_classes", [2, 3])
272
+ @pytest.mark.parametrize("multi_class", ["auto", "multinomial"])
273
+ @pytest.mark.parametrize("weighted", [False, True])
274
+ @pytest.mark.allow_sklearn_fallback
275
+ def test_warm_start_stateful(fit_intercept, n_classes, multi_class, weighted):
276
+ from sklearnex.linear_model import LogisticRegression
277
+
278
+ X, y = make_classification(
279
+ random_state=123,
280
+ n_classes=n_classes,
281
+ n_clusters_per_class=1,
282
+ n_features=2,
283
+ n_redundant=0,
284
+ # Note: oneDAL and scikit-learn deal with large numbers differently
285
+ # in the calculations, so when comparing against sklearn, we want
286
+ # to avoid ending up with large numbers in the computations.
287
+ class_sep=0.25,
288
+ )
289
+
290
+ # Note1: these will throw warnings due to reaching the maximum
291
+ # number of iterations without converging, which is expected
292
+ # given that those are being severely limited for the tests.
293
+ # Note2: this will first compare the results after one iteration, and
294
+ # if those already differ too much (which can be the case given numerical
295
+ # differences), will then skip the rest of test that checks the warm starts.
296
+ with warnings.catch_warnings():
297
+ warnings.simplefilter("ignore")
298
+ model1 = _sklearn_LogisticRegression(
299
+ solver="lbfgs",
300
+ fit_intercept=fit_intercept,
301
+ multi_class=multi_class,
302
+ max_iter=1,
303
+ warm_start=True,
304
+ ).fit(
305
+ X,
306
+ y,
307
+ np.ones(X.shape[0]) if weighted else None,
308
+ )
309
+ model2 = LogisticRegression(
310
+ solver="lbfgs",
311
+ fit_intercept=fit_intercept,
312
+ multi_class=multi_class,
313
+ max_iter=1,
314
+ warm_start=True,
315
+ ).fit(
316
+ X,
317
+ y,
318
+ np.ones(X.shape[0]) if weighted else None,
319
+ )
320
+
321
+ try:
322
+ np.testing.assert_allclose(model1.coef_, model2.coef_)
323
+ except AssertionError:
324
+ pytest.skip("Too large numerical differences for further comparisons")
325
+
326
+ with warnings.catch_warnings():
327
+ warnings.simplefilter("ignore")
328
+ model1.fit(
329
+ X,
330
+ y,
331
+ np.ones(X.shape[0]) if weighted else None,
332
+ )
333
+ model2.fit(
334
+ X,
335
+ y,
336
+ np.ones(X.shape[0]) if weighted else None,
337
+ )
338
+
339
+ np.testing.assert_allclose(model1.coef_, model2.coef_)
340
+ if fit_intercept:
341
+ if n_classes == 2:
342
+ np.testing.assert_allclose(model1.intercept_, model2.intercept_)
343
+ else:
344
+ # Note: softmax function is invariable to shifting by a constant
345
+ intercepts1 = model1.intercept_ - model1.intercept_.mean()
346
+ intercepts2 = model2.intercept_ - model2.intercept_.mean()
347
+ np.testing.assert_allclose(intercepts1, intercepts2)
348
+
349
+
350
+ # Note: other solvers do not have any internal state and are supposed to yield the
351
+ # same result after one iteration given the current coefficients.
352
+ @pytest.mark.parametrize("fit_intercept", [False, True])
353
+ @pytest.mark.parametrize("multi_class", ["ovr", "multinomial"])
354
+ @pytest.mark.parametrize("weighted", [False, True])
355
+ @pytest.mark.allow_sklearn_fallback
356
+ def test_warm_start_binary(fit_intercept, multi_class, weighted):
357
+ from sklearnex.linear_model import LogisticRegression
358
+
359
+ X, y = make_classification(
360
+ random_state=123,
361
+ n_classes=2,
362
+ n_clusters_per_class=1,
363
+ n_features=2,
364
+ n_redundant=0,
365
+ class_sep=0.5,
366
+ )
367
+
368
+ with warnings.catch_warnings():
369
+ warnings.simplefilter("ignore")
370
+ model1 = LogisticRegression(
371
+ random_state=123,
372
+ solver="newton-cg",
373
+ fit_intercept=fit_intercept,
374
+ multi_class=multi_class,
375
+ max_iter=2,
376
+ ).fit(
377
+ X,
378
+ y,
379
+ np.ones(X.shape[0]) if weighted else None,
380
+ )
381
+ model2 = (
382
+ LogisticRegression(
383
+ random_state=123,
384
+ solver="newton-cg",
385
+ fit_intercept=fit_intercept,
386
+ multi_class=multi_class,
387
+ max_iter=1,
388
+ warm_start=True,
389
+ )
390
+ .fit(
391
+ X,
392
+ y,
393
+ np.ones(X.shape[0]) if weighted else None,
394
+ )
395
+ .fit(
396
+ X,
397
+ y,
398
+ np.ones(X.shape[0]) if weighted else None,
399
+ )
400
+ )
401
+
402
+ np.testing.assert_allclose(model1.coef_, model2.coef_)
403
+ if fit_intercept:
404
+ np.testing.assert_allclose(model1.intercept_, model2.intercept_)
405
+
406
+
407
+ @pytest.mark.parametrize("fit_intercept", [False, True])
408
+ @pytest.mark.parametrize("multi_class", ["ovr", "multinomial"])
409
+ @pytest.mark.parametrize("weighted", [False, True])
410
+ @pytest.mark.allow_sklearn_fallback
411
+ def test_warm_start_multinomial(fit_intercept, multi_class, weighted):
412
+ from sklearnex.linear_model import LogisticRegression
413
+
414
+ X, y = make_classification(
415
+ random_state=123,
416
+ n_classes=3,
417
+ n_clusters_per_class=1,
418
+ n_features=2,
419
+ n_redundant=0,
420
+ class_sep=0.5,
421
+ )
422
+
423
+ with warnings.catch_warnings():
424
+ warnings.simplefilter("ignore")
425
+ model1 = LogisticRegression(
426
+ random_state=123,
427
+ solver="newton-cg",
428
+ fit_intercept=fit_intercept,
429
+ multi_class=multi_class,
430
+ max_iter=2,
431
+ ).fit(
432
+ X,
433
+ y,
434
+ np.ones(X.shape[0]) if weighted else None,
435
+ )
436
+ model2 = (
437
+ LogisticRegression(
438
+ random_state=123,
439
+ solver="newton-cg",
440
+ fit_intercept=fit_intercept,
441
+ multi_class=multi_class,
442
+ max_iter=1,
443
+ warm_start=True,
444
+ )
445
+ .fit(
446
+ X,
447
+ y,
448
+ np.ones(X.shape[0]) if weighted else None,
449
+ )
450
+ .fit(
451
+ X,
452
+ y,
453
+ np.ones(X.shape[0]) if weighted else None,
454
+ )
455
+ )
456
+
457
+ np.testing.assert_allclose(model1.coef_, model2.coef_)
458
+ if fit_intercept:
459
+ # Note: softmax function is invariable to shifting by a constant
460
+ intercepts1 = model1.intercept_ - model1.intercept_.mean()
461
+ intercepts2 = model2.intercept_ - model2.intercept_.mean()
462
+ np.testing.assert_allclose(intercepts1, intercepts2)
463
+
464
+
465
+ # This is a bit different from the others - it just aims to test that it
466
+ # is processing the regularization correctly under all circumstances, and
467
+ # that it is not multiplying or dividing the coefficients by two when it
468
+ # shouldn't do it.
469
+ # It has some overlap with the tests at the beginning, but it is only tested
470
+ # with oneDAL>=2025.8. After that version has been released and CIs updated
471
+ # to use it, the earlier tests 'test_logistic_regression_is_correct' and
472
+ # 'test_multinomial_logistic_regression_is_correct' can be removed.
473
+ @pytest.mark.skipif(
474
+ not daal_check_version((2025, "P", 800)), reason="Bugs fixed in later oneDAL releases"
475
+ )
476
+ @pytest.mark.parametrize("multi_class", ["auto", "multinomial"])
477
+ @pytest.mark.parametrize("C", [1, 0.2, 20.0])
478
+ @pytest.mark.parametrize("solver", ["lbfgs", "newton-cg"])
479
+ @pytest.mark.parametrize("n_classes", [2, 3])
480
+ @pytest.mark.allow_sklearn_fallback
481
+ def test_custom_solvers_are_correct(multi_class, C, solver, n_classes):
482
+ from sklearnex.linear_model import LogisticRegression
483
+
484
+ X, y = make_classification(
485
+ random_state=123,
486
+ n_classes=n_classes,
487
+ n_clusters_per_class=1,
488
+ n_features=2,
489
+ n_redundant=0,
490
+ n_samples=50,
491
+ class_sep=0.25,
492
+ )
493
+
494
+ with warnings.catch_warnings():
495
+ warnings.simplefilter("ignore")
496
+ model_sklearn = _sklearn_LogisticRegression(
497
+ C=C,
498
+ multi_class=multi_class,
499
+ ).fit(X, y)
500
+ model_sklearnex = LogisticRegression(
501
+ C=C, solver=solver, multi_class=multi_class, max_iter=1_000, tol=1e-8
502
+ ).fit(X, y)
503
+ model_sklearnex_refitted = (
504
+ LogisticRegression(
505
+ C=C,
506
+ solver=solver,
507
+ multi_class=multi_class,
508
+ max_iter=1_000,
509
+ tol=1e-8,
510
+ warm_start=True,
511
+ )
512
+ .fit(X, y)
513
+ .fit(X, y)
514
+ )
515
+
516
+ np.testing.assert_allclose(
517
+ model_sklearnex.coef_, model_sklearn.coef_, rtol=1e-3, atol=5e-3
518
+ )
519
+ if n_classes == 2:
520
+ np.testing.assert_allclose(
521
+ model_sklearnex.intercept_, model_sklearn.intercept_, atol=1e-3
522
+ )
523
+ else:
524
+ np.testing.assert_allclose(
525
+ model_sklearnex.intercept_ - model_sklearnex.intercept_.mean(),
526
+ model_sklearn.intercept_ - model_sklearn.intercept_.mean(),
527
+ atol=1e-3,
528
+ )
529
+ np.testing.assert_allclose(
530
+ model_sklearnex_refitted.coef_, model_sklearn.coef_, rtol=1e-3, atol=5e-3
531
+ )
532
+ if n_classes == 2:
533
+ np.testing.assert_allclose(
534
+ model_sklearnex_refitted.intercept_, model_sklearn.intercept_, atol=1e-3
535
+ )
536
+ else:
537
+ np.testing.assert_allclose(
538
+ model_sklearnex_refitted.intercept_
539
+ - model_sklearnex_refitted.intercept_.mean(),
540
+ model_sklearn.intercept_ - model_sklearn.intercept_.mean(),
541
+ atol=1e-3,
542
+ )
543
+
544
+ np.testing.assert_allclose(
545
+ model_sklearnex.predict_proba(X),
546
+ model_sklearn.predict_proba(X),
547
+ rtol=1e-3,
548
+ atol=1e-3,
549
+ )
550
+ np.testing.assert_allclose(
551
+ model_sklearnex_refitted.predict_proba(X),
552
+ model_sklearn.predict_proba(X),
553
+ rtol=1e-3,
554
+ atol=1e-3,
555
+ )
556
+
557
+
558
+ @pytest.mark.parametrize(
559
+ "dataframe,queue", get_dataframes_and_queues(device_filter_="gpu")
560
+ )
561
+ def test_gpu_logreg_prediction_shapes(dataframe, queue):
562
+ if not queue or not queue.sycl_device.is_gpu:
563
+ pytest.skip("Test for GPU-only code branch")
564
+ from sklearnex.linear_model import LogisticRegression
565
+
566
+ X, y = make_classification(random_state=123)
567
+ X = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
568
+ y = _convert_to_dataframe(y, sycl_queue=queue, target_df=dataframe)
569
+
570
+ model = LogisticRegression(solver="newton-cg").fit(X, y)
571
+ pred = model.predict(X)
572
+ pred_proba = model.predict_proba(X)
573
+ pred_log_proba = model.predict_log_proba(X)
574
+
575
+ np.testing.assert_array_equal(pred.shape, (X.shape[0],))
576
+ np.testing.assert_array_equal(pred_proba.shape, (X.shape[0], 2))
577
+ np.testing.assert_array_equal(pred_log_proba.shape, (X.shape[0], 2))
@@ -25,6 +25,7 @@ from sklearn.neighbors._kd_tree import KDTree
25
25
  from sklearn.utils.validation import check_is_fitted
26
26
 
27
27
  from daal4py.sklearn._utils import sklearn_check_version
28
+ from onedal._device_offload import _transfer_to_host
28
29
  from onedal.utils.validation import _check_array, _num_features, _num_samples
29
30
 
30
31
  from .._utils import PatchingConditionsChain
@@ -280,16 +281,17 @@ class KNeighborsDispatchingBase(oneDALEstimator):
280
281
  # check the input only in self.kneighbors
281
282
 
282
283
  # construct CSR matrix representation of the k-NN graph
284
+ # requires moving data to host to construct the csr_matrix
283
285
  if mode == "connectivity":
284
286
  A_ind = self.kneighbors(X, n_neighbors, return_distance=False)
285
- xp, _ = get_namespace(A_ind)
287
+ _, (A_ind,) = _transfer_to_host(A_ind)
286
288
  n_queries = A_ind.shape[0]
287
- A_data = xp.ones(n_queries * n_neighbors)
289
+ A_data = np.ones(n_queries * n_neighbors)
288
290
 
289
291
  elif mode == "distance":
290
292
  A_data, A_ind = self.kneighbors(X, n_neighbors, return_distance=True)
291
- xp, _ = get_namespace(A_ind)
292
- A_data = xp.reshape(A_data, (-1,))
293
+ _, (A_data, A_ind) = _transfer_to_host(A_data, A_ind)
294
+ A_data = np.reshape(A_data, (-1,))
293
295
 
294
296
  else:
295
297
  raise ValueError(
@@ -300,10 +302,10 @@ class KNeighborsDispatchingBase(oneDALEstimator):
300
302
  n_queries = A_ind.shape[0]
301
303
  n_samples_fit = self.n_samples_fit_
302
304
  n_nonzero = n_queries * n_neighbors
303
- A_indptr = xp.arange(0, n_nonzero + 1, n_neighbors)
305
+ A_indptr = np.arange(0, n_nonzero + 1, n_neighbors)
304
306
 
305
307
  kneighbors_graph = sp.csr_matrix(
306
- (A_data, xp.reshape(A_ind, (-1,)), A_indptr), shape=(n_queries, n_samples_fit)
308
+ (A_data, np.reshape(A_ind, (-1,)), A_indptr), shape=(n_queries, n_samples_fit)
307
309
  )
308
310
 
309
311
  return kneighbors_graph
@@ -23,7 +23,6 @@ from sklearn.utils import check_array
23
23
 
24
24
  from daal4py.sklearn._n_jobs_support import control_n_jobs
25
25
  from daal4py.sklearn._utils import daal_check_version, sklearn_check_version
26
- from onedal.common.hyperparameters import get_hyperparameters
27
26
  from onedal.covariance import EmpiricalCovariance as onedal_EmpiricalCovariance
28
27
  from sklearnex import config_context
29
28
  from sklearnex.metrics import pairwise_distances
@@ -34,7 +33,7 @@ from ...base import oneDALEstimator
34
33
  from ...utils.validation import validate_data
35
34
 
36
35
 
37
- @register_hyperparameters({"fit": get_hyperparameters("covariance", "compute")})
36
+ @register_hyperparameters({"fit": ("covariance", "compute")})
38
37
  @control_n_jobs(decorated_methods=["fit", "mahalanobis"])
39
38
  class EmpiricalCovariance(oneDALEstimator, _sklearn_EmpiricalCovariance):
40
39
  __doc__ = _sklearn_EmpiricalCovariance.__doc__
@@ -56,6 +55,8 @@ class EmpiricalCovariance(oneDALEstimator, _sklearn_EmpiricalCovariance):
56
55
  _onedal_covariance = staticmethod(onedal_EmpiricalCovariance)
57
56
 
58
57
  def _onedal_fit(self, X, queue=None):
58
+ X = validate_data(self, X, ensure_all_finite=False)
59
+
59
60
  if X.shape[0] == 1:
60
61
  warnings.warn(
61
62
  "Only one sample available. You may want to reshape your data array"
@@ -92,8 +93,6 @@ class EmpiricalCovariance(oneDALEstimator, _sklearn_EmpiricalCovariance):
92
93
  def fit(self, X, y=None):
93
94
  if sklearn_check_version("1.2"):
94
95
  self._validate_params()
95
- X = validate_data(self, X, ensure_all_finite=False)
96
-
97
96
  dispatch(
98
97
  self,
99
98
  "fit",