scikit-learn-intelex 2025.4.0__py313-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 (259) hide show
  1. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/__init__.py +73 -0
  2. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/__main__.py +58 -0
  3. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/_daal4py.cp313-win_amd64.pyd +0 -0
  4. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/doc/third-party-programs.txt +424 -0
  5. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/mb/__init__.py +19 -0
  6. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/mb/model_builders.py +377 -0
  7. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/mpi_transceiver.cp313-win_amd64.pyd +0 -0
  8. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/__init__.py +40 -0
  9. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/_n_jobs_support.py +248 -0
  10. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/_utils.py +245 -0
  11. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/__init__.py +20 -0
  12. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/dbscan.py +165 -0
  13. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/k_means.py +597 -0
  14. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/cluster/tests/test_dbscan.py +109 -0
  15. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/decomposition/__init__.py +19 -0
  16. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/decomposition/_pca.py +524 -0
  17. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/AdaBoostClassifier.py +196 -0
  18. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/GBTDAAL.py +337 -0
  19. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/__init__.py +27 -0
  20. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/_forest.py +1397 -0
  21. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/ensemble/tests/test_decision_forest.py +206 -0
  22. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/__init__.py +29 -0
  23. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_coordinate_descent.py +848 -0
  24. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_linear.py +272 -0
  25. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/_ridge.py +325 -0
  26. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/coordinate_descent.py +17 -0
  27. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/linear.py +17 -0
  28. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_loss.py +195 -0
  29. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/logistic_path.py +1026 -0
  30. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/ridge.py +17 -0
  31. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_linear.py +208 -0
  32. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/linear_model/tests/test_ridge.py +69 -0
  33. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/manifold/__init__.py +19 -0
  34. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/manifold/_t_sne.py +405 -0
  35. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/__init__.py +20 -0
  36. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_pairwise.py +236 -0
  37. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/metrics/_ranking.py +210 -0
  38. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/__init__.py +19 -0
  39. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/_split.py +309 -0
  40. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/model_selection/tests/test_split.py +56 -0
  41. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/__init__.py +0 -0
  42. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/dispatcher.py +232 -0
  43. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/_models_info.py +161 -0
  44. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_monkeypatch.py +71 -0
  45. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/test_patching.py +90 -0
  46. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/monkeypatch/tests/utils/_launch_algorithms.py +117 -0
  47. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/__init__.py +21 -0
  48. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_base.py +503 -0
  49. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_classification.py +139 -0
  50. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_regression.py +74 -0
  51. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/_unsupervised.py +55 -0
  52. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/neighbors/tests/test_kneighbors.py +113 -0
  53. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/svm/__init__.py +19 -0
  54. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/svm/svm.py +734 -0
  55. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/utils/__init__.py +21 -0
  56. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/utils/base.py +75 -0
  57. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/utils/tests/test_utils.py +51 -0
  58. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/daal4py/sklearn/utils/validation.py +696 -0
  59. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/__init__.py +83 -0
  60. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/_config.py +54 -0
  61. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/_device_offload.py +204 -0
  62. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/_onedal_py_dpc.cp313-win_amd64.pyd +0 -0
  63. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/_onedal_py_host.cp313-win_amd64.pyd +0 -0
  64. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/basic_statistics/__init__.py +20 -0
  65. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/basic_statistics/basic_statistics.py +107 -0
  66. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/basic_statistics/incremental_basic_statistics.py +175 -0
  67. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_basic_statistics.py +242 -0
  68. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/test_incremental_basic_statistics.py +279 -0
  69. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/basic_statistics/tests/utils.py +50 -0
  70. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/cluster/__init__.py +27 -0
  71. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/cluster/dbscan.py +105 -0
  72. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/cluster/kmeans.py +557 -0
  73. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/cluster/kmeans_init.py +112 -0
  74. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/cluster/tests/test_dbscan.py +125 -0
  75. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans.py +88 -0
  76. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/cluster/tests/test_kmeans_init.py +93 -0
  77. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/common/_base.py +38 -0
  78. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/common/_estimator_checks.py +47 -0
  79. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/common/_mixin.py +62 -0
  80. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/common/_policy.py +55 -0
  81. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/common/_spmd_policy.py +30 -0
  82. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/common/hyperparameters.py +125 -0
  83. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/common/tests/test_policy.py +76 -0
  84. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/common/tests/test_sycl.py +128 -0
  85. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/covariance/__init__.py +20 -0
  86. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/covariance/covariance.py +122 -0
  87. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/covariance/incremental_covariance.py +161 -0
  88. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/covariance/tests/test_covariance.py +50 -0
  89. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/covariance/tests/test_incremental_covariance.py +190 -0
  90. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/datatypes/__init__.py +19 -0
  91. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/datatypes/_data_conversion.py +121 -0
  92. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/datatypes/tests/common.py +126 -0
  93. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/datatypes/tests/test_data.py +475 -0
  94. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/decomposition/__init__.py +20 -0
  95. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/decomposition/incremental_pca.py +214 -0
  96. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/decomposition/pca.py +186 -0
  97. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/decomposition/tests/test_incremental_pca.py +285 -0
  98. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/ensemble/__init__.py +29 -0
  99. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/ensemble/forest.py +736 -0
  100. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/ensemble/tests/test_random_forest.py +97 -0
  101. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/linear_model/__init__.py +27 -0
  102. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/linear_model/incremental_linear_model.py +292 -0
  103. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/linear_model/linear_model.py +325 -0
  104. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/linear_model/logistic_regression.py +247 -0
  105. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_linear_regression.py +213 -0
  106. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_incremental_ridge_regression.py +171 -0
  107. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_linear_regression.py +259 -0
  108. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_logistic_regression.py +95 -0
  109. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/linear_model/tests/test_ridge.py +95 -0
  110. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/neighbors/__init__.py +19 -0
  111. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/neighbors/neighbors.py +763 -0
  112. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/neighbors/tests/test_knn_classification.py +49 -0
  113. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/primitives/__init__.py +27 -0
  114. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/primitives/get_tree.py +25 -0
  115. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/primitives/kernel_functions.py +152 -0
  116. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/primitives/tests/test_kernel_functions.py +159 -0
  117. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/svm/__init__.py +19 -0
  118. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/svm/svm.py +556 -0
  119. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/svm/tests/test_csr_svm.py +351 -0
  120. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvc.py +204 -0
  121. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/svm/tests/test_nusvr.py +210 -0
  122. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/svm/tests/test_svc.py +176 -0
  123. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/svm/tests/test_svr.py +243 -0
  124. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/tests/test_common.py +57 -0
  125. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/tests/utils/_dataframes_support.py +162 -0
  126. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/tests/utils/_device_selection.py +102 -0
  127. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/utils/__init__.py +49 -0
  128. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/utils/_array_api.py +81 -0
  129. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/utils/_dpep_helpers.py +56 -0
  130. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/utils/tests/test_validation.py +142 -0
  131. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/onedal/utils/validation.py +464 -0
  132. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/__init__.py +66 -0
  133. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/__main__.py +58 -0
  134. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/_config.py +116 -0
  135. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/_device_offload.py +126 -0
  136. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/_utils.py +177 -0
  137. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/basic_statistics/__init__.py +20 -0
  138. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/basic_statistics/basic_statistics.py +261 -0
  139. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/basic_statistics/incremental_basic_statistics.py +352 -0
  140. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_basic_statistics.py +405 -0
  141. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/basic_statistics/tests/test_incremental_basic_statistics.py +455 -0
  142. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/cluster/__init__.py +20 -0
  143. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/cluster/dbscan.py +197 -0
  144. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/cluster/k_means.py +397 -0
  145. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_dbscan.py +38 -0
  146. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/cluster/tests/test_kmeans.py +157 -0
  147. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/conftest.py +82 -0
  148. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/covariance/__init__.py +19 -0
  149. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/covariance/incremental_covariance.py +405 -0
  150. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/covariance/tests/test_incremental_covariance.py +287 -0
  151. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/decomposition/__init__.py +19 -0
  152. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/decomposition/pca.py +427 -0
  153. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/decomposition/tests/test_pca.py +58 -0
  154. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/dispatcher.py +534 -0
  155. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/doc/third-party-programs.txt +424 -0
  156. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/ensemble/__init__.py +29 -0
  157. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/ensemble/_forest.py +2029 -0
  158. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/ensemble/tests/test_forest.py +140 -0
  159. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/glob/__main__.py +72 -0
  160. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/glob/dispatcher.py +101 -0
  161. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/linear_model/__init__.py +32 -0
  162. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/linear_model/coordinate_descent.py +30 -0
  163. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_linear.py +495 -0
  164. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/linear_model/incremental_ridge.py +432 -0
  165. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/linear_model/linear.py +346 -0
  166. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/linear_model/logistic_regression.py +415 -0
  167. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/linear_model/ridge.py +390 -0
  168. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_linear.py +267 -0
  169. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_incremental_ridge.py +214 -0
  170. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_linear.py +142 -0
  171. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_logreg.py +134 -0
  172. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/linear_model/tests/test_ridge.py +256 -0
  173. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/manifold/__init__.py +19 -0
  174. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/manifold/t_sne.py +26 -0
  175. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/manifold/tests/test_tsne.py +250 -0
  176. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/metrics/__init__.py +23 -0
  177. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/metrics/pairwise.py +22 -0
  178. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/metrics/ranking.py +20 -0
  179. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/metrics/tests/test_metrics.py +39 -0
  180. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/model_selection/__init__.py +21 -0
  181. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/model_selection/split.py +22 -0
  182. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/model_selection/tests/test_model_selection.py +34 -0
  183. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/neighbors/__init__.py +27 -0
  184. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/neighbors/_lof.py +236 -0
  185. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/neighbors/common.py +310 -0
  186. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/neighbors/knn_classification.py +231 -0
  187. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/neighbors/knn_regression.py +207 -0
  188. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/neighbors/knn_unsupervised.py +178 -0
  189. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/neighbors/tests/test_neighbors.py +82 -0
  190. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/preview/__init__.py +17 -0
  191. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/preview/covariance/__init__.py +19 -0
  192. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/preview/covariance/covariance.py +142 -0
  193. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/preview/covariance/tests/test_covariance.py +66 -0
  194. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/__init__.py +19 -0
  195. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/incremental_pca.py +244 -0
  196. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/preview/decomposition/tests/test_incremental_pca.py +336 -0
  197. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/__init__.py +25 -0
  198. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/__init__.py +20 -0
  199. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/basic_statistics.py +21 -0
  200. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/incremental_basic_statistics.py +30 -0
  201. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_basic_statistics_spmd.py +107 -0
  202. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/basic_statistics/tests/test_incremental_basic_statistics_spmd.py +306 -0
  203. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/__init__.py +30 -0
  204. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/dbscan.py +50 -0
  205. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/kmeans.py +21 -0
  206. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_dbscan_spmd.py +97 -0
  207. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/cluster/tests/test_kmeans_spmd.py +173 -0
  208. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/__init__.py +20 -0
  209. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/covariance.py +21 -0
  210. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/incremental_covariance.py +37 -0
  211. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_covariance_spmd.py +107 -0
  212. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/covariance/tests/test_incremental_covariance_spmd.py +184 -0
  213. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/__init__.py +20 -0
  214. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/incremental_pca.py +30 -0
  215. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/pca.py +21 -0
  216. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_incremental_pca_spmd.py +269 -0
  217. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/decomposition/tests/test_pca_spmd.py +128 -0
  218. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/__init__.py +19 -0
  219. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/forest.py +71 -0
  220. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/ensemble/tests/test_forest_spmd.py +265 -0
  221. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/__init__.py +21 -0
  222. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/incremental_linear_model.py +35 -0
  223. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/linear_model.py +21 -0
  224. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/logistic_regression.py +21 -0
  225. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_incremental_linear_spmd.py +331 -0
  226. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_linear_regression_spmd.py +145 -0
  227. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/linear_model/tests/test_logistic_regression_spmd.py +162 -0
  228. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/__init__.py +19 -0
  229. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/neighbors.py +25 -0
  230. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/spmd/neighbors/tests/test_neighbors_spmd.py +288 -0
  231. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/svm/__init__.py +29 -0
  232. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/svm/_common.py +339 -0
  233. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/svm/nusvc.py +371 -0
  234. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/svm/nusvr.py +170 -0
  235. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/svm/svc.py +399 -0
  236. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/svm/svr.py +167 -0
  237. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/svm/tests/test_svm.py +93 -0
  238. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/tests/test_common.py +491 -0
  239. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/tests/test_config.py +123 -0
  240. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/tests/test_hyperparameters.py +43 -0
  241. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/tests/test_memory_usage.py +347 -0
  242. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/tests/test_monkeypatch.py +269 -0
  243. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/tests/test_n_jobs_support.py +108 -0
  244. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/tests/test_parallel.py +48 -0
  245. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/tests/test_patching.py +377 -0
  246. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/tests/test_run_to_run_stability.py +326 -0
  247. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/tests/utils/__init__.py +48 -0
  248. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/tests/utils/base.py +436 -0
  249. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/tests/utils/spmd.py +198 -0
  250. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/utils/__init__.py +19 -0
  251. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/utils/_array_api.py +82 -0
  252. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/utils/parallel.py +59 -0
  253. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/utils/tests/test_validation.py +238 -0
  254. scikit_learn_intelex-2025.4.0.data/data/Lib/site-packages/sklearnex/utils/validation.py +208 -0
  255. scikit_learn_intelex-2025.4.0.dist-info/LICENSE.txt +202 -0
  256. scikit_learn_intelex-2025.4.0.dist-info/METADATA +192 -0
  257. scikit_learn_intelex-2025.4.0.dist-info/RECORD +259 -0
  258. scikit_learn_intelex-2025.4.0.dist-info/WHEEL +5 -0
  259. scikit_learn_intelex-2025.4.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,405 @@
1
+ # ==============================================================================
2
+ # Copyright 2020 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
+ # daal4py TSNE scikit-learn-compatible class
18
+
19
+ import warnings
20
+ from time import time
21
+
22
+ import numpy as np
23
+ from scipy.sparse import issparse
24
+ from sklearn.decomposition import PCA
25
+ from sklearn.manifold import TSNE as BaseTSNE
26
+ from sklearn.manifold._t_sne import _joint_probabilities, _joint_probabilities_nn
27
+ from sklearn.metrics.pairwise import pairwise_distances
28
+ from sklearn.utils import check_array, check_random_state
29
+ from sklearn.utils.validation import check_non_negative
30
+
31
+ import daal4py
32
+ from daal4py.sklearn._utils import (
33
+ PatchingConditionsChain,
34
+ daal_check_version,
35
+ sklearn_check_version,
36
+ )
37
+
38
+ from .._n_jobs_support import control_n_jobs
39
+ from ..neighbors import NearestNeighbors
40
+
41
+
42
+ @control_n_jobs(decorated_methods=["fit"])
43
+ class TSNE(BaseTSNE):
44
+ __doc__ = BaseTSNE.__doc__
45
+
46
+ if sklearn_check_version("1.2"):
47
+ _parameter_constraints: dict = {**BaseTSNE._parameter_constraints}
48
+
49
+ def fit_transform(self, X, y=None):
50
+ return super().fit_transform(X, y)
51
+
52
+ def fit(self, X, y=None):
53
+ return super().fit(X, y)
54
+
55
+ def _daal_tsne(self, P, n_samples, X_embedded):
56
+ """Runs t-SNE."""
57
+ # t-SNE minimizes the Kullback-Leiber divergence of the Gaussians P
58
+ # and the Student's t-distributions Q. The optimization algorithm that
59
+ # we use is batch gradient descent with two stages:
60
+ # * initial optimization with early exaggeration and momentum at 0.5
61
+ # * final optimization with momentum at 0.8
62
+
63
+ # N, nnz, n_iter_without_progress, n_iter
64
+ size_iter = [
65
+ [n_samples],
66
+ [P.nnz],
67
+ [self.n_iter_without_progress],
68
+ [self._max_iter if sklearn_check_version("1.5") else self.n_iter],
69
+ ]
70
+
71
+ # Pass params to daal4py backend
72
+ if daal_check_version((2023, "P", 1)):
73
+ size_iter.extend(
74
+ [
75
+ [
76
+ (
77
+ self._EXPLORATION_MAX_ITER
78
+ if sklearn_check_version("1.5")
79
+ else self._EXPLORATION_N_ITER
80
+ )
81
+ ],
82
+ [self._N_ITER_CHECK],
83
+ ]
84
+ )
85
+
86
+ size_iter = np.array(size_iter, dtype=P.dtype)
87
+
88
+ params = np.array(
89
+ [
90
+ [self.early_exaggeration],
91
+ [self._learning_rate],
92
+ [self.min_grad_norm],
93
+ [self.angle],
94
+ ],
95
+ dtype=P.dtype,
96
+ )
97
+ results = np.zeros((3, 1), dtype=P.dtype) # curIter, error, gradNorm
98
+
99
+ if P.dtype == np.float64:
100
+ daal4py.daal_tsne_gradient_descent(
101
+ X_embedded, P, size_iter, params, results, 0
102
+ )
103
+ elif P.dtype == np.float32:
104
+ daal4py.daal_tsne_gradient_descent(
105
+ X_embedded, P, size_iter, params, results, 1
106
+ )
107
+ else:
108
+ raise ValueError("unsupported dtype of 'P' matrix")
109
+
110
+ # Save the final number of iterations
111
+ self.n_iter_ = int(results[0][0])
112
+
113
+ # Save Kullback-Leiber divergence
114
+ self.kl_divergence_ = results[1][0]
115
+
116
+ return X_embedded
117
+
118
+ def _fit(self, X, skip_num_points=0):
119
+ """Private function to fit the model using X as training data."""
120
+ if isinstance(self.init, str) and self.init == "warn":
121
+ warnings.warn(
122
+ "The default initialization in TSNE will change "
123
+ "from 'random' to 'pca' in 1.2.",
124
+ FutureWarning,
125
+ )
126
+ self._init = "random"
127
+ else:
128
+ self._init = self.init
129
+
130
+ if isinstance(self._init, str) and self._init == "pca" and issparse(X):
131
+ raise TypeError(
132
+ "PCA initialization is currently not suported "
133
+ "with the sparse input matrix. Use "
134
+ 'init="random" instead.'
135
+ )
136
+
137
+ if self.method not in ["barnes_hut", "exact"]:
138
+ raise ValueError("'method' must be 'barnes_hut' or 'exact'")
139
+ if self.angle < 0.0 or self.angle > 1.0:
140
+ raise ValueError("'angle' must be between 0.0 - 1.0")
141
+ if self.learning_rate == "warn":
142
+ warnings.warn(
143
+ "The default learning rate in TSNE will change "
144
+ "from 200.0 to 'auto' in 1.2.",
145
+ FutureWarning,
146
+ )
147
+ self._learning_rate = 200.0
148
+ else:
149
+ self._learning_rate = self.learning_rate
150
+ if self._learning_rate == "auto":
151
+ self._learning_rate = X.shape[0] / self.early_exaggeration / 4
152
+ self._learning_rate = np.maximum(self._learning_rate, 50)
153
+ else:
154
+ if not (self._learning_rate > 0):
155
+ raise ValueError(
156
+ "'learning_rate' must be a positive number " "or 'auto'."
157
+ )
158
+ # rename attribute for compatibility with sklearn>=1.2
159
+ if sklearn_check_version("1.2"):
160
+ self.learning_rate_ = self._learning_rate
161
+
162
+ if hasattr(self, "square_distances"):
163
+ if sklearn_check_version("1.1"):
164
+ if self.square_distances != "deprecated":
165
+ warnings.warn(
166
+ "The parameter `square_distances` has not effect "
167
+ "and will be removed in version 1.3.",
168
+ FutureWarning,
169
+ )
170
+ else:
171
+ if self.square_distances not in [True, "legacy"]:
172
+ raise ValueError("'square_distances' must be True or 'legacy'.")
173
+ if self.metric != "euclidean" and self.square_distances is not True:
174
+ warnings.warn(
175
+ "'square_distances' has been introduced in 0.24 to help phase "
176
+ "out legacy squaring behavior. The 'legacy' setting will be "
177
+ "removed in 1.1 (renaming of 0.26), and the default setting "
178
+ "will be changed to True. In 1.3, 'square_distances' will be "
179
+ "removed altogether, and distances will be squared by "
180
+ "default. Set 'square_distances'=True to silence this "
181
+ "warning.",
182
+ FutureWarning,
183
+ )
184
+
185
+ if self.method == "barnes_hut":
186
+ X = self._validate_data(
187
+ X,
188
+ accept_sparse=["csr"],
189
+ ensure_min_samples=2,
190
+ dtype=[np.float32, np.float64],
191
+ )
192
+ else:
193
+ X = self._validate_data(
194
+ X, accept_sparse=["csr", "csc", "coo"], dtype=[np.float32, np.float64]
195
+ )
196
+
197
+ if self.metric == "precomputed":
198
+ if isinstance(self._init, str) and self._init == "pca":
199
+ raise ValueError(
200
+ 'The parameter init="pca" cannot be '
201
+ 'used with metric="precomputed".'
202
+ )
203
+ if X.shape[0] != X.shape[1]:
204
+ raise ValueError("X should be a square distance matrix")
205
+
206
+ check_non_negative(
207
+ X,
208
+ "TSNE.fit(). With metric='precomputed', X "
209
+ "should contain positive distances.",
210
+ )
211
+
212
+ if self.method == "exact" and issparse(X):
213
+ raise TypeError(
214
+ 'TSNE with method="exact" does not accept sparse '
215
+ 'precomputed distance matrix. Use method="barnes_hut" '
216
+ "or provide the dense distance matrix."
217
+ )
218
+
219
+ if self.method == "barnes_hut" and self.n_components > 3:
220
+ raise ValueError(
221
+ "'n_components' should be inferior to 4 for the "
222
+ "barnes_hut algorithm as it relies on "
223
+ "quad-tree or oct-tree."
224
+ )
225
+ random_state = check_random_state(self.random_state)
226
+
227
+ if self.early_exaggeration < 1.0:
228
+ raise ValueError(
229
+ "early_exaggeration must be at least 1, but is {}".format(
230
+ self.early_exaggeration
231
+ )
232
+ )
233
+
234
+ if not sklearn_check_version("1.2"):
235
+ if self.n_iter < 250:
236
+ raise ValueError("n_iter should be at least 250")
237
+
238
+ n_samples = X.shape[0]
239
+
240
+ neighbors_nn = None
241
+ if self.method == "exact":
242
+ # Retrieve the distance matrix, either using the precomputed one or
243
+ # computing it.
244
+ if self.metric == "precomputed":
245
+ distances = X
246
+ else:
247
+ if self.verbose:
248
+ print("[t-SNE] Computing pairwise distances...")
249
+
250
+ if self.metric == "euclidean":
251
+ # Euclidean is squared here, rather than using **= 2,
252
+ # because euclidean_distances already calculates
253
+ # squared distances, and returns np.sqrt(dist) for
254
+ # squared=False.
255
+ # Also, Euclidean is slower for n_jobs>1, so don't set here
256
+ distances = pairwise_distances(X, metric=self.metric, squared=True)
257
+ else:
258
+ metric_params_ = {}
259
+ if sklearn_check_version("1.1"):
260
+ metric_params_ = self.metric_params or {}
261
+ distances = pairwise_distances(
262
+ X, metric=self.metric, n_jobs=self.n_jobs, **metric_params_
263
+ )
264
+
265
+ if np.any(distances < 0):
266
+ raise ValueError(
267
+ "All distances should be positive, the " "metric given is not correct"
268
+ )
269
+
270
+ if (
271
+ self.metric != "euclidean"
272
+ and getattr(self, "square_distances", True) is True
273
+ ):
274
+ distances **= 2
275
+
276
+ # compute the joint probability distribution for the input space
277
+ P = _joint_probabilities(distances, self.perplexity, self.verbose)
278
+ assert np.all(np.isfinite(P)), "All probabilities should be finite"
279
+ assert np.all(P >= 0), "All probabilities should be non-negative"
280
+ assert np.all(P <= 1), (
281
+ "All probabilities should be less " "or then equal to one"
282
+ )
283
+
284
+ else:
285
+ # Compute the number of nearest neighbors to find.
286
+ # LvdM uses 3 * perplexity as the number of neighbors.
287
+ # In the event that we have very small # of points
288
+ # set the neighbors to n - 1.
289
+ n_neighbors = min(n_samples - 1, int(3.0 * self.perplexity + 1))
290
+
291
+ if self.verbose:
292
+ print("[t-SNE] Computing {} nearest neighbors...".format(n_neighbors))
293
+
294
+ # Find the nearest neighbors for every point
295
+ knn = None
296
+ if sklearn_check_version("1.1"):
297
+ knn = NearestNeighbors(
298
+ algorithm="auto",
299
+ n_jobs=self.n_jobs,
300
+ n_neighbors=n_neighbors,
301
+ metric=self.metric,
302
+ metric_params=self.metric_params,
303
+ )
304
+ else:
305
+ knn = NearestNeighbors(
306
+ algorithm="auto",
307
+ n_jobs=self.n_jobs,
308
+ n_neighbors=n_neighbors,
309
+ metric=self.metric,
310
+ )
311
+ t0 = time()
312
+ knn.fit(X)
313
+ duration = time() - t0
314
+ if self.verbose:
315
+ print(
316
+ "[t-SNE] Indexed {} samples in {:.3f}s...".format(n_samples, duration)
317
+ )
318
+
319
+ t0 = time()
320
+ distances_nn = knn.kneighbors_graph(mode="distance")
321
+ duration = time() - t0
322
+ if self.verbose:
323
+ print(
324
+ "[t-SNE] Computed neighbors for {} samples "
325
+ "in {:.3f}s...".format(n_samples, duration)
326
+ )
327
+
328
+ # Free the memory used by the ball_tree
329
+ del knn
330
+
331
+ if (
332
+ getattr(self, "square_distances", True) is True
333
+ or self.metric == "euclidean"
334
+ ):
335
+ # knn return the euclidean distance but we need it squared
336
+ # to be consistent with the 'exact' method. Note that the
337
+ # the method was derived using the euclidean method as in the
338
+ # input space. Not sure of the implication of using a different
339
+ # metric.
340
+ distances_nn.data **= 2
341
+
342
+ # compute the joint probability distribution for the input space
343
+ P = _joint_probabilities_nn(distances_nn, self.perplexity, self.verbose)
344
+
345
+ if isinstance(self._init, np.ndarray):
346
+ X_embedded = self._init
347
+ elif self._init == "pca":
348
+ pca = PCA(
349
+ n_components=self.n_components,
350
+ svd_solver="randomized",
351
+ random_state=random_state,
352
+ )
353
+ X_embedded = pca.fit_transform(X).astype(np.float32, copy=False)
354
+ warnings.warn(
355
+ "The PCA initialization in TSNE will change to "
356
+ "have the standard deviation of PC1 equal to 1e-4 "
357
+ "in 1.2. This will ensure better convergence.",
358
+ FutureWarning,
359
+ )
360
+ elif self._init == "random":
361
+ # The embedding is initialized with iid samples from Gaussians with
362
+ # standard deviation 1e-4.
363
+ X_embedded = 1e-4 * random_state.randn(n_samples, self.n_components).astype(
364
+ np.float32
365
+ )
366
+ else:
367
+ raise ValueError("'init' must be 'pca', 'random', or " "a numpy array")
368
+
369
+ # Degrees of freedom of the Student's t-distribution. The suggestion
370
+ # degrees_of_freedom = n_components - 1 comes from
371
+ # "Learning a Parametric Embedding by Preserving Local Structure"
372
+ # Laurens van der Maaten, 2009.
373
+ degrees_of_freedom = max(self.n_components - 1, 1)
374
+
375
+ _patching_status = PatchingConditionsChain("sklearn.manifold.TSNE._tsne")
376
+ _patching_status.and_conditions(
377
+ [
378
+ (
379
+ self.method == "barnes_hut",
380
+ 'Used t-SNE method is not "barnes_hut" which is the only supported.',
381
+ ),
382
+ (self.n_components == 2, "Number of components != 2."),
383
+ (self.verbose == 0, "Verbose mode is set."),
384
+ (
385
+ daal_check_version((2021, "P", 600)),
386
+ "oneDAL version is lower than 2021.6.",
387
+ ),
388
+ ]
389
+ )
390
+ _dal_ready = _patching_status.get_status(logs=True)
391
+
392
+ if _dal_ready:
393
+ X_embedded = check_array(X_embedded, dtype=[np.float32, np.float64])
394
+ return self._daal_tsne(P, n_samples, X_embedded=X_embedded)
395
+ return self._tsne(
396
+ P,
397
+ degrees_of_freedom,
398
+ n_samples,
399
+ X_embedded=X_embedded,
400
+ neighbors=neighbors_nn,
401
+ skip_num_points=skip_num_points,
402
+ )
403
+
404
+ fit.__doc__ = BaseTSNE.fit.__doc__
405
+ fit_transform.__doc__ = BaseTSNE.fit_transform.__doc__
@@ -0,0 +1,20 @@
1
+ # ==============================================================================
2
+ # Copyright 2020 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
+ from ._pairwise import pairwise_distances
18
+ from ._ranking import roc_auc_score
19
+
20
+ __all__ = ["roc_auc_score", "pairwise_distances"]
@@ -0,0 +1,236 @@
1
+ # ===============================================================================
2
+ # Copyright 2014 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
+ from functools import partial
19
+
20
+ import numpy as np
21
+ from sklearn.exceptions import DataConversionWarning
22
+ from sklearn.metrics import pairwise_distances as pairwise_distances_original
23
+ from sklearn.metrics.pairwise import (
24
+ _VALID_METRICS,
25
+ PAIRWISE_BOOLEAN_FUNCTIONS,
26
+ PAIRWISE_DISTANCE_FUNCTIONS,
27
+ _pairwise_callable,
28
+ _parallel_pairwise,
29
+ check_pairwise_arrays,
30
+ )
31
+ from sklearn.utils._joblib import effective_n_jobs
32
+ from sklearn.utils.validation import check_non_negative
33
+
34
+ try:
35
+ from sklearn.metrics.pairwise import _precompute_metric_params
36
+ except ImportError:
37
+
38
+ def _precompute_metric_params(*args, **kwrds):
39
+ return dict()
40
+
41
+
42
+ from scipy.sparse import issparse
43
+ from scipy.spatial import distance
44
+
45
+ import daal4py
46
+ from daal4py.sklearn.utils.validation import _daal_check_array
47
+
48
+ from .._utils import PatchingConditionsChain, getFPType, sklearn_check_version
49
+
50
+ if sklearn_check_version("1.3"):
51
+ from sklearn.utils._param_validation import (
52
+ Hidden,
53
+ Integral,
54
+ StrOptions,
55
+ validate_params,
56
+ )
57
+
58
+
59
+ def _daal4py_cosine_distance_dense(X):
60
+ X_fptype = getFPType(X)
61
+ alg = daal4py.cosine_distance(fptype=X_fptype, method="defaultDense")
62
+ res = alg.compute(X)
63
+ return res.cosineDistance
64
+
65
+
66
+ def _daal4py_correlation_distance_dense(X):
67
+ X_fptype = getFPType(X)
68
+ alg = daal4py.correlation_distance(fptype=X_fptype, method="defaultDense")
69
+ res = alg.compute(X)
70
+ return res.correlationDistance
71
+
72
+
73
+ def _pairwise_distances(
74
+ X, Y=None, metric="euclidean", *, n_jobs=None, force_all_finite=True, **kwds
75
+ ):
76
+ if metric not in _VALID_METRICS and not callable(metric) and metric != "precomputed":
77
+ raise ValueError(
78
+ "Unknown metric %s. Valid metrics are %s, or 'precomputed', "
79
+ "or a callable" % (metric, _VALID_METRICS)
80
+ )
81
+
82
+ X = _daal_check_array(
83
+ X, accept_sparse=["csr", "csc", "coo"], force_all_finite=force_all_finite
84
+ )
85
+
86
+ _patching_status = PatchingConditionsChain("sklearn.metrics.pairwise_distances")
87
+ _dal_ready = _patching_status.and_conditions(
88
+ [
89
+ (
90
+ metric == "cosine" or metric == "correlation",
91
+ f"'{metric}' metric is not supported. "
92
+ "Only 'cosine' and 'correlation' metrics are supported.",
93
+ ),
94
+ (Y is None, "Second feature array is not supported."),
95
+ (not issparse(X), "X is sparse. Sparse input is not supported."),
96
+ (
97
+ X.dtype == np.float64,
98
+ f"{X.dtype} X data type is not supported. Only np.float64 is supported.",
99
+ ),
100
+ ]
101
+ )
102
+ _patching_status.write_log()
103
+ if _dal_ready:
104
+ if metric == "cosine":
105
+ return _daal4py_cosine_distance_dense(X)
106
+ if metric == "correlation":
107
+ return _daal4py_correlation_distance_dense(X)
108
+ raise ValueError(f"'{metric}' distance is wrong for daal4py.")
109
+ if metric == "precomputed":
110
+ X, _ = check_pairwise_arrays(
111
+ X, Y, precomputed=True, force_all_finite=force_all_finite
112
+ )
113
+ whom = (
114
+ "`pairwise_distances`. Precomputed distance "
115
+ " need to have non-negative values."
116
+ )
117
+ check_non_negative(X, whom=whom)
118
+ return X
119
+ if metric in PAIRWISE_DISTANCE_FUNCTIONS:
120
+ func = PAIRWISE_DISTANCE_FUNCTIONS[metric]
121
+ elif callable(metric):
122
+ func = partial(
123
+ _pairwise_callable, metric=metric, force_all_finite=force_all_finite, **kwds
124
+ )
125
+ else:
126
+ if issparse(X) or issparse(Y):
127
+ raise TypeError("scipy distance metrics do not" " support sparse matrices.")
128
+
129
+ dtype = bool if metric in PAIRWISE_BOOLEAN_FUNCTIONS else None
130
+
131
+ if dtype == bool and (X.dtype != bool or (Y is not None and Y.dtype != bool)):
132
+ msg = "Data was converted to boolean for metric %s" % metric
133
+ warnings.warn(msg, DataConversionWarning)
134
+
135
+ X, Y = check_pairwise_arrays(X, Y, dtype=dtype, force_all_finite=force_all_finite)
136
+
137
+ # precompute data-derived metric params
138
+ params = _precompute_metric_params(X, Y, metric=metric, **kwds)
139
+ kwds.update(**params)
140
+
141
+ if effective_n_jobs(n_jobs) == 1 and X is Y:
142
+ return distance.squareform(distance.pdist(X, metric=metric, **kwds))
143
+ func = partial(distance.cdist, metric=metric, **kwds)
144
+
145
+ return _parallel_pairwise(X, Y, func, n_jobs, **kwds)
146
+
147
+
148
+ # logic to deprecate `force_all_finite` from sklearn:
149
+ # it was renamed to `ensure_all_finite` since 1.6 and will be removed in 1.8
150
+ if sklearn_check_version("1.3"):
151
+ pairwise_distances_parameters = {
152
+ "X": ["array-like", "sparse matrix"],
153
+ "Y": ["array-like", "sparse matrix", None],
154
+ "metric": [StrOptions(set(_VALID_METRICS) | {"precomputed"}), callable],
155
+ "n_jobs": [Integral, None],
156
+ "force_all_finite": [
157
+ "boolean",
158
+ StrOptions({"allow-nan"}),
159
+ Hidden(StrOptions({"deprecated"})),
160
+ ],
161
+ "ensure_all_finite": [
162
+ "boolean",
163
+ StrOptions({"allow-nan"}),
164
+ Hidden(None),
165
+ ],
166
+ }
167
+ if sklearn_check_version("1.6"):
168
+ if sklearn_check_version("1.8"):
169
+ del pairwise_distances_parameters["force_all_finite"]
170
+
171
+ def pairwise_distances(
172
+ X,
173
+ Y=None,
174
+ metric="euclidean",
175
+ *,
176
+ n_jobs=None,
177
+ ensure_all_finite=None,
178
+ **kwds,
179
+ ):
180
+ return _pairwise_distances(
181
+ X,
182
+ Y,
183
+ metric,
184
+ n_jobs=n_jobs,
185
+ force_all_finite=ensure_all_finite,
186
+ **kwds,
187
+ )
188
+
189
+ else:
190
+ from sklearn.utils.deprecation import _deprecate_force_all_finite
191
+
192
+ def pairwise_distances(
193
+ X,
194
+ Y=None,
195
+ metric="euclidean",
196
+ *,
197
+ n_jobs=None,
198
+ force_all_finite="deprecated",
199
+ ensure_all_finite=None,
200
+ **kwds,
201
+ ):
202
+ force_all_finite = _deprecate_force_all_finite(
203
+ force_all_finite, ensure_all_finite
204
+ )
205
+ return _pairwise_distances(
206
+ X, Y, metric, n_jobs=n_jobs, force_all_finite=force_all_finite, **kwds
207
+ )
208
+
209
+ else:
210
+ del pairwise_distances_parameters["ensure_all_finite"]
211
+
212
+ def pairwise_distances(
213
+ X,
214
+ Y=None,
215
+ metric="euclidean",
216
+ *,
217
+ n_jobs=None,
218
+ force_all_finite=True,
219
+ **kwds,
220
+ ):
221
+ return _pairwise_distances(
222
+ X,
223
+ Y,
224
+ metric,
225
+ n_jobs=n_jobs,
226
+ force_all_finite=force_all_finite,
227
+ **kwds,
228
+ )
229
+
230
+ pairwise_distances = validate_params(
231
+ pairwise_distances_parameters,
232
+ prefer_skip_nested_validation=True,
233
+ )(pairwise_distances)
234
+ else:
235
+ pairwise_distances = _pairwise_distances
236
+ pairwise_distances.__doc__ = pairwise_distances_original.__doc__