scikit-learn-intelex 2024.6.0__py312-none-win_amd64.whl → 2024.7.0__py312-none-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (125) hide show
  1. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/_config.py +3 -15
  2. scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +98 -0
  3. scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +143 -0
  4. scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +251 -0
  5. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +1 -1
  6. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/cluster/dbscan.py +0 -1
  7. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/cluster/k_means.py +8 -0
  8. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +15 -3
  9. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +64 -13
  10. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +35 -0
  11. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/decomposition/pca.py +25 -1
  12. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/dispatcher.py +94 -0
  13. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/ensemble/_forest.py +8 -35
  14. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +9 -12
  15. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +13 -0
  16. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/linear_model/linear.py +2 -34
  17. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +79 -59
  18. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/linear_model/ridge.py +7 -0
  19. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +28 -3
  20. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +45 -3
  21. scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/manifold/t_sne.py +21 -0
  22. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/metrics/pairwise.py +5 -0
  23. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/metrics/ranking.py +3 -0
  24. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/model_selection/split.py +3 -0
  25. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/neighbors/_lof.py +9 -0
  26. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/neighbors/common.py +45 -1
  27. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +1 -20
  28. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +1 -20
  29. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +31 -7
  30. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/preview/__init__.py +1 -1
  31. scikit_learn_intelex-2024.6.0.data/data/Lib/site-packages/sklearnex/manifold/t_sne.py → scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/__init__.py +19 -17
  32. scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/ridge.py +419 -0
  33. scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/preview/linear_model/tests/test_ridge.py +102 -0
  34. scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +107 -0
  35. scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +97 -0
  36. scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +172 -0
  37. scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_covariance_spmd.py +107 -0
  38. scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_pca_spmd.py +128 -0
  39. scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/tests/test_forest_spmd.py +265 -0
  40. scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +145 -0
  41. scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +163 -0
  42. scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +288 -0
  43. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/svm/_common.py +19 -21
  44. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +12 -20
  45. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/tests/_utils.py +143 -20
  46. scikit_learn_intelex-2024.7.0.data/data/Lib/site-packages/sklearnex/tests/_utils_spmd.py +185 -0
  47. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/tests/test_config.py +4 -0
  48. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +12 -4
  49. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/tests/test_patching.py +16 -13
  50. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +21 -9
  51. {scikit_learn_intelex-2024.6.0.dist-info → scikit_learn_intelex-2024.7.0.dist-info}/METADATA +2 -2
  52. scikit_learn_intelex-2024.7.0.dist-info/RECORD +122 -0
  53. scikit_learn_intelex-2024.6.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +0 -257
  54. scikit_learn_intelex-2024.6.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +0 -17
  55. scikit_learn_intelex-2024.6.0.dist-info/RECORD +0 -108
  56. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/__init__.py +0 -0
  57. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/__main__.py +0 -0
  58. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/_utils.py +0 -0
  59. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +0 -0
  60. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +0 -0
  61. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/cluster/__init__.py +0 -0
  62. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +0 -0
  63. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/conftest.py +0 -0
  64. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/covariance/__init__.py +0 -0
  65. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/decomposition/__init__.py +0 -0
  66. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +0 -0
  67. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +0 -0
  68. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/ensemble/__init__.py +0 -0
  69. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/glob/__main__.py +0 -0
  70. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/glob/dispatcher.py +0 -0
  71. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/linear_model/__init__.py +0 -0
  72. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +0 -0
  73. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/linear_model/logistic_path.py +0 -0
  74. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +0 -0
  75. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/manifold/__init__.py +0 -0
  76. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +0 -0
  77. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/metrics/__init__.py +0 -0
  78. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +0 -0
  79. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/model_selection/__init__.py +0 -0
  80. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +0 -0
  81. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/neighbors/__init__.py +0 -0
  82. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +0 -0
  83. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/preview/cluster/__init__.py +0 -0
  84. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/preview/cluster/_common.py +0 -0
  85. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/preview/cluster/k_means.py +0 -0
  86. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +0 -0
  87. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +0 -0
  88. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +0 -0
  89. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +0 -0
  90. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +0 -0
  91. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +0 -0
  92. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/__init__.py +0 -0
  93. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +0 -0
  94. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +0 -0
  95. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +0 -0
  96. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +0 -0
  97. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +0 -0
  98. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +0 -0
  99. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +0 -0
  100. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/__init__.py +0 -0
  101. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +0 -0
  102. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +0 -0
  103. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +0 -0
  104. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +0 -0
  105. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +0 -0
  106. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +0 -0
  107. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +0 -0
  108. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/spmd/neighbors/neighbors.py +0 -0
  109. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/svm/__init__.py +0 -0
  110. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/svm/nusvc.py +0 -0
  111. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/svm/nusvr.py +0 -0
  112. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/svm/svc.py +0 -0
  113. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/svm/svr.py +0 -0
  114. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/tests/test_common.py +0 -0
  115. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +0 -0
  116. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +0 -0
  117. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/tests/test_parallel.py +0 -0
  118. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/utils/__init__.py +0 -0
  119. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/utils/_namespace.py +0 -0
  120. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/utils/parallel.py +0 -0
  121. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/utils/tests/test_finite.py +0 -0
  122. {scikit_learn_intelex-2024.6.0.data → scikit_learn_intelex-2024.7.0.data}/data/Lib/site-packages/sklearnex/utils/validation.py +0 -0
  123. {scikit_learn_intelex-2024.6.0.dist-info → scikit_learn_intelex-2024.7.0.dist-info}/LICENSE.txt +0 -0
  124. {scikit_learn_intelex-2024.6.0.dist-info → scikit_learn_intelex-2024.7.0.dist-info}/WHEEL +0 -0
  125. {scikit_learn_intelex-2024.6.0.dist-info → scikit_learn_intelex-2024.7.0.dist-info}/top_level.txt +0 -0
@@ -19,13 +19,14 @@ import warnings
19
19
 
20
20
  import numpy as np
21
21
  from scipy import linalg
22
- from sklearn.base import BaseEstimator
22
+ from sklearn.base import BaseEstimator, clone
23
23
  from sklearn.covariance import EmpiricalCovariance as sklearn_EmpiricalCovariance
24
+ from sklearn.covariance import log_likelihood
24
25
  from sklearn.utils import check_array, gen_batches
26
+ from sklearn.utils.validation import _num_features
25
27
 
26
28
  from daal4py.sklearn._n_jobs_support import control_n_jobs
27
29
  from daal4py.sklearn._utils import daal_check_version, sklearn_check_version
28
- from onedal._device_offload import support_usm_ndarray
29
30
  from onedal.covariance import (
30
31
  IncrementalEmpiricalCovariance as onedal_IncrementalEmpiricalCovariance,
31
32
  )
@@ -34,6 +35,7 @@ from sklearnex import config_context
34
35
  from .._device_offload import dispatch, wrap_output_data
35
36
  from .._utils import PatchingConditionsChain, register_hyperparameters
36
37
  from ..metrics import pairwise_distances
38
+ from ..utils import get_namespace
37
39
 
38
40
  if sklearn_check_version("1.2"):
39
41
  from sklearn.utils._param_validation import Interval
@@ -98,7 +100,6 @@ class IncrementalEmpiricalCovariance(BaseEstimator):
98
100
 
99
101
  get_precision = sklearn_EmpiricalCovariance.get_precision
100
102
  error_norm = wrap_output_data(sklearn_EmpiricalCovariance.error_norm)
101
- score = wrap_output_data(sklearn_EmpiricalCovariance.score)
102
103
 
103
104
  def __init__(
104
105
  self, *, store_precision=False, assume_centered=False, batch_size=None, copy=True
@@ -197,6 +198,43 @@ class IncrementalEmpiricalCovariance(BaseEstimator):
197
198
 
198
199
  return self
199
200
 
201
+ @wrap_output_data
202
+ def score(self, X_test, y=None):
203
+ xp, _ = get_namespace(X_test)
204
+
205
+ location = self.location_
206
+ if sklearn_check_version("1.0"):
207
+ X = self._validate_data(
208
+ X_test,
209
+ dtype=[np.float64, np.float32],
210
+ reset=False,
211
+ )
212
+ else:
213
+ X = check_array(
214
+ X_test,
215
+ dtype=[np.float64, np.float32],
216
+ )
217
+
218
+ if "numpy" not in xp.__name__:
219
+ location = xp.asarray(location, device=X_test.device)
220
+ # depending on the sklearn version, check_array
221
+ # and validate_data will return only numpy arrays
222
+ # which will break dpnp/dpctl support. If the
223
+ # array namespace isn't from numpy and the data
224
+ # is now a numpy array, it has been validated and
225
+ # the original can be used.
226
+ if isinstance(X, np.ndarray):
227
+ X = X_test
228
+
229
+ est = clone(self)
230
+ est.set_params(**{"assume_centered": True})
231
+
232
+ # test_cov is a numpy array, but calculated on device
233
+ test_cov = est.fit(X - location).covariance_
234
+ res = log_likelihood(test_cov, self.get_precision())
235
+
236
+ return res
237
+
200
238
  def partial_fit(self, X, y=None, check_input=True):
201
239
  """
202
240
  Incremental fit with X. All of X is processed as a single batch.
@@ -293,21 +331,34 @@ class IncrementalEmpiricalCovariance(BaseEstimator):
293
331
  return self
294
332
 
295
333
  # expose sklearnex pairwise_distances if mahalanobis distance eventually supported
296
- @wrap_output_data
297
334
  def mahalanobis(self, X):
298
335
  if sklearn_check_version("1.0"):
299
- self._validate_data(X, reset=False, copy=self.copy)
300
- else:
301
- check_array(X, copy=self.copy)
336
+ self._check_feature_names(X, reset=False)
302
337
 
338
+ xp, _ = get_namespace(X)
303
339
  precision = self.get_precision()
304
- with config_context(assume_finite=True):
305
- # compute mahalanobis distances
306
- dist = pairwise_distances(
307
- X, self.location_[np.newaxis, :], metric="mahalanobis", VI=precision
308
- )
340
+ # compute mahalanobis distances
341
+ # pairwise_distances will check n_features (via n_feature matching with
342
+ # self.location_) , and will check for finiteness via check array
343
+ # check_feature_names will match _validate_data functionally
344
+ location = self.location_[np.newaxis, :]
345
+ if "numpy" not in xp.__name__:
346
+ # Guarantee that inputs to pairwise_distances match in type and location
347
+ location = xp.asarray(location, device=X.device)
348
+
349
+ try:
350
+ dist = pairwise_distances(X, location, metric="mahalanobis", VI=precision)
351
+ except ValueError as e:
352
+ # Throw the expected sklearn error in an n_feature length violation
353
+ if "Incompatible dimension for X and Y matrices: X.shape[1] ==" in str(e):
354
+ raise ValueError(
355
+ f"X has {_num_features(X)} features, but {self.__class__.__name__} "
356
+ f"is expecting {self.n_features_in_} features as input."
357
+ )
358
+ else:
359
+ raise e
309
360
 
310
- return np.reshape(dist, (len(X),)) ** 2
361
+ return (xp.reshape(dist, (-1,))) ** 2
311
362
 
312
363
  _onedal_cpu_supported = _onedal_supported
313
364
  _onedal_gpu_supported = _onedal_supported
@@ -16,13 +16,18 @@
16
16
 
17
17
  import numpy as np
18
18
  import pytest
19
+ from numpy.linalg import slogdet
19
20
  from numpy.testing import assert_allclose
21
+ from scipy.linalg import pinvh
20
22
  from sklearn.covariance.tests.test_covariance import (
21
23
  test_covariance,
22
24
  test_EmpiricalCovariance_validates_mahalanobis,
23
25
  )
26
+ from sklearn.datasets import load_diabetes
27
+ from sklearn.decomposition import PCA
24
28
 
25
29
  from onedal.tests.utils._dataframes_support import (
30
+ _as_numpy,
26
31
  _convert_to_dataframe,
27
32
  get_dataframes_and_queues,
28
33
  )
@@ -163,6 +168,36 @@ def test_sklearnex_fit_on_random_data(
163
168
  assert_allclose(expected_means, result.location_, atol=1e-6)
164
169
 
165
170
 
171
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
172
+ def test_whitened_toy_score(dataframe, queue):
173
+ from sklearnex.covariance import IncrementalEmpiricalCovariance
174
+
175
+ # Load a sklearn toy dataset with sufficient data
176
+ X, _ = load_diabetes(return_X_y=True)
177
+ n = X.shape[1]
178
+
179
+ # Transform the data into uncorrelated, unity variance components
180
+ X = PCA(whiten=True).fit_transform(X)
181
+
182
+ # change dataframe
183
+ X_df = _convert_to_dataframe(X, sycl_queue=queue, target_df=dataframe)
184
+
185
+ # fit data
186
+ est = IncrementalEmpiricalCovariance()
187
+ est.fit(X_df)
188
+ # location_ attribute approximately zero (10,), covariance_ identity (10,10)
189
+
190
+ # The log-likelihood can be calculated simply due to covariance_
191
+ # use of scipy.linalg.pinvh, np.linalg.sloget and np.cov for estimator
192
+ # independence
193
+ expected_result = (
194
+ -(n - slogdet(pinvh(np.cov(X.T, bias=1)))[1] + n * np.log(2 * np.pi)) / 2
195
+ )
196
+ # expected_result = -14.1780602988
197
+ result = _as_numpy(est.score(X_df))
198
+ assert_allclose(expected_result, result, atol=1e-6)
199
+
200
+
166
201
  # Monkeypatch IncrementalEmpiricalCovariance into relevant sklearn.covariance tests
167
202
  @pytest.mark.allow_sklearn_fallback
168
203
  @pytest.mark.parametrize(
@@ -32,6 +32,7 @@ if daal_check_version((2024, "P", 100)):
32
32
 
33
33
  from .._device_offload import dispatch, wrap_output_data
34
34
  from .._utils import PatchingConditionsChain
35
+ from ..utils import get_namespace
35
36
 
36
37
  if sklearn_check_version("1.1") and not sklearn_check_version("1.2"):
37
38
  from sklearn.utils import check_scalar
@@ -42,7 +43,6 @@ if daal_check_version((2024, "P", 100)):
42
43
  from sklearn.decomposition import PCA as sklearn_PCA
43
44
 
44
45
  from onedal.decomposition import PCA as onedal_PCA
45
- from sklearnex.utils import get_namespace
46
46
 
47
47
  @control_n_jobs(decorated_methods=["fit", "transform", "fit_transform"])
48
48
  class PCA(sklearn_PCA):
@@ -210,6 +210,29 @@ if daal_check_version((2024, "P", 100)):
210
210
  # Scikit-learn PCA["covariance_eigh"] was fit
211
211
  return self._transform(X_fit, xp, x_is_centered=x_is_centered)
212
212
 
213
+ @wrap_output_data
214
+ def inverse_transform(self, X):
215
+ xp, _ = get_namespace(X)
216
+
217
+ mean = self.mean_
218
+ if self.whiten:
219
+ components = (
220
+ xp.sqrt(self.explained_variance_[:, np.newaxis]) * self.components_
221
+ )
222
+ else:
223
+ components = self.components_
224
+
225
+ if "numpy" not in xp.__name__:
226
+ # DPCtl and dpnp require inputs to be on the same device for
227
+ # matrix multiplication and division. The type and location
228
+ # of the components and mean are dependent on the sklearn
229
+ # version, this makes sure it is of the same type and on the
230
+ # same device as the data (compute follows data).
231
+ components = xp.asarray(components, device=X.device)
232
+ mean = xp.asarray(mean, device=X.device)
233
+
234
+ return X @ components + mean
235
+
213
236
  def _onedal_supported(self, method_name, X):
214
237
  class_name = self.__class__.__name__
215
238
  patching_status = PatchingConditionsChain(
@@ -381,6 +404,7 @@ if daal_check_version((2024, "P", 100)):
381
404
  fit.__doc__ = sklearn_PCA.fit.__doc__
382
405
  transform.__doc__ = sklearn_PCA.transform.__doc__
383
406
  fit_transform.__doc__ = sklearn_PCA.fit_transform.__doc__
407
+ inverse_transform.__doc__ = sklearn_PCA.inverse_transform.__doc__
384
408
 
385
409
  else:
386
410
  from daal4py.sklearn.decomposition import PCA
@@ -53,6 +53,7 @@ def get_patch_map_core(preview=False):
53
53
  EmpiricalCovariance as EmpiricalCovariance_sklearnex,
54
54
  )
55
55
  from .preview.decomposition import IncrementalPCA as IncrementalPCA_sklearnex
56
+ from .preview.linear_model import Ridge as Ridge_sklearnex
56
57
 
57
58
  # Since the state of the lru_cache without preview cannot be
58
59
  # guaranteed to not have already enabled sklearnex algorithms
@@ -90,6 +91,15 @@ def get_patch_map_core(preview=False):
90
91
  None,
91
92
  ]
92
93
  ]
94
+
95
+ # Ridge
96
+ linear_model_module, _, _ = mapping["ridge"][0][0]
97
+ sklearn_obj = mapping["ridge"][0][1]
98
+ mapping.pop("ridge")
99
+ mapping["ridge"] = [
100
+ [(linear_model_module, "Ridge", Ridge_sklearnex), sklearn_obj]
101
+ ]
102
+
93
103
  return mapping
94
104
 
95
105
  from daal4py.sklearn.monkeypatch.dispatcher import _get_map_of_algorithms
@@ -111,6 +121,9 @@ def get_patch_map_core(preview=False):
111
121
  import sklearn.decomposition as decomposition_module
112
122
  import sklearn.ensemble as ensemble_module
113
123
  import sklearn.linear_model as linear_model_module
124
+ import sklearn.manifold as manifold_module
125
+ import sklearn.metrics as metrics_module
126
+ import sklearn.model_selection as model_selection_module
114
127
  import sklearn.neighbors as neighbors_module
115
128
  import sklearn.svm as svm_module
116
129
 
@@ -138,11 +151,18 @@ def get_patch_map_core(preview=False):
138
151
  from .ensemble import ExtraTreesRegressor as ExtraTreesRegressor_sklearnex
139
152
  from .ensemble import RandomForestClassifier as RandomForestClassifier_sklearnex
140
153
  from .ensemble import RandomForestRegressor as RandomForestRegressor_sklearnex
154
+ from .linear_model import ElasticNet as ElasticNet_sklearnex
141
155
  from .linear_model import (
142
156
  IncrementalLinearRegression as IncrementalLinearRegression_sklearnex,
143
157
  )
158
+ from .linear_model import Lasso as Lasso_sklearnex
144
159
  from .linear_model import LinearRegression as LinearRegression_sklearnex
145
160
  from .linear_model import LogisticRegression as LogisticRegression_sklearnex
161
+ from .linear_model import Ridge as Ridge_sklearnex
162
+ from .manifold import TSNE as TSNE_sklearnex
163
+ from .metrics import pairwise_distances as pairwise_distances_sklearnex
164
+ from .metrics import roc_auc_score as roc_auc_score_sklearnex
165
+ from .model_selection import train_test_split as train_test_split_sklearnex
146
166
  from .neighbors import KNeighborsClassifier as KNeighborsClassifier_sklearnex
147
167
  from .neighbors import KNeighborsRegressor as KNeighborsRegressor_sklearnex
148
168
  from .neighbors import LocalOutlierFactor as LocalOutlierFactor_sklearnex
@@ -168,6 +188,32 @@ def get_patch_map_core(preview=False):
168
188
  mapping["nusvr"] = [[(svm_module, "NuSVR", NuSVR_sklearnex), None]]
169
189
  mapping["nusvc"] = [[(svm_module, "NuSVC", NuSVC_sklearnex), None]]
170
190
 
191
+ # ElasticNet
192
+ mapping.pop("elasticnet")
193
+ mapping["elasticnet"] = [
194
+ [
195
+ (
196
+ linear_model_module,
197
+ "ElasticNet",
198
+ ElasticNet_sklearnex,
199
+ ),
200
+ None,
201
+ ]
202
+ ]
203
+
204
+ # Lasso
205
+ mapping.pop("lasso")
206
+ mapping["lasso"] = [
207
+ [
208
+ (
209
+ linear_model_module,
210
+ "Lasso",
211
+ Lasso_sklearnex,
212
+ ),
213
+ None,
214
+ ]
215
+ ]
216
+
171
217
  # Linear Regression
172
218
  mapping.pop("linear")
173
219
  mapping.pop("linearregression")
@@ -201,6 +247,54 @@ def get_patch_map_core(preview=False):
201
247
  ]
202
248
  mapping["logisticregression"] = mapping["log_reg"]
203
249
 
250
+ # Ridge
251
+ mapping.pop("ridge")
252
+ mapping["ridge"] = [
253
+ [
254
+ (
255
+ linear_model_module,
256
+ "Ridge",
257
+ Ridge_sklearnex,
258
+ ),
259
+ None,
260
+ ]
261
+ ]
262
+
263
+ # manifold
264
+ mapping.pop("tsne")
265
+ mapping["tsne"] = [
266
+ [
267
+ (manifold_module, "TSNE", TSNE_sklearnex),
268
+ None,
269
+ ]
270
+ ]
271
+
272
+ # metrics
273
+ mapping.pop("distances")
274
+ mapping.pop("roc_auc_score")
275
+ mapping["distances"] = [
276
+ [
277
+ (metrics_module, "pairwise_distances", pairwise_distances_sklearnex),
278
+ None,
279
+ ]
280
+ ]
281
+ mapping["pairwise_distances"] = mapping["distances"]
282
+ mapping["roc_auc_score"] = [
283
+ [
284
+ (metrics_module, "roc_auc_score", roc_auc_score_sklearnex),
285
+ None,
286
+ ]
287
+ ]
288
+
289
+ # model_selection
290
+ mapping.pop("train_test_split")
291
+ mapping["train_test_split"] = [
292
+ [
293
+ (model_selection_module, "train_test_split", train_test_split_sklearnex),
294
+ None,
295
+ ]
296
+ ]
297
+
204
298
  # kNN
205
299
  mapping.pop("knn_classifier")
206
300
  mapping.pop("kneighborsclassifier")
@@ -38,7 +38,12 @@ from sklearn.tree import (
38
38
  )
39
39
  from sklearn.tree._tree import Tree
40
40
  from sklearn.utils import check_random_state, deprecated
41
- from sklearn.utils.validation import check_array, check_is_fitted, check_X_y
41
+ from sklearn.utils.validation import (
42
+ _check_sample_weight,
43
+ check_array,
44
+ check_is_fitted,
45
+ check_X_y,
46
+ )
42
47
 
43
48
  from daal4py.sklearn._n_jobs_support import control_n_jobs
44
49
  from daal4py.sklearn._utils import (
@@ -70,7 +75,7 @@ class BaseForest(ABC):
70
75
  X, y = self._validate_data(
71
76
  X,
72
77
  y,
73
- multi_output=False,
78
+ multi_output=True,
74
79
  accept_sparse=False,
75
80
  dtype=[np.float64, np.float32],
76
81
  force_all_finite=False,
@@ -78,7 +83,7 @@ class BaseForest(ABC):
78
83
  )
79
84
 
80
85
  if sample_weight is not None:
81
- sample_weight = self.check_sample_weight(sample_weight, X)
86
+ sample_weight = _check_sample_weight(sample_weight, X)
82
87
 
83
88
  if y.ndim == 2 and y.shape[1] == 1:
84
89
  warnings.warn(
@@ -289,38 +294,6 @@ class BaseForest(ABC):
289
294
  "min_bin_size must be integral number but was " "%r" % self.min_bin_size
290
295
  )
291
296
 
292
- def check_sample_weight(self, sample_weight, X, dtype=None):
293
- n_samples = _num_samples(X)
294
-
295
- if dtype is not None and dtype not in [np.float32, np.float64]:
296
- dtype = np.float64
297
-
298
- if sample_weight is None:
299
- sample_weight = np.ones(n_samples, dtype=dtype)
300
- elif isinstance(sample_weight, numbers.Number):
301
- sample_weight = np.full(n_samples, sample_weight, dtype=dtype)
302
- else:
303
- if dtype is None:
304
- dtype = [np.float64, np.float32]
305
- sample_weight = check_array(
306
- sample_weight,
307
- accept_sparse=False,
308
- ensure_2d=False,
309
- dtype=dtype,
310
- order="C",
311
- force_all_finite=False,
312
- )
313
- if sample_weight.ndim != 1:
314
- raise ValueError("Sample weights must be 1D array or scalar")
315
-
316
- if sample_weight.shape != (n_samples,):
317
- raise ValueError(
318
- "sample_weight.shape == {}, expected {}!".format(
319
- sample_weight.shape, (n_samples,)
320
- )
321
- )
322
- return sample_weight
323
-
324
297
  @property
325
298
  def estimators_(self):
326
299
  if hasattr(self, "_cached_estimators_"):
@@ -46,11 +46,10 @@ def test_sklearnex_import_rf_classifier(dataframe, queue):
46
46
  assert_allclose([1], _as_numpy(rf.predict([[0, 0, 0, 0]])))
47
47
 
48
48
 
49
- # TODO: fix RF regressor predict for the GPU sycl_queue.
50
- @pytest.mark.parametrize(
51
- "dataframe,queue", get_dataframes_and_queues(device_filter_="cpu")
52
- )
49
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
53
50
  def test_sklearnex_import_rf_regression(dataframe, queue):
51
+ if queue and queue.sycl_device.is_gpu:
52
+ pytest.skip("RF regressor predict for the GPU sycl_queue is buggy.")
54
53
  from sklearnex.ensemble import RandomForestRegressor
55
54
 
56
55
  X, y = make_regression(n_features=4, n_informative=2, random_state=0, shuffle=False)
@@ -69,11 +68,10 @@ def test_sklearnex_import_rf_regression(dataframe, queue):
69
68
  assert_allclose([-6.839], pred, atol=1e-2)
70
69
 
71
70
 
72
- # TODO: fix ET classifier predict for the GPU sycl_queue.
73
- @pytest.mark.parametrize(
74
- "dataframe,queue", get_dataframes_and_queues(device_filter_="cpu")
75
- )
71
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
76
72
  def test_sklearnex_import_et_classifier(dataframe, queue):
73
+ if queue and queue.sycl_device.is_gpu:
74
+ pytest.skip("ET classifier predict for the GPU sycl_queue is buggy.")
77
75
  from sklearnex.ensemble import ExtraTreesClassifier
78
76
 
79
77
  X, y = make_classification(
@@ -93,11 +91,10 @@ def test_sklearnex_import_et_classifier(dataframe, queue):
93
91
  assert_allclose([1], _as_numpy(rf.predict([[0, 0, 0, 0]])))
94
92
 
95
93
 
96
- # TODO: fix ET regressor predict for the GPU sycl_queue.
97
- @pytest.mark.parametrize(
98
- "dataframe,queue", get_dataframes_and_queues(device_filter_="cpu")
99
- )
94
+ @pytest.mark.parametrize("dataframe,queue", get_dataframes_and_queues())
100
95
  def test_sklearnex_import_et_regression(dataframe, queue):
96
+ if queue and queue.sycl_device.is_gpu:
97
+ pytest.skip("ET regressor predict for the GPU sycl_queue is buggy.")
101
98
  from sklearnex.ensemble import ExtraTreesRegressor
102
99
 
103
100
  X, y = make_regression(n_features=1, random_state=0, shuffle=False)
@@ -15,3 +15,16 @@
15
15
  # ===============================================================================
16
16
 
17
17
  from daal4py.sklearn.linear_model import ElasticNet, Lasso
18
+ from onedal._device_offload import support_usm_ndarray
19
+
20
+ # Note: `sklearnex.linear_model.ElasticNet` only has functional
21
+ # sycl GPU support. No GPU device will be offloaded.
22
+ ElasticNet.fit = support_usm_ndarray(queue_param=False)(ElasticNet.fit)
23
+ ElasticNet.predict = support_usm_ndarray(queue_param=False)(ElasticNet.predict)
24
+ ElasticNet.score = support_usm_ndarray(queue_param=False)(ElasticNet.score)
25
+
26
+ # Note: `sklearnex.linear_model.Lasso` only has functional
27
+ # sycl GPU support. No GPU device will be offloaded.
28
+ Lasso.fit = support_usm_ndarray(queue_param=False)(Lasso.fit)
29
+ Lasso.predict = support_usm_ndarray(queue_param=False)(Lasso.predict)
30
+ Lasso.score = support_usm_ndarray(queue_param=False)(Lasso.score)
@@ -27,7 +27,6 @@ from daal4py.sklearn._utils import sklearn_check_version
27
27
 
28
28
  from .._device_offload import dispatch, wrap_output_data
29
29
  from .._utils import PatchingConditionsChain, get_patch_message, register_hyperparameters
30
- from ..utils.validation import _assert_all_finite
31
30
 
32
31
  if sklearn_check_version("1.0") and not sklearn_check_version("1.2"):
33
32
  from sklearn.linear_model._base import _deprecate_normalize
@@ -138,19 +137,6 @@ class LinearRegression(sklearn_LinearRegression):
138
137
  sample_weight=sample_weight,
139
138
  )
140
139
 
141
- def _test_type_and_finiteness(self, X_in):
142
- X = X_in if isinstance(X_in, np.ndarray) else np.asarray(X_in)
143
-
144
- dtype = X.dtype
145
- if "complex" in str(type(dtype)):
146
- return False
147
-
148
- try:
149
- _assert_all_finite(X)
150
- except BaseException:
151
- return False
152
- return True
153
-
154
140
  def _onedal_fit_supported(self, method_name, *data):
155
141
  assert method_name == "fit"
156
142
  assert len(data) == 3
@@ -174,7 +160,7 @@ class LinearRegression(sklearn_LinearRegression):
174
160
  # Check if equations are well defined
175
161
  is_underdetermined = n_samples < (n_features + int(self.fit_intercept))
176
162
 
177
- dal_ready = patching_status.and_conditions(
163
+ patching_status.and_conditions(
178
164
  [
179
165
  (sample_weight is None, "Sample weight is not supported."),
180
166
  (
@@ -193,17 +179,6 @@ class LinearRegression(sklearn_LinearRegression):
193
179
  ),
194
180
  ]
195
181
  )
196
- if not dal_ready:
197
- return patching_status
198
-
199
- if not patching_status.and_condition(
200
- self._test_type_and_finiteness(X), "Input X is not supported."
201
- ):
202
- return patching_status
203
-
204
- patching_status.and_condition(
205
- self._test_type_and_finiteness(y), "Input y is not supported."
206
- )
207
182
 
208
183
  return patching_status
209
184
 
@@ -217,19 +192,13 @@ class LinearRegression(sklearn_LinearRegression):
217
192
  model_is_sparse = issparse(self.coef_) or (
218
193
  self.fit_intercept and issparse(self.intercept_)
219
194
  )
220
- dal_ready = patching_status.and_conditions(
195
+ patching_status.and_conditions(
221
196
  [
222
197
  (n_samples > 0, "Number of samples is less than 1."),
223
198
  (not issparse(data[0]), "Sparse input is not supported."),
224
199
  (not model_is_sparse, "Sparse coefficients are not supported."),
225
200
  ]
226
201
  )
227
- if not dal_ready:
228
- return patching_status
229
-
230
- patching_status.and_condition(
231
- self._test_type_and_finiteness(data[0]), "Input X is not supported."
232
- )
233
202
 
234
203
  return patching_status
235
204
 
@@ -257,7 +226,6 @@ class LinearRegression(sklearn_LinearRegression):
257
226
  "accept_sparse": ["csr", "csc", "coo"],
258
227
  "y_numeric": True,
259
228
  "multi_output": True,
260
- "force_all_finite": False,
261
229
  }
262
230
  if sklearn_check_version("1.2"):
263
231
  X, y = self._validate_data(**check_params)