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