maxframe 2.4.0rc1__cp312-cp312-win32.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.
Files changed (1122) hide show
  1. maxframe/__init__.py +33 -0
  2. maxframe/_utils.cp312-win32.pyd +0 -0
  3. maxframe/_utils.pxd +33 -0
  4. maxframe/_utils.pyi +21 -0
  5. maxframe/_utils.pyx +561 -0
  6. maxframe/codegen/__init__.py +27 -0
  7. maxframe/codegen/core.py +597 -0
  8. maxframe/codegen/spe/__init__.py +16 -0
  9. maxframe/codegen/spe/core.py +307 -0
  10. maxframe/codegen/spe/dataframe/__init__.py +38 -0
  11. maxframe/codegen/spe/dataframe/accessors/__init__.py +15 -0
  12. maxframe/codegen/spe/dataframe/accessors/base.py +71 -0
  13. maxframe/codegen/spe/dataframe/accessors/dict_.py +89 -0
  14. maxframe/codegen/spe/dataframe/accessors/list_.py +44 -0
  15. maxframe/codegen/spe/dataframe/accessors/struct_.py +28 -0
  16. maxframe/codegen/spe/dataframe/arithmetic.py +89 -0
  17. maxframe/codegen/spe/dataframe/datasource.py +181 -0
  18. maxframe/codegen/spe/dataframe/datastore.py +204 -0
  19. maxframe/codegen/spe/dataframe/extensions.py +63 -0
  20. maxframe/codegen/spe/dataframe/fetch.py +26 -0
  21. maxframe/codegen/spe/dataframe/groupby.py +312 -0
  22. maxframe/codegen/spe/dataframe/indexing.py +333 -0
  23. maxframe/codegen/spe/dataframe/merge.py +110 -0
  24. maxframe/codegen/spe/dataframe/misc.py +264 -0
  25. maxframe/codegen/spe/dataframe/missing.py +64 -0
  26. maxframe/codegen/spe/dataframe/reduction.py +183 -0
  27. maxframe/codegen/spe/dataframe/reshape.py +46 -0
  28. maxframe/codegen/spe/dataframe/sort.py +104 -0
  29. maxframe/codegen/spe/dataframe/statistics.py +46 -0
  30. maxframe/codegen/spe/dataframe/tests/__init__.py +13 -0
  31. maxframe/codegen/spe/dataframe/tests/accessors/__init__.py +13 -0
  32. maxframe/codegen/spe/dataframe/tests/accessors/test_base.py +33 -0
  33. maxframe/codegen/spe/dataframe/tests/accessors/test_dict.py +304 -0
  34. maxframe/codegen/spe/dataframe/tests/accessors/test_list.py +134 -0
  35. maxframe/codegen/spe/dataframe/tests/accessors/test_struct.py +75 -0
  36. maxframe/codegen/spe/dataframe/tests/indexing/__init__.py +13 -0
  37. maxframe/codegen/spe/dataframe/tests/indexing/conftest.py +58 -0
  38. maxframe/codegen/spe/dataframe/tests/indexing/test_getitem.py +124 -0
  39. maxframe/codegen/spe/dataframe/tests/indexing/test_iloc.py +95 -0
  40. maxframe/codegen/spe/dataframe/tests/indexing/test_indexing.py +39 -0
  41. maxframe/codegen/spe/dataframe/tests/indexing/test_loc.py +35 -0
  42. maxframe/codegen/spe/dataframe/tests/indexing/test_rename.py +51 -0
  43. maxframe/codegen/spe/dataframe/tests/indexing/test_reset_index.py +88 -0
  44. maxframe/codegen/spe/dataframe/tests/indexing/test_sample.py +45 -0
  45. maxframe/codegen/spe/dataframe/tests/indexing/test_set_axis.py +45 -0
  46. maxframe/codegen/spe/dataframe/tests/indexing/test_set_index.py +41 -0
  47. maxframe/codegen/spe/dataframe/tests/indexing/test_setitem.py +46 -0
  48. maxframe/codegen/spe/dataframe/tests/misc/__init__.py +13 -0
  49. maxframe/codegen/spe/dataframe/tests/misc/test_apply.py +133 -0
  50. maxframe/codegen/spe/dataframe/tests/misc/test_drop_duplicates.py +92 -0
  51. maxframe/codegen/spe/dataframe/tests/misc/test_misc.py +202 -0
  52. maxframe/codegen/spe/dataframe/tests/missing/__init__.py +13 -0
  53. maxframe/codegen/spe/dataframe/tests/missing/test_checkna.py +94 -0
  54. maxframe/codegen/spe/dataframe/tests/missing/test_dropna.py +50 -0
  55. maxframe/codegen/spe/dataframe/tests/missing/test_fillna.py +94 -0
  56. maxframe/codegen/spe/dataframe/tests/missing/test_replace.py +45 -0
  57. maxframe/codegen/spe/dataframe/tests/test_arithmetic.py +73 -0
  58. maxframe/codegen/spe/dataframe/tests/test_datasource.py +184 -0
  59. maxframe/codegen/spe/dataframe/tests/test_datastore.py +200 -0
  60. maxframe/codegen/spe/dataframe/tests/test_extensions.py +88 -0
  61. maxframe/codegen/spe/dataframe/tests/test_groupby.py +288 -0
  62. maxframe/codegen/spe/dataframe/tests/test_merge.py +426 -0
  63. maxframe/codegen/spe/dataframe/tests/test_reduction.py +117 -0
  64. maxframe/codegen/spe/dataframe/tests/test_reshape.py +79 -0
  65. maxframe/codegen/spe/dataframe/tests/test_sort.py +179 -0
  66. maxframe/codegen/spe/dataframe/tests/test_statistics.py +70 -0
  67. maxframe/codegen/spe/dataframe/tests/test_tseries.py +29 -0
  68. maxframe/codegen/spe/dataframe/tests/test_value_counts.py +60 -0
  69. maxframe/codegen/spe/dataframe/tests/test_window.py +69 -0
  70. maxframe/codegen/spe/dataframe/tseries.py +55 -0
  71. maxframe/codegen/spe/dataframe/udf.py +62 -0
  72. maxframe/codegen/spe/dataframe/value_counts.py +31 -0
  73. maxframe/codegen/spe/dataframe/window.py +65 -0
  74. maxframe/codegen/spe/learn/__init__.py +15 -0
  75. maxframe/codegen/spe/learn/contrib/__init__.py +15 -0
  76. maxframe/codegen/spe/learn/contrib/lightgbm.py +161 -0
  77. maxframe/codegen/spe/learn/contrib/models.py +41 -0
  78. maxframe/codegen/spe/learn/contrib/pytorch.py +49 -0
  79. maxframe/codegen/spe/learn/contrib/tests/__init__.py +13 -0
  80. maxframe/codegen/spe/learn/contrib/tests/test_lightgbm.py +123 -0
  81. maxframe/codegen/spe/learn/contrib/tests/test_models.py +41 -0
  82. maxframe/codegen/spe/learn/contrib/tests/test_pytorch.py +53 -0
  83. maxframe/codegen/spe/learn/contrib/tests/test_xgboost.py +99 -0
  84. maxframe/codegen/spe/learn/contrib/xgboost.py +152 -0
  85. maxframe/codegen/spe/learn/metrics/__init__.py +15 -0
  86. maxframe/codegen/spe/learn/metrics/_classification.py +120 -0
  87. maxframe/codegen/spe/learn/metrics/_ranking.py +76 -0
  88. maxframe/codegen/spe/learn/metrics/pairwise.py +51 -0
  89. maxframe/codegen/spe/learn/metrics/tests/__init__.py +13 -0
  90. maxframe/codegen/spe/learn/metrics/tests/test_classification.py +93 -0
  91. maxframe/codegen/spe/learn/metrics/tests/test_pairwise.py +36 -0
  92. maxframe/codegen/spe/learn/metrics/tests/test_ranking.py +59 -0
  93. maxframe/codegen/spe/learn/model_selection/__init__.py +13 -0
  94. maxframe/codegen/spe/learn/model_selection/tests/__init__.py +13 -0
  95. maxframe/codegen/spe/learn/model_selection/tests/test_split.py +41 -0
  96. maxframe/codegen/spe/learn/preprocessing/__init__.py +15 -0
  97. maxframe/codegen/spe/learn/preprocessing/_data.py +37 -0
  98. maxframe/codegen/spe/learn/preprocessing/_label.py +47 -0
  99. maxframe/codegen/spe/learn/preprocessing/tests/__init__.py +13 -0
  100. maxframe/codegen/spe/learn/preprocessing/tests/test_data.py +31 -0
  101. maxframe/codegen/spe/learn/preprocessing/tests/test_label.py +43 -0
  102. maxframe/codegen/spe/learn/utils/__init__.py +15 -0
  103. maxframe/codegen/spe/learn/utils/checks.py +55 -0
  104. maxframe/codegen/spe/learn/utils/multiclass.py +60 -0
  105. maxframe/codegen/spe/learn/utils/shuffle.py +85 -0
  106. maxframe/codegen/spe/learn/utils/sparsefuncs.py +35 -0
  107. maxframe/codegen/spe/learn/utils/tests/__init__.py +13 -0
  108. maxframe/codegen/spe/learn/utils/tests/test_checks.py +48 -0
  109. maxframe/codegen/spe/learn/utils/tests/test_multiclass.py +52 -0
  110. maxframe/codegen/spe/learn/utils/tests/test_shuffle.py +50 -0
  111. maxframe/codegen/spe/learn/utils/tests/test_sparsefuncs.py +34 -0
  112. maxframe/codegen/spe/learn/utils/tests/test_validation.py +44 -0
  113. maxframe/codegen/spe/learn/utils/validation.py +35 -0
  114. maxframe/codegen/spe/objects.py +26 -0
  115. maxframe/codegen/spe/remote.py +29 -0
  116. maxframe/codegen/spe/tensor/__init__.py +31 -0
  117. maxframe/codegen/spe/tensor/arithmetic.py +95 -0
  118. maxframe/codegen/spe/tensor/core.py +41 -0
  119. maxframe/codegen/spe/tensor/datasource.py +166 -0
  120. maxframe/codegen/spe/tensor/extensions.py +35 -0
  121. maxframe/codegen/spe/tensor/fetch.py +26 -0
  122. maxframe/codegen/spe/tensor/fft.py +74 -0
  123. maxframe/codegen/spe/tensor/indexing.py +63 -0
  124. maxframe/codegen/spe/tensor/linalg.py +90 -0
  125. maxframe/codegen/spe/tensor/merge.py +31 -0
  126. maxframe/codegen/spe/tensor/misc.py +175 -0
  127. maxframe/codegen/spe/tensor/random.py +29 -0
  128. maxframe/codegen/spe/tensor/reduction.py +39 -0
  129. maxframe/codegen/spe/tensor/reshape.py +26 -0
  130. maxframe/codegen/spe/tensor/sort.py +42 -0
  131. maxframe/codegen/spe/tensor/spatial.py +45 -0
  132. maxframe/codegen/spe/tensor/special.py +35 -0
  133. maxframe/codegen/spe/tensor/statistics.py +68 -0
  134. maxframe/codegen/spe/tensor/tests/__init__.py +13 -0
  135. maxframe/codegen/spe/tensor/tests/test_arithmetic.py +103 -0
  136. maxframe/codegen/spe/tensor/tests/test_datasource.py +99 -0
  137. maxframe/codegen/spe/tensor/tests/test_extensions.py +37 -0
  138. maxframe/codegen/spe/tensor/tests/test_fft.py +64 -0
  139. maxframe/codegen/spe/tensor/tests/test_indexing.py +44 -0
  140. maxframe/codegen/spe/tensor/tests/test_linalg.py +52 -0
  141. maxframe/codegen/spe/tensor/tests/test_merge.py +28 -0
  142. maxframe/codegen/spe/tensor/tests/test_misc.py +144 -0
  143. maxframe/codegen/spe/tensor/tests/test_random.py +55 -0
  144. maxframe/codegen/spe/tensor/tests/test_reduction.py +65 -0
  145. maxframe/codegen/spe/tensor/tests/test_reshape.py +39 -0
  146. maxframe/codegen/spe/tensor/tests/test_sort.py +49 -0
  147. maxframe/codegen/spe/tensor/tests/test_spatial.py +33 -0
  148. maxframe/codegen/spe/tensor/tests/test_special.py +28 -0
  149. maxframe/codegen/spe/tensor/tests/test_statistics.py +43 -0
  150. maxframe/codegen/spe/tests/__init__.py +13 -0
  151. maxframe/codegen/spe/tests/test_remote.py +29 -0
  152. maxframe/codegen/spe/tests/test_spe_codegen.py +135 -0
  153. maxframe/codegen/spe/utils.py +56 -0
  154. maxframe/codegen/tests/__init__.py +13 -0
  155. maxframe/codegen/tests/test_codegen.py +67 -0
  156. maxframe/config/__init__.py +15 -0
  157. maxframe/config/config.py +630 -0
  158. maxframe/config/tests/__init__.py +13 -0
  159. maxframe/config/tests/test_config.py +114 -0
  160. maxframe/config/tests/test_validators.py +46 -0
  161. maxframe/config/validators.py +142 -0
  162. maxframe/conftest.py +261 -0
  163. maxframe/core/__init__.py +53 -0
  164. maxframe/core/accessor.py +45 -0
  165. maxframe/core/base.py +157 -0
  166. maxframe/core/context.py +110 -0
  167. maxframe/core/entity/__init__.py +34 -0
  168. maxframe/core/entity/core.py +150 -0
  169. maxframe/core/entity/executable.py +337 -0
  170. maxframe/core/entity/objects.py +115 -0
  171. maxframe/core/entity/output_types.py +101 -0
  172. maxframe/core/entity/tests/__init__.py +13 -0
  173. maxframe/core/entity/tests/test_objects.py +42 -0
  174. maxframe/core/entity/tileables.py +376 -0
  175. maxframe/core/entity/utils.py +39 -0
  176. maxframe/core/graph/__init__.py +22 -0
  177. maxframe/core/graph/builder/__init__.py +15 -0
  178. maxframe/core/graph/builder/base.py +90 -0
  179. maxframe/core/graph/builder/tileable.py +34 -0
  180. maxframe/core/graph/builder/utils.py +37 -0
  181. maxframe/core/graph/core.cp312-win32.pyd +0 -0
  182. maxframe/core/graph/core.pyx +478 -0
  183. maxframe/core/graph/entity.py +187 -0
  184. maxframe/core/graph/tests/__init__.py +13 -0
  185. maxframe/core/graph/tests/test_graph.py +205 -0
  186. maxframe/core/mode.py +101 -0
  187. maxframe/core/operator/__init__.py +32 -0
  188. maxframe/core/operator/base.py +481 -0
  189. maxframe/core/operator/core.py +307 -0
  190. maxframe/core/operator/fetch.py +40 -0
  191. maxframe/core/operator/objects.py +43 -0
  192. maxframe/core/operator/shuffle.py +45 -0
  193. maxframe/core/operator/tests/__init__.py +13 -0
  194. maxframe/core/operator/tests/test_core.py +64 -0
  195. maxframe/core/operator/utils.py +68 -0
  196. maxframe/core/tests/__init__.py +13 -0
  197. maxframe/core/tests/test_mode.py +75 -0
  198. maxframe/dataframe/__init__.py +90 -0
  199. maxframe/dataframe/accessors/__init__.py +20 -0
  200. maxframe/dataframe/accessors/compat.py +45 -0
  201. maxframe/dataframe/accessors/datetime_/__init__.py +35 -0
  202. maxframe/dataframe/accessors/datetime_/accessor.py +67 -0
  203. maxframe/dataframe/accessors/datetime_/core.py +106 -0
  204. maxframe/dataframe/accessors/datetime_/tests/__init__.py +13 -0
  205. maxframe/dataframe/accessors/datetime_/tests/test_datetime_accessor.py +41 -0
  206. maxframe/dataframe/accessors/dict_/__init__.py +45 -0
  207. maxframe/dataframe/accessors/dict_/accessor.py +39 -0
  208. maxframe/dataframe/accessors/dict_/contains.py +72 -0
  209. maxframe/dataframe/accessors/dict_/core.py +48 -0
  210. maxframe/dataframe/accessors/dict_/getitem.py +140 -0
  211. maxframe/dataframe/accessors/dict_/length.py +64 -0
  212. maxframe/dataframe/accessors/dict_/remove.py +75 -0
  213. maxframe/dataframe/accessors/dict_/setitem.py +79 -0
  214. maxframe/dataframe/accessors/dict_/tests/__init__.py +13 -0
  215. maxframe/dataframe/accessors/dict_/tests/test_dict_accessor.py +168 -0
  216. maxframe/dataframe/accessors/list_/__init__.py +39 -0
  217. maxframe/dataframe/accessors/list_/accessor.py +39 -0
  218. maxframe/dataframe/accessors/list_/core.py +48 -0
  219. maxframe/dataframe/accessors/list_/getitem.py +128 -0
  220. maxframe/dataframe/accessors/list_/length.py +64 -0
  221. maxframe/dataframe/accessors/list_/tests/__init__.py +13 -0
  222. maxframe/dataframe/accessors/list_/tests/test_list_accessor.py +81 -0
  223. maxframe/dataframe/accessors/plotting/__init__.py +40 -0
  224. maxframe/dataframe/accessors/plotting/core.py +78 -0
  225. maxframe/dataframe/accessors/plotting/tests/__init__.py +13 -0
  226. maxframe/dataframe/accessors/plotting/tests/test_plotting_accessor.py +136 -0
  227. maxframe/dataframe/accessors/string_/__init__.py +36 -0
  228. maxframe/dataframe/accessors/string_/accessor.py +215 -0
  229. maxframe/dataframe/accessors/string_/core.py +226 -0
  230. maxframe/dataframe/accessors/string_/tests/__init__.py +13 -0
  231. maxframe/dataframe/accessors/string_/tests/test_string_accessor.py +73 -0
  232. maxframe/dataframe/accessors/struct_/__init__.py +39 -0
  233. maxframe/dataframe/accessors/struct_/accessor.py +39 -0
  234. maxframe/dataframe/accessors/struct_/core.py +43 -0
  235. maxframe/dataframe/accessors/struct_/dtypes.py +53 -0
  236. maxframe/dataframe/accessors/struct_/field.py +123 -0
  237. maxframe/dataframe/accessors/struct_/tests/__init__.py +13 -0
  238. maxframe/dataframe/accessors/struct_/tests/test_struct_accessor.py +91 -0
  239. maxframe/dataframe/arithmetic/__init__.py +373 -0
  240. maxframe/dataframe/arithmetic/abs.py +33 -0
  241. maxframe/dataframe/arithmetic/add.py +60 -0
  242. maxframe/dataframe/arithmetic/arccos.py +28 -0
  243. maxframe/dataframe/arithmetic/arccosh.py +28 -0
  244. maxframe/dataframe/arithmetic/arcsin.py +28 -0
  245. maxframe/dataframe/arithmetic/arcsinh.py +28 -0
  246. maxframe/dataframe/arithmetic/arctan.py +28 -0
  247. maxframe/dataframe/arithmetic/arctanh.py +28 -0
  248. maxframe/dataframe/arithmetic/between.py +106 -0
  249. maxframe/dataframe/arithmetic/bitwise_and.py +46 -0
  250. maxframe/dataframe/arithmetic/bitwise_or.py +50 -0
  251. maxframe/dataframe/arithmetic/bitwise_xor.py +46 -0
  252. maxframe/dataframe/arithmetic/ceil.py +28 -0
  253. maxframe/dataframe/arithmetic/core.py +361 -0
  254. maxframe/dataframe/arithmetic/cos.py +28 -0
  255. maxframe/dataframe/arithmetic/cosh.py +28 -0
  256. maxframe/dataframe/arithmetic/degrees.py +28 -0
  257. maxframe/dataframe/arithmetic/docstring.py +416 -0
  258. maxframe/dataframe/arithmetic/dot.py +237 -0
  259. maxframe/dataframe/arithmetic/equal.py +58 -0
  260. maxframe/dataframe/arithmetic/exp.py +28 -0
  261. maxframe/dataframe/arithmetic/exp2.py +28 -0
  262. maxframe/dataframe/arithmetic/expm1.py +28 -0
  263. maxframe/dataframe/arithmetic/floor.py +28 -0
  264. maxframe/dataframe/arithmetic/floordiv.py +64 -0
  265. maxframe/dataframe/arithmetic/greater.py +59 -0
  266. maxframe/dataframe/arithmetic/greater_equal.py +59 -0
  267. maxframe/dataframe/arithmetic/invert.py +33 -0
  268. maxframe/dataframe/arithmetic/is_ufuncs.py +62 -0
  269. maxframe/dataframe/arithmetic/less.py +57 -0
  270. maxframe/dataframe/arithmetic/less_equal.py +59 -0
  271. maxframe/dataframe/arithmetic/log.py +28 -0
  272. maxframe/dataframe/arithmetic/log10.py +28 -0
  273. maxframe/dataframe/arithmetic/log2.py +28 -0
  274. maxframe/dataframe/arithmetic/maximum.py +33 -0
  275. maxframe/dataframe/arithmetic/minimum.py +33 -0
  276. maxframe/dataframe/arithmetic/mod.py +60 -0
  277. maxframe/dataframe/arithmetic/multiply.py +60 -0
  278. maxframe/dataframe/arithmetic/negative.py +33 -0
  279. maxframe/dataframe/arithmetic/not_equal.py +58 -0
  280. maxframe/dataframe/arithmetic/power.py +68 -0
  281. maxframe/dataframe/arithmetic/radians.py +28 -0
  282. maxframe/dataframe/arithmetic/round.py +144 -0
  283. maxframe/dataframe/arithmetic/sin.py +28 -0
  284. maxframe/dataframe/arithmetic/sinh.py +28 -0
  285. maxframe/dataframe/arithmetic/sqrt.py +28 -0
  286. maxframe/dataframe/arithmetic/subtract.py +64 -0
  287. maxframe/dataframe/arithmetic/tan.py +28 -0
  288. maxframe/dataframe/arithmetic/tanh.py +28 -0
  289. maxframe/dataframe/arithmetic/tests/__init__.py +13 -0
  290. maxframe/dataframe/arithmetic/tests/test_arithmetic.py +747 -0
  291. maxframe/dataframe/arithmetic/truediv.py +64 -0
  292. maxframe/dataframe/arithmetic/trunc.py +28 -0
  293. maxframe/dataframe/core.py +2386 -0
  294. maxframe/dataframe/datasource/__init__.py +33 -0
  295. maxframe/dataframe/datasource/core.py +112 -0
  296. maxframe/dataframe/datasource/dataframe.py +59 -0
  297. maxframe/dataframe/datasource/date_range.py +512 -0
  298. maxframe/dataframe/datasource/direct.py +57 -0
  299. maxframe/dataframe/datasource/from_dict.py +124 -0
  300. maxframe/dataframe/datasource/from_index.py +58 -0
  301. maxframe/dataframe/datasource/from_records.py +191 -0
  302. maxframe/dataframe/datasource/from_tensor.py +503 -0
  303. maxframe/dataframe/datasource/index.py +117 -0
  304. maxframe/dataframe/datasource/read_csv.py +534 -0
  305. maxframe/dataframe/datasource/read_odps_query.py +536 -0
  306. maxframe/dataframe/datasource/read_odps_table.py +295 -0
  307. maxframe/dataframe/datasource/read_parquet.py +278 -0
  308. maxframe/dataframe/datasource/series.py +55 -0
  309. maxframe/dataframe/datasource/tests/__init__.py +13 -0
  310. maxframe/dataframe/datasource/tests/test_datasource.py +663 -0
  311. maxframe/dataframe/datastore/__init__.py +41 -0
  312. maxframe/dataframe/datastore/core.py +28 -0
  313. maxframe/dataframe/datastore/direct.py +268 -0
  314. maxframe/dataframe/datastore/tests/__init__.py +13 -0
  315. maxframe/dataframe/datastore/tests/test_to_odps.py +99 -0
  316. maxframe/dataframe/datastore/to_csv.py +219 -0
  317. maxframe/dataframe/datastore/to_json.py +215 -0
  318. maxframe/dataframe/datastore/to_odps.py +285 -0
  319. maxframe/dataframe/datastore/to_parquet.py +121 -0
  320. maxframe/dataframe/extensions/__init__.py +70 -0
  321. maxframe/dataframe/extensions/accessor.py +35 -0
  322. maxframe/dataframe/extensions/apply_chunk.py +733 -0
  323. maxframe/dataframe/extensions/cartesian_chunk.py +153 -0
  324. maxframe/dataframe/extensions/collect_kv.py +126 -0
  325. maxframe/dataframe/extensions/extract_kv.py +177 -0
  326. maxframe/dataframe/extensions/flatjson.py +133 -0
  327. maxframe/dataframe/extensions/flatmap.py +329 -0
  328. maxframe/dataframe/extensions/map_reduce.py +263 -0
  329. maxframe/dataframe/extensions/rebalance.py +62 -0
  330. maxframe/dataframe/extensions/reshuffle.py +83 -0
  331. maxframe/dataframe/extensions/tests/__init__.py +13 -0
  332. maxframe/dataframe/extensions/tests/test_apply_chunk.py +194 -0
  333. maxframe/dataframe/extensions/tests/test_extensions.py +198 -0
  334. maxframe/dataframe/extensions/tests/test_map_reduce.py +135 -0
  335. maxframe/dataframe/fetch/__init__.py +15 -0
  336. maxframe/dataframe/fetch/core.py +97 -0
  337. maxframe/dataframe/groupby/__init__.py +105 -0
  338. maxframe/dataframe/groupby/aggregation.py +485 -0
  339. maxframe/dataframe/groupby/apply.py +235 -0
  340. maxframe/dataframe/groupby/apply_chunk.py +407 -0
  341. maxframe/dataframe/groupby/core.py +342 -0
  342. maxframe/dataframe/groupby/cum.py +102 -0
  343. maxframe/dataframe/groupby/expanding.py +264 -0
  344. maxframe/dataframe/groupby/extensions.py +26 -0
  345. maxframe/dataframe/groupby/fill.py +149 -0
  346. maxframe/dataframe/groupby/getitem.py +105 -0
  347. maxframe/dataframe/groupby/head.py +115 -0
  348. maxframe/dataframe/groupby/rank.py +136 -0
  349. maxframe/dataframe/groupby/rolling.py +206 -0
  350. maxframe/dataframe/groupby/sample.py +214 -0
  351. maxframe/dataframe/groupby/shift.py +114 -0
  352. maxframe/dataframe/groupby/tests/__init__.py +13 -0
  353. maxframe/dataframe/groupby/tests/test_groupby.py +373 -0
  354. maxframe/dataframe/groupby/transform.py +264 -0
  355. maxframe/dataframe/indexing/__init__.py +104 -0
  356. maxframe/dataframe/indexing/add_prefix_suffix.py +110 -0
  357. maxframe/dataframe/indexing/align.py +350 -0
  358. maxframe/dataframe/indexing/at.py +83 -0
  359. maxframe/dataframe/indexing/droplevel.py +195 -0
  360. maxframe/dataframe/indexing/filter.py +169 -0
  361. maxframe/dataframe/indexing/get_level_values.py +76 -0
  362. maxframe/dataframe/indexing/getitem.py +205 -0
  363. maxframe/dataframe/indexing/iat.py +82 -0
  364. maxframe/dataframe/indexing/iloc.py +711 -0
  365. maxframe/dataframe/indexing/insert.py +118 -0
  366. maxframe/dataframe/indexing/loc.py +694 -0
  367. maxframe/dataframe/indexing/reindex.py +541 -0
  368. maxframe/dataframe/indexing/rename.py +445 -0
  369. maxframe/dataframe/indexing/rename_axis.py +217 -0
  370. maxframe/dataframe/indexing/reorder_levels.py +143 -0
  371. maxframe/dataframe/indexing/reset_index.py +427 -0
  372. maxframe/dataframe/indexing/sample.py +232 -0
  373. maxframe/dataframe/indexing/set_axis.py +197 -0
  374. maxframe/dataframe/indexing/set_index.py +128 -0
  375. maxframe/dataframe/indexing/setitem.py +133 -0
  376. maxframe/dataframe/indexing/swaplevel.py +185 -0
  377. maxframe/dataframe/indexing/take.py +99 -0
  378. maxframe/dataframe/indexing/tests/__init__.py +13 -0
  379. maxframe/dataframe/indexing/tests/test_indexing.py +488 -0
  380. maxframe/dataframe/indexing/truncate.py +140 -0
  381. maxframe/dataframe/indexing/where.py +300 -0
  382. maxframe/dataframe/indexing/xs.py +148 -0
  383. maxframe/dataframe/initializer.py +298 -0
  384. maxframe/dataframe/merge/__init__.py +53 -0
  385. maxframe/dataframe/merge/append.py +120 -0
  386. maxframe/dataframe/merge/combine.py +244 -0
  387. maxframe/dataframe/merge/combine_first.py +120 -0
  388. maxframe/dataframe/merge/compare.py +387 -0
  389. maxframe/dataframe/merge/concat.py +500 -0
  390. maxframe/dataframe/merge/merge.py +806 -0
  391. maxframe/dataframe/merge/tests/__init__.py +13 -0
  392. maxframe/dataframe/merge/tests/test_merge.py +390 -0
  393. maxframe/dataframe/merge/update.py +271 -0
  394. maxframe/dataframe/misc/__init__.py +145 -0
  395. maxframe/dataframe/misc/_duplicate.py +56 -0
  396. maxframe/dataframe/misc/apply.py +730 -0
  397. maxframe/dataframe/misc/astype.py +237 -0
  398. maxframe/dataframe/misc/case_when.py +145 -0
  399. maxframe/dataframe/misc/check_monotonic.py +84 -0
  400. maxframe/dataframe/misc/check_unique.py +82 -0
  401. maxframe/dataframe/misc/clip.py +145 -0
  402. maxframe/dataframe/misc/cut.py +386 -0
  403. maxframe/dataframe/misc/describe.py +278 -0
  404. maxframe/dataframe/misc/diff.py +210 -0
  405. maxframe/dataframe/misc/drop.py +473 -0
  406. maxframe/dataframe/misc/drop_duplicates.py +251 -0
  407. maxframe/dataframe/misc/duplicated.py +292 -0
  408. maxframe/dataframe/misc/eval.py +730 -0
  409. maxframe/dataframe/misc/explode.py +171 -0
  410. maxframe/dataframe/misc/factorize.py +160 -0
  411. maxframe/dataframe/misc/get_dummies.py +241 -0
  412. maxframe/dataframe/misc/infer_dtypes.py +251 -0
  413. maxframe/dataframe/misc/isin.py +220 -0
  414. maxframe/dataframe/misc/map.py +360 -0
  415. maxframe/dataframe/misc/memory_usage.py +248 -0
  416. maxframe/dataframe/misc/pct_change.py +68 -0
  417. maxframe/dataframe/misc/qcut.py +104 -0
  418. maxframe/dataframe/misc/rechunk.py +59 -0
  419. maxframe/dataframe/misc/repeat.py +159 -0
  420. maxframe/dataframe/misc/select_dtypes.py +104 -0
  421. maxframe/dataframe/misc/shift.py +259 -0
  422. maxframe/dataframe/misc/tests/__init__.py +13 -0
  423. maxframe/dataframe/misc/tests/test_misc.py +649 -0
  424. maxframe/dataframe/misc/to_numeric.py +181 -0
  425. maxframe/dataframe/misc/transform.py +346 -0
  426. maxframe/dataframe/misc/transpose.py +148 -0
  427. maxframe/dataframe/misc/valid_index.py +115 -0
  428. maxframe/dataframe/misc/value_counts.py +206 -0
  429. maxframe/dataframe/missing/__init__.py +53 -0
  430. maxframe/dataframe/missing/checkna.py +231 -0
  431. maxframe/dataframe/missing/dropna.py +294 -0
  432. maxframe/dataframe/missing/fillna.py +283 -0
  433. maxframe/dataframe/missing/replace.py +446 -0
  434. maxframe/dataframe/missing/tests/__init__.py +13 -0
  435. maxframe/dataframe/missing/tests/test_missing.py +90 -0
  436. maxframe/dataframe/operators.py +231 -0
  437. maxframe/dataframe/reduction/__init__.py +129 -0
  438. maxframe/dataframe/reduction/aggregation.py +502 -0
  439. maxframe/dataframe/reduction/all.py +78 -0
  440. maxframe/dataframe/reduction/any.py +78 -0
  441. maxframe/dataframe/reduction/argmax.py +103 -0
  442. maxframe/dataframe/reduction/argmin.py +103 -0
  443. maxframe/dataframe/reduction/core.py +923 -0
  444. maxframe/dataframe/reduction/count.py +63 -0
  445. maxframe/dataframe/reduction/cov.py +166 -0
  446. maxframe/dataframe/reduction/cummax.py +30 -0
  447. maxframe/dataframe/reduction/cummin.py +30 -0
  448. maxframe/dataframe/reduction/cumprod.py +30 -0
  449. maxframe/dataframe/reduction/cumsum.py +30 -0
  450. maxframe/dataframe/reduction/custom_reduction.py +42 -0
  451. maxframe/dataframe/reduction/idxmax.py +185 -0
  452. maxframe/dataframe/reduction/idxmin.py +185 -0
  453. maxframe/dataframe/reduction/kurtosis.py +111 -0
  454. maxframe/dataframe/reduction/max.py +65 -0
  455. maxframe/dataframe/reduction/mean.py +63 -0
  456. maxframe/dataframe/reduction/median.py +56 -0
  457. maxframe/dataframe/reduction/min.py +65 -0
  458. maxframe/dataframe/reduction/mode.py +190 -0
  459. maxframe/dataframe/reduction/nunique.py +149 -0
  460. maxframe/dataframe/reduction/prod.py +81 -0
  461. maxframe/dataframe/reduction/reduction_size.py +36 -0
  462. maxframe/dataframe/reduction/sem.py +73 -0
  463. maxframe/dataframe/reduction/skew.py +93 -0
  464. maxframe/dataframe/reduction/std.py +53 -0
  465. maxframe/dataframe/reduction/str_concat.py +51 -0
  466. maxframe/dataframe/reduction/sum.py +81 -0
  467. maxframe/dataframe/reduction/tests/__init__.py +13 -0
  468. maxframe/dataframe/reduction/tests/test_reduction.py +598 -0
  469. maxframe/dataframe/reduction/unique.py +153 -0
  470. maxframe/dataframe/reduction/var.py +76 -0
  471. maxframe/dataframe/reshape/__init__.py +38 -0
  472. maxframe/dataframe/reshape/melt.py +169 -0
  473. maxframe/dataframe/reshape/pivot.py +233 -0
  474. maxframe/dataframe/reshape/pivot_table.py +275 -0
  475. maxframe/dataframe/reshape/stack.py +240 -0
  476. maxframe/dataframe/reshape/unstack.py +114 -0
  477. maxframe/dataframe/sort/__init__.py +49 -0
  478. maxframe/dataframe/sort/argsort.py +68 -0
  479. maxframe/dataframe/sort/core.py +37 -0
  480. maxframe/dataframe/sort/nlargest.py +238 -0
  481. maxframe/dataframe/sort/nsmallest.py +228 -0
  482. maxframe/dataframe/sort/rank.py +147 -0
  483. maxframe/dataframe/sort/sort_index.py +153 -0
  484. maxframe/dataframe/sort/sort_values.py +308 -0
  485. maxframe/dataframe/sort/tests/__init__.py +13 -0
  486. maxframe/dataframe/sort/tests/test_sort.py +85 -0
  487. maxframe/dataframe/statistics/__init__.py +33 -0
  488. maxframe/dataframe/statistics/corr.py +284 -0
  489. maxframe/dataframe/statistics/quantile.py +338 -0
  490. maxframe/dataframe/statistics/tests/__init__.py +13 -0
  491. maxframe/dataframe/statistics/tests/test_statistics.py +82 -0
  492. maxframe/dataframe/tests/__init__.py +13 -0
  493. maxframe/dataframe/tests/test_initializer.py +60 -0
  494. maxframe/dataframe/tests/test_typing.py +119 -0
  495. maxframe/dataframe/tests/test_utils.py +169 -0
  496. maxframe/dataframe/tseries/__init__.py +32 -0
  497. maxframe/dataframe/tseries/at_time.py +61 -0
  498. maxframe/dataframe/tseries/between_time.py +122 -0
  499. maxframe/dataframe/tseries/tests/__init__.py +13 -0
  500. maxframe/dataframe/tseries/tests/test_tseries.py +30 -0
  501. maxframe/dataframe/tseries/to_datetime.py +299 -0
  502. maxframe/dataframe/typing_.py +196 -0
  503. maxframe/dataframe/ufunc/__init__.py +27 -0
  504. maxframe/dataframe/ufunc/tensor.py +54 -0
  505. maxframe/dataframe/ufunc/ufunc.py +53 -0
  506. maxframe/dataframe/utils.py +1728 -0
  507. maxframe/dataframe/window/__init__.py +29 -0
  508. maxframe/dataframe/window/aggregation.py +100 -0
  509. maxframe/dataframe/window/core.py +82 -0
  510. maxframe/dataframe/window/ewm.py +247 -0
  511. maxframe/dataframe/window/expanding.py +151 -0
  512. maxframe/dataframe/window/rolling.py +389 -0
  513. maxframe/dataframe/window/tests/__init__.py +13 -0
  514. maxframe/dataframe/window/tests/test_ewm.py +70 -0
  515. maxframe/dataframe/window/tests/test_expanding.py +60 -0
  516. maxframe/dataframe/window/tests/test_rolling.py +57 -0
  517. maxframe/env.py +37 -0
  518. maxframe/errors.py +52 -0
  519. maxframe/extension.py +131 -0
  520. maxframe/io/__init__.py +13 -0
  521. maxframe/io/objects/__init__.py +24 -0
  522. maxframe/io/objects/core.py +156 -0
  523. maxframe/io/objects/tensor.py +133 -0
  524. maxframe/io/objects/tests/__init__.py +13 -0
  525. maxframe/io/objects/tests/test_object_io.py +85 -0
  526. maxframe/io/odpsio/__init__.py +24 -0
  527. maxframe/io/odpsio/arrow.py +161 -0
  528. maxframe/io/odpsio/schema.py +533 -0
  529. maxframe/io/odpsio/tableio.py +736 -0
  530. maxframe/io/odpsio/tests/__init__.py +13 -0
  531. maxframe/io/odpsio/tests/test_arrow.py +132 -0
  532. maxframe/io/odpsio/tests/test_schema.py +582 -0
  533. maxframe/io/odpsio/tests/test_tableio.py +205 -0
  534. maxframe/io/odpsio/tests/test_volumeio.py +75 -0
  535. maxframe/io/odpsio/volumeio.py +102 -0
  536. maxframe/learn/__init__.py +25 -0
  537. maxframe/learn/cluster/__init__.py +15 -0
  538. maxframe/learn/cluster/_kmeans.py +782 -0
  539. maxframe/learn/contrib/__init__.py +17 -0
  540. maxframe/learn/contrib/graph/__init__.py +15 -0
  541. maxframe/learn/contrib/graph/connected_components.py +216 -0
  542. maxframe/learn/contrib/graph/tests/__init__.py +13 -0
  543. maxframe/learn/contrib/graph/tests/test_connected_components.py +53 -0
  544. maxframe/learn/contrib/lightgbm/__init__.py +33 -0
  545. maxframe/learn/contrib/lightgbm/_predict.py +138 -0
  546. maxframe/learn/contrib/lightgbm/_train.py +163 -0
  547. maxframe/learn/contrib/lightgbm/callback.py +114 -0
  548. maxframe/learn/contrib/lightgbm/classifier.py +199 -0
  549. maxframe/learn/contrib/lightgbm/core.py +372 -0
  550. maxframe/learn/contrib/lightgbm/dataset.py +153 -0
  551. maxframe/learn/contrib/lightgbm/regressor.py +29 -0
  552. maxframe/learn/contrib/lightgbm/tests/__init__.py +13 -0
  553. maxframe/learn/contrib/lightgbm/tests/test_callback.py +58 -0
  554. maxframe/learn/contrib/llm/__init__.py +17 -0
  555. maxframe/learn/contrib/llm/core.py +105 -0
  556. maxframe/learn/contrib/llm/deploy/__init__.py +13 -0
  557. maxframe/learn/contrib/llm/deploy/config.py +221 -0
  558. maxframe/learn/contrib/llm/deploy/core.py +247 -0
  559. maxframe/learn/contrib/llm/deploy/framework.py +35 -0
  560. maxframe/learn/contrib/llm/deploy/loader.py +360 -0
  561. maxframe/learn/contrib/llm/deploy/tests/__init__.py +13 -0
  562. maxframe/learn/contrib/llm/deploy/tests/test_register_models.py +359 -0
  563. maxframe/learn/contrib/llm/models/__init__.py +16 -0
  564. maxframe/learn/contrib/llm/models/dashscope.py +114 -0
  565. maxframe/learn/contrib/llm/models/managed.py +119 -0
  566. maxframe/learn/contrib/llm/models/openai.py +72 -0
  567. maxframe/learn/contrib/llm/multi_modal.py +135 -0
  568. maxframe/learn/contrib/llm/tests/__init__.py +13 -0
  569. maxframe/learn/contrib/llm/tests/test_core.py +34 -0
  570. maxframe/learn/contrib/llm/tests/test_openai.py +187 -0
  571. maxframe/learn/contrib/llm/tests/test_text_gen.py +155 -0
  572. maxframe/learn/contrib/llm/text.py +608 -0
  573. maxframe/learn/contrib/models.py +109 -0
  574. maxframe/learn/contrib/pytorch/__init__.py +16 -0
  575. maxframe/learn/contrib/pytorch/run_function.py +110 -0
  576. maxframe/learn/contrib/pytorch/run_script.py +102 -0
  577. maxframe/learn/contrib/pytorch/tests/__init__.py +13 -0
  578. maxframe/learn/contrib/pytorch/tests/test_pytorch.py +42 -0
  579. maxframe/learn/contrib/utils.py +108 -0
  580. maxframe/learn/contrib/xgboost/__init__.py +33 -0
  581. maxframe/learn/contrib/xgboost/callback.py +86 -0
  582. maxframe/learn/contrib/xgboost/classifier.py +119 -0
  583. maxframe/learn/contrib/xgboost/core.py +469 -0
  584. maxframe/learn/contrib/xgboost/dmatrix.py +157 -0
  585. maxframe/learn/contrib/xgboost/predict.py +133 -0
  586. maxframe/learn/contrib/xgboost/regressor.py +91 -0
  587. maxframe/learn/contrib/xgboost/tests/__init__.py +13 -0
  588. maxframe/learn/contrib/xgboost/tests/test_callback.py +41 -0
  589. maxframe/learn/contrib/xgboost/tests/test_core.py +43 -0
  590. maxframe/learn/contrib/xgboost/train.py +181 -0
  591. maxframe/learn/core.py +344 -0
  592. maxframe/learn/datasets/__init__.py +20 -0
  593. maxframe/learn/datasets/samples_generator.py +628 -0
  594. maxframe/learn/linear_model/__init__.py +15 -0
  595. maxframe/learn/linear_model/_base.py +220 -0
  596. maxframe/learn/linear_model/_lin_reg.py +175 -0
  597. maxframe/learn/metrics/__init__.py +31 -0
  598. maxframe/learn/metrics/_check_targets.py +95 -0
  599. maxframe/learn/metrics/_classification.py +1266 -0
  600. maxframe/learn/metrics/_ranking.py +477 -0
  601. maxframe/learn/metrics/_regression.py +256 -0
  602. maxframe/learn/metrics/_scorer.py +60 -0
  603. maxframe/learn/metrics/pairwise/__init__.py +21 -0
  604. maxframe/learn/metrics/pairwise/core.py +77 -0
  605. maxframe/learn/metrics/pairwise/cosine.py +115 -0
  606. maxframe/learn/metrics/pairwise/euclidean.py +176 -0
  607. maxframe/learn/metrics/pairwise/haversine.py +96 -0
  608. maxframe/learn/metrics/pairwise/manhattan.py +80 -0
  609. maxframe/learn/metrics/pairwise/pairwise.py +127 -0
  610. maxframe/learn/metrics/pairwise/pairwise_distances_topk.py +121 -0
  611. maxframe/learn/metrics/pairwise/rbf_kernel.py +51 -0
  612. maxframe/learn/metrics/tests/__init__.py +13 -0
  613. maxframe/learn/metrics/tests/test_scorer.py +26 -0
  614. maxframe/learn/model_selection/__init__.py +15 -0
  615. maxframe/learn/model_selection/_split.py +451 -0
  616. maxframe/learn/model_selection/tests/__init__.py +13 -0
  617. maxframe/learn/model_selection/tests/test_split.py +156 -0
  618. maxframe/learn/preprocessing/__init__.py +16 -0
  619. maxframe/learn/preprocessing/_data/__init__.py +17 -0
  620. maxframe/learn/preprocessing/_data/min_max_scaler.py +401 -0
  621. maxframe/learn/preprocessing/_data/normalize.py +127 -0
  622. maxframe/learn/preprocessing/_data/standard_scaler.py +512 -0
  623. maxframe/learn/preprocessing/_data/utils.py +79 -0
  624. maxframe/learn/preprocessing/_label/__init__.py +16 -0
  625. maxframe/learn/preprocessing/_label/_label_binarizer.py +599 -0
  626. maxframe/learn/preprocessing/_label/_label_encoder.py +174 -0
  627. maxframe/learn/utils/__init__.py +20 -0
  628. maxframe/learn/utils/_encode.py +312 -0
  629. maxframe/learn/utils/checks.py +160 -0
  630. maxframe/learn/utils/core.py +121 -0
  631. maxframe/learn/utils/extmath.py +246 -0
  632. maxframe/learn/utils/multiclass.py +292 -0
  633. maxframe/learn/utils/odpsio.py +262 -0
  634. maxframe/learn/utils/shuffle.py +114 -0
  635. maxframe/learn/utils/sparsefuncs.py +87 -0
  636. maxframe/learn/utils/validation.py +775 -0
  637. maxframe/lib/__init__.py +13 -0
  638. maxframe/lib/aio/__init__.py +27 -0
  639. maxframe/lib/aio/_runners.py +162 -0
  640. maxframe/lib/aio/_threads.py +35 -0
  641. maxframe/lib/aio/base.py +82 -0
  642. maxframe/lib/aio/file.py +85 -0
  643. maxframe/lib/aio/isolation.py +100 -0
  644. maxframe/lib/aio/lru.py +242 -0
  645. maxframe/lib/aio/parallelism.py +37 -0
  646. maxframe/lib/aio/tests/__init__.py +13 -0
  647. maxframe/lib/aio/tests/test_aio_file.py +55 -0
  648. maxframe/lib/compat.py +185 -0
  649. maxframe/lib/compression.py +55 -0
  650. maxframe/lib/cython/__init__.py +13 -0
  651. maxframe/lib/cython/libcpp.pxd +30 -0
  652. maxframe/lib/dtypes_extension/__init__.py +30 -0
  653. maxframe/lib/dtypes_extension/_fake_arrow_dtype.py +609 -0
  654. maxframe/lib/dtypes_extension/blob.py +304 -0
  655. maxframe/lib/dtypes_extension/dtypes.py +106 -0
  656. maxframe/lib/dtypes_extension/tests/__init__.py +13 -0
  657. maxframe/lib/dtypes_extension/tests/test_blob.py +88 -0
  658. maxframe/lib/dtypes_extension/tests/test_dtypes.py +63 -0
  659. maxframe/lib/dtypes_extension/tests/test_fake_arrow_dtype.py +75 -0
  660. maxframe/lib/filesystem/__init__.py +22 -0
  661. maxframe/lib/filesystem/_glob.py +173 -0
  662. maxframe/lib/filesystem/_oss_lib/__init__.py +13 -0
  663. maxframe/lib/filesystem/_oss_lib/common.py +274 -0
  664. maxframe/lib/filesystem/_oss_lib/glob.py +147 -0
  665. maxframe/lib/filesystem/_oss_lib/handle.py +180 -0
  666. maxframe/lib/filesystem/arrow.py +240 -0
  667. maxframe/lib/filesystem/base.py +327 -0
  668. maxframe/lib/filesystem/core.py +95 -0
  669. maxframe/lib/filesystem/fshandler.py +136 -0
  670. maxframe/lib/filesystem/fsmap.py +164 -0
  671. maxframe/lib/filesystem/hdfs.py +31 -0
  672. maxframe/lib/filesystem/local.py +120 -0
  673. maxframe/lib/filesystem/oss.py +283 -0
  674. maxframe/lib/filesystem/tests/__init__.py +13 -0
  675. maxframe/lib/filesystem/tests/test_filesystem.py +205 -0
  676. maxframe/lib/filesystem/tests/test_fshandler.py +281 -0
  677. maxframe/lib/filesystem/tests/test_oss.py +220 -0
  678. maxframe/lib/functools_compat.py +81 -0
  679. maxframe/lib/mmh3.cp312-win32.pyd +0 -0
  680. maxframe/lib/mmh3.pyi +43 -0
  681. maxframe/lib/mmh3_src/MurmurHash3.cpp +339 -0
  682. maxframe/lib/mmh3_src/MurmurHash3.h +43 -0
  683. maxframe/lib/mmh3_src/mmh3module.cpp +387 -0
  684. maxframe/lib/sparse/__init__.py +856 -0
  685. maxframe/lib/sparse/array.py +1616 -0
  686. maxframe/lib/sparse/core.py +90 -0
  687. maxframe/lib/sparse/linalg.py +31 -0
  688. maxframe/lib/sparse/matrix.py +244 -0
  689. maxframe/lib/sparse/tests/__init__.py +13 -0
  690. maxframe/lib/sparse/tests/test_sparse.py +476 -0
  691. maxframe/lib/sparse/vector.py +148 -0
  692. maxframe/lib/tblib/LICENSE +20 -0
  693. maxframe/lib/tblib/__init__.py +327 -0
  694. maxframe/lib/tblib/cpython.py +83 -0
  695. maxframe/lib/tblib/decorators.py +44 -0
  696. maxframe/lib/tblib/pickling_support.py +90 -0
  697. maxframe/lib/tests/__init__.py +13 -0
  698. maxframe/lib/tests/test_wrapped_pickle.py +51 -0
  699. maxframe/lib/version.py +620 -0
  700. maxframe/lib/wrapped_pickle.py +177 -0
  701. maxframe/mixin.py +157 -0
  702. maxframe/opcodes.py +654 -0
  703. maxframe/protocol.py +611 -0
  704. maxframe/remote/__init__.py +18 -0
  705. maxframe/remote/core.py +212 -0
  706. maxframe/remote/run_script.py +124 -0
  707. maxframe/serialization/__init__.py +39 -0
  708. maxframe/serialization/arrow.py +107 -0
  709. maxframe/serialization/blob.py +32 -0
  710. maxframe/serialization/core.cp312-win32.pyd +0 -0
  711. maxframe/serialization/core.pxd +50 -0
  712. maxframe/serialization/core.pyi +66 -0
  713. maxframe/serialization/core.pyx +1282 -0
  714. maxframe/serialization/exception.py +90 -0
  715. maxframe/serialization/maxframe_objects.py +39 -0
  716. maxframe/serialization/numpy.py +110 -0
  717. maxframe/serialization/pandas.py +278 -0
  718. maxframe/serialization/scipy.py +71 -0
  719. maxframe/serialization/serializables/__init__.py +55 -0
  720. maxframe/serialization/serializables/core.py +469 -0
  721. maxframe/serialization/serializables/field.py +624 -0
  722. maxframe/serialization/serializables/field_type.py +592 -0
  723. maxframe/serialization/serializables/tests/__init__.py +13 -0
  724. maxframe/serialization/serializables/tests/test_field_type.py +119 -0
  725. maxframe/serialization/serializables/tests/test_serializable.py +313 -0
  726. maxframe/serialization/tests/__init__.py +13 -0
  727. maxframe/serialization/tests/test_serial.py +516 -0
  728. maxframe/session.py +1250 -0
  729. maxframe/sperunner.py +165 -0
  730. maxframe/tensor/__init__.py +325 -0
  731. maxframe/tensor/arithmetic/__init__.py +322 -0
  732. maxframe/tensor/arithmetic/abs.py +66 -0
  733. maxframe/tensor/arithmetic/absolute.py +66 -0
  734. maxframe/tensor/arithmetic/add.py +112 -0
  735. maxframe/tensor/arithmetic/angle.py +70 -0
  736. maxframe/tensor/arithmetic/arccos.py +101 -0
  737. maxframe/tensor/arithmetic/arccosh.py +89 -0
  738. maxframe/tensor/arithmetic/arcsin.py +92 -0
  739. maxframe/tensor/arithmetic/arcsinh.py +84 -0
  740. maxframe/tensor/arithmetic/arctan.py +104 -0
  741. maxframe/tensor/arithmetic/arctan2.py +126 -0
  742. maxframe/tensor/arithmetic/arctanh.py +84 -0
  743. maxframe/tensor/arithmetic/around.py +112 -0
  744. maxframe/tensor/arithmetic/bitand.py +93 -0
  745. maxframe/tensor/arithmetic/bitor.py +100 -0
  746. maxframe/tensor/arithmetic/bitxor.py +93 -0
  747. maxframe/tensor/arithmetic/cbrt.py +64 -0
  748. maxframe/tensor/arithmetic/ceil.py +69 -0
  749. maxframe/tensor/arithmetic/clip.py +165 -0
  750. maxframe/tensor/arithmetic/conj.py +72 -0
  751. maxframe/tensor/arithmetic/copysign.py +76 -0
  752. maxframe/tensor/arithmetic/core.py +546 -0
  753. maxframe/tensor/arithmetic/cos.py +83 -0
  754. maxframe/tensor/arithmetic/cosh.py +70 -0
  755. maxframe/tensor/arithmetic/deg2rad.py +70 -0
  756. maxframe/tensor/arithmetic/degrees.py +75 -0
  757. maxframe/tensor/arithmetic/divide.py +112 -0
  758. maxframe/tensor/arithmetic/equal.py +74 -0
  759. maxframe/tensor/arithmetic/exp.py +104 -0
  760. maxframe/tensor/arithmetic/exp2.py +65 -0
  761. maxframe/tensor/arithmetic/expm1.py +77 -0
  762. maxframe/tensor/arithmetic/fabs.py +72 -0
  763. maxframe/tensor/arithmetic/fix.py +67 -0
  764. maxframe/tensor/arithmetic/float_power.py +101 -0
  765. maxframe/tensor/arithmetic/floor.py +75 -0
  766. maxframe/tensor/arithmetic/floordiv.py +92 -0
  767. maxframe/tensor/arithmetic/fmax.py +103 -0
  768. maxframe/tensor/arithmetic/fmin.py +104 -0
  769. maxframe/tensor/arithmetic/fmod.py +97 -0
  770. maxframe/tensor/arithmetic/frexp.py +96 -0
  771. maxframe/tensor/arithmetic/greater.py +75 -0
  772. maxframe/tensor/arithmetic/greater_equal.py +67 -0
  773. maxframe/tensor/arithmetic/hypot.py +75 -0
  774. maxframe/tensor/arithmetic/i0.py +87 -0
  775. maxframe/tensor/arithmetic/imag.py +65 -0
  776. maxframe/tensor/arithmetic/invert.py +108 -0
  777. maxframe/tensor/arithmetic/isclose.py +114 -0
  778. maxframe/tensor/arithmetic/iscomplex.py +62 -0
  779. maxframe/tensor/arithmetic/iscomplexobj.py +53 -0
  780. maxframe/tensor/arithmetic/isfinite.py +104 -0
  781. maxframe/tensor/arithmetic/isinf.py +101 -0
  782. maxframe/tensor/arithmetic/isnan.py +80 -0
  783. maxframe/tensor/arithmetic/isreal.py +61 -0
  784. maxframe/tensor/arithmetic/ldexp.py +97 -0
  785. maxframe/tensor/arithmetic/less.py +67 -0
  786. maxframe/tensor/arithmetic/less_equal.py +67 -0
  787. maxframe/tensor/arithmetic/log.py +90 -0
  788. maxframe/tensor/arithmetic/log10.py +83 -0
  789. maxframe/tensor/arithmetic/log1p.py +93 -0
  790. maxframe/tensor/arithmetic/log2.py +83 -0
  791. maxframe/tensor/arithmetic/logaddexp.py +78 -0
  792. maxframe/tensor/arithmetic/logaddexp2.py +76 -0
  793. maxframe/tensor/arithmetic/logical_and.py +79 -0
  794. maxframe/tensor/arithmetic/logical_not.py +72 -0
  795. maxframe/tensor/arithmetic/logical_or.py +80 -0
  796. maxframe/tensor/arithmetic/logical_xor.py +86 -0
  797. maxframe/tensor/arithmetic/lshift.py +80 -0
  798. maxframe/tensor/arithmetic/maximum.py +106 -0
  799. maxframe/tensor/arithmetic/minimum.py +106 -0
  800. maxframe/tensor/arithmetic/mod.py +102 -0
  801. maxframe/tensor/arithmetic/modf.py +87 -0
  802. maxframe/tensor/arithmetic/multiply.py +114 -0
  803. maxframe/tensor/arithmetic/nan_to_num.py +97 -0
  804. maxframe/tensor/arithmetic/negative.py +63 -0
  805. maxframe/tensor/arithmetic/nextafter.py +66 -0
  806. maxframe/tensor/arithmetic/not_equal.py +70 -0
  807. maxframe/tensor/arithmetic/positive.py +45 -0
  808. maxframe/tensor/arithmetic/power.py +104 -0
  809. maxframe/tensor/arithmetic/rad2deg.py +69 -0
  810. maxframe/tensor/arithmetic/radians.py +75 -0
  811. maxframe/tensor/arithmetic/real.py +68 -0
  812. maxframe/tensor/arithmetic/reciprocal.py +78 -0
  813. maxframe/tensor/arithmetic/rint.py +66 -0
  814. maxframe/tensor/arithmetic/rshift.py +79 -0
  815. maxframe/tensor/arithmetic/setimag.py +27 -0
  816. maxframe/tensor/arithmetic/setreal.py +27 -0
  817. maxframe/tensor/arithmetic/sign.py +79 -0
  818. maxframe/tensor/arithmetic/signbit.py +63 -0
  819. maxframe/tensor/arithmetic/sin.py +96 -0
  820. maxframe/tensor/arithmetic/sinc.py +100 -0
  821. maxframe/tensor/arithmetic/sinh.py +91 -0
  822. maxframe/tensor/arithmetic/spacing.py +70 -0
  823. maxframe/tensor/arithmetic/sqrt.py +79 -0
  824. maxframe/tensor/arithmetic/square.py +67 -0
  825. maxframe/tensor/arithmetic/subtract.py +83 -0
  826. maxframe/tensor/arithmetic/tan.py +86 -0
  827. maxframe/tensor/arithmetic/tanh.py +90 -0
  828. maxframe/tensor/arithmetic/tests/__init__.py +13 -0
  829. maxframe/tensor/arithmetic/tests/test_arithmetic.py +449 -0
  830. maxframe/tensor/arithmetic/truediv.py +102 -0
  831. maxframe/tensor/arithmetic/trunc.py +70 -0
  832. maxframe/tensor/arithmetic/utils.py +91 -0
  833. maxframe/tensor/array_utils.py +164 -0
  834. maxframe/tensor/core.py +597 -0
  835. maxframe/tensor/datasource/__init__.py +40 -0
  836. maxframe/tensor/datasource/arange.py +154 -0
  837. maxframe/tensor/datasource/array.py +399 -0
  838. maxframe/tensor/datasource/core.py +114 -0
  839. maxframe/tensor/datasource/diag.py +140 -0
  840. maxframe/tensor/datasource/diagflat.py +69 -0
  841. maxframe/tensor/datasource/empty.py +167 -0
  842. maxframe/tensor/datasource/eye.py +95 -0
  843. maxframe/tensor/datasource/from_dataframe.py +68 -0
  844. maxframe/tensor/datasource/from_dense.py +37 -0
  845. maxframe/tensor/datasource/from_sparse.py +45 -0
  846. maxframe/tensor/datasource/full.py +184 -0
  847. maxframe/tensor/datasource/identity.py +54 -0
  848. maxframe/tensor/datasource/indices.py +115 -0
  849. maxframe/tensor/datasource/linspace.py +140 -0
  850. maxframe/tensor/datasource/meshgrid.py +135 -0
  851. maxframe/tensor/datasource/ones.py +178 -0
  852. maxframe/tensor/datasource/scalar.py +40 -0
  853. maxframe/tensor/datasource/tests/__init__.py +13 -0
  854. maxframe/tensor/datasource/tests/test_datasource.py +310 -0
  855. maxframe/tensor/datasource/tri_array.py +107 -0
  856. maxframe/tensor/datasource/zeros.py +192 -0
  857. maxframe/tensor/extensions/__init__.py +33 -0
  858. maxframe/tensor/extensions/accessor.py +25 -0
  859. maxframe/tensor/extensions/apply_chunk.py +137 -0
  860. maxframe/tensor/extensions/rebalance.py +65 -0
  861. maxframe/tensor/fetch/__init__.py +15 -0
  862. maxframe/tensor/fetch/core.py +54 -0
  863. maxframe/tensor/fft/__init__.py +32 -0
  864. maxframe/tensor/fft/core.py +168 -0
  865. maxframe/tensor/fft/fft.py +112 -0
  866. maxframe/tensor/fft/fft2.py +118 -0
  867. maxframe/tensor/fft/fftfreq.py +80 -0
  868. maxframe/tensor/fft/fftn.py +123 -0
  869. maxframe/tensor/fft/fftshift.py +79 -0
  870. maxframe/tensor/fft/hfft.py +112 -0
  871. maxframe/tensor/fft/ifft.py +114 -0
  872. maxframe/tensor/fft/ifft2.py +115 -0
  873. maxframe/tensor/fft/ifftn.py +123 -0
  874. maxframe/tensor/fft/ifftshift.py +73 -0
  875. maxframe/tensor/fft/ihfft.py +93 -0
  876. maxframe/tensor/fft/irfft.py +118 -0
  877. maxframe/tensor/fft/irfft2.py +62 -0
  878. maxframe/tensor/fft/irfftn.py +114 -0
  879. maxframe/tensor/fft/rfft.py +116 -0
  880. maxframe/tensor/fft/rfft2.py +63 -0
  881. maxframe/tensor/fft/rfftfreq.py +87 -0
  882. maxframe/tensor/fft/rfftn.py +113 -0
  883. maxframe/tensor/indexing/__init__.py +47 -0
  884. maxframe/tensor/indexing/choose.py +198 -0
  885. maxframe/tensor/indexing/compress.py +122 -0
  886. maxframe/tensor/indexing/core.py +190 -0
  887. maxframe/tensor/indexing/extract.py +69 -0
  888. maxframe/tensor/indexing/fill_diagonal.py +180 -0
  889. maxframe/tensor/indexing/flatnonzero.py +58 -0
  890. maxframe/tensor/indexing/getitem.py +144 -0
  891. maxframe/tensor/indexing/nonzero.py +118 -0
  892. maxframe/tensor/indexing/setitem.py +142 -0
  893. maxframe/tensor/indexing/slice.py +32 -0
  894. maxframe/tensor/indexing/take.py +128 -0
  895. maxframe/tensor/indexing/tests/__init__.py +13 -0
  896. maxframe/tensor/indexing/tests/test_indexing.py +232 -0
  897. maxframe/tensor/indexing/unravel_index.py +103 -0
  898. maxframe/tensor/lib/__init__.py +16 -0
  899. maxframe/tensor/lib/index_tricks.py +404 -0
  900. maxframe/tensor/linalg/__init__.py +43 -0
  901. maxframe/tensor/linalg/_einsumfunc.py +1025 -0
  902. maxframe/tensor/linalg/cholesky.py +117 -0
  903. maxframe/tensor/linalg/dot.py +145 -0
  904. maxframe/tensor/linalg/einsum.py +339 -0
  905. maxframe/tensor/linalg/inner.py +36 -0
  906. maxframe/tensor/linalg/inv.py +83 -0
  907. maxframe/tensor/linalg/lstsq.py +100 -0
  908. maxframe/tensor/linalg/lu.py +115 -0
  909. maxframe/tensor/linalg/matmul.py +225 -0
  910. maxframe/tensor/linalg/matrix_norm.py +75 -0
  911. maxframe/tensor/linalg/norm.py +249 -0
  912. maxframe/tensor/linalg/qr.py +124 -0
  913. maxframe/tensor/linalg/solve.py +72 -0
  914. maxframe/tensor/linalg/solve_triangular.py +103 -0
  915. maxframe/tensor/linalg/svd.py +167 -0
  916. maxframe/tensor/linalg/tensordot.py +213 -0
  917. maxframe/tensor/linalg/vdot.py +73 -0
  918. maxframe/tensor/linalg/vector_norm.py +113 -0
  919. maxframe/tensor/merge/__init__.py +21 -0
  920. maxframe/tensor/merge/append.py +74 -0
  921. maxframe/tensor/merge/column_stack.py +63 -0
  922. maxframe/tensor/merge/concatenate.py +103 -0
  923. maxframe/tensor/merge/dstack.py +71 -0
  924. maxframe/tensor/merge/hstack.py +70 -0
  925. maxframe/tensor/merge/stack.py +130 -0
  926. maxframe/tensor/merge/tests/__init__.py +13 -0
  927. maxframe/tensor/merge/tests/test_merge.py +79 -0
  928. maxframe/tensor/merge/vstack.py +74 -0
  929. maxframe/tensor/misc/__init__.py +72 -0
  930. maxframe/tensor/misc/argwhere.py +72 -0
  931. maxframe/tensor/misc/array_split.py +46 -0
  932. maxframe/tensor/misc/astype.py +121 -0
  933. maxframe/tensor/misc/atleast_1d.py +72 -0
  934. maxframe/tensor/misc/atleast_2d.py +70 -0
  935. maxframe/tensor/misc/atleast_3d.py +85 -0
  936. maxframe/tensor/misc/broadcast_arrays.py +57 -0
  937. maxframe/tensor/misc/broadcast_to.py +89 -0
  938. maxframe/tensor/misc/copy.py +64 -0
  939. maxframe/tensor/misc/copyto.py +130 -0
  940. maxframe/tensor/misc/delete.py +104 -0
  941. maxframe/tensor/misc/diff.py +115 -0
  942. maxframe/tensor/misc/dsplit.py +68 -0
  943. maxframe/tensor/misc/ediff1d.py +74 -0
  944. maxframe/tensor/misc/expand_dims.py +85 -0
  945. maxframe/tensor/misc/flatten.py +63 -0
  946. maxframe/tensor/misc/flip.py +90 -0
  947. maxframe/tensor/misc/fliplr.py +64 -0
  948. maxframe/tensor/misc/flipud.py +68 -0
  949. maxframe/tensor/misc/hsplit.py +85 -0
  950. maxframe/tensor/misc/in1d.py +94 -0
  951. maxframe/tensor/misc/insert.py +139 -0
  952. maxframe/tensor/misc/isin.py +130 -0
  953. maxframe/tensor/misc/moveaxis.py +83 -0
  954. maxframe/tensor/misc/ndim.py +53 -0
  955. maxframe/tensor/misc/ravel.py +90 -0
  956. maxframe/tensor/misc/repeat.py +129 -0
  957. maxframe/tensor/misc/result_type.py +88 -0
  958. maxframe/tensor/misc/roll.py +124 -0
  959. maxframe/tensor/misc/rollaxis.py +77 -0
  960. maxframe/tensor/misc/searchsorted.py +147 -0
  961. maxframe/tensor/misc/setdiff1d.py +58 -0
  962. maxframe/tensor/misc/shape.py +89 -0
  963. maxframe/tensor/misc/split.py +190 -0
  964. maxframe/tensor/misc/squeeze.py +117 -0
  965. maxframe/tensor/misc/swapaxes.py +113 -0
  966. maxframe/tensor/misc/tests/__init__.py +13 -0
  967. maxframe/tensor/misc/tests/test_misc.py +112 -0
  968. maxframe/tensor/misc/tile.py +109 -0
  969. maxframe/tensor/misc/transpose.py +133 -0
  970. maxframe/tensor/misc/trapezoid.py +123 -0
  971. maxframe/tensor/misc/unique.py +227 -0
  972. maxframe/tensor/misc/vsplit.py +74 -0
  973. maxframe/tensor/misc/where.py +129 -0
  974. maxframe/tensor/operators.py +83 -0
  975. maxframe/tensor/random/__init__.py +166 -0
  976. maxframe/tensor/random/beta.py +87 -0
  977. maxframe/tensor/random/binomial.py +135 -0
  978. maxframe/tensor/random/bytes.py +37 -0
  979. maxframe/tensor/random/chisquare.py +108 -0
  980. maxframe/tensor/random/choice.py +187 -0
  981. maxframe/tensor/random/core.py +249 -0
  982. maxframe/tensor/random/dirichlet.py +121 -0
  983. maxframe/tensor/random/exponential.py +92 -0
  984. maxframe/tensor/random/f.py +133 -0
  985. maxframe/tensor/random/gamma.py +126 -0
  986. maxframe/tensor/random/geometric.py +91 -0
  987. maxframe/tensor/random/gumbel.py +165 -0
  988. maxframe/tensor/random/hypergeometric.py +146 -0
  989. maxframe/tensor/random/laplace.py +131 -0
  990. maxframe/tensor/random/logistic.py +127 -0
  991. maxframe/tensor/random/lognormal.py +157 -0
  992. maxframe/tensor/random/logseries.py +120 -0
  993. maxframe/tensor/random/multinomial.py +131 -0
  994. maxframe/tensor/random/multivariate_normal.py +190 -0
  995. maxframe/tensor/random/negative_binomial.py +123 -0
  996. maxframe/tensor/random/noncentral_chisquare.py +130 -0
  997. maxframe/tensor/random/noncentral_f.py +124 -0
  998. maxframe/tensor/random/normal.py +141 -0
  999. maxframe/tensor/random/pareto.py +138 -0
  1000. maxframe/tensor/random/permutation.py +107 -0
  1001. maxframe/tensor/random/poisson.py +109 -0
  1002. maxframe/tensor/random/power.py +140 -0
  1003. maxframe/tensor/random/rand.py +80 -0
  1004. maxframe/tensor/random/randint.py +119 -0
  1005. maxframe/tensor/random/randn.py +94 -0
  1006. maxframe/tensor/random/random_integers.py +121 -0
  1007. maxframe/tensor/random/random_sample.py +84 -0
  1008. maxframe/tensor/random/rayleigh.py +108 -0
  1009. maxframe/tensor/random/shuffle.py +61 -0
  1010. maxframe/tensor/random/standard_cauchy.py +103 -0
  1011. maxframe/tensor/random/standard_exponential.py +70 -0
  1012. maxframe/tensor/random/standard_gamma.py +118 -0
  1013. maxframe/tensor/random/standard_normal.py +72 -0
  1014. maxframe/tensor/random/standard_t.py +133 -0
  1015. maxframe/tensor/random/tests/__init__.py +13 -0
  1016. maxframe/tensor/random/tests/test_random.py +165 -0
  1017. maxframe/tensor/random/triangular.py +117 -0
  1018. maxframe/tensor/random/uniform.py +129 -0
  1019. maxframe/tensor/random/vonmises.py +129 -0
  1020. maxframe/tensor/random/wald.py +112 -0
  1021. maxframe/tensor/random/weibull.py +138 -0
  1022. maxframe/tensor/random/zipf.py +120 -0
  1023. maxframe/tensor/rechunk/__init__.py +26 -0
  1024. maxframe/tensor/rechunk/rechunk.py +43 -0
  1025. maxframe/tensor/reduction/__init__.py +64 -0
  1026. maxframe/tensor/reduction/all.py +101 -0
  1027. maxframe/tensor/reduction/allclose.py +86 -0
  1028. maxframe/tensor/reduction/any.py +103 -0
  1029. maxframe/tensor/reduction/argmax.py +101 -0
  1030. maxframe/tensor/reduction/argmin.py +101 -0
  1031. maxframe/tensor/reduction/array_equal.py +63 -0
  1032. maxframe/tensor/reduction/core.py +166 -0
  1033. maxframe/tensor/reduction/count_nonzero.py +80 -0
  1034. maxframe/tensor/reduction/cumprod.py +95 -0
  1035. maxframe/tensor/reduction/cumsum.py +99 -0
  1036. maxframe/tensor/reduction/max.py +118 -0
  1037. maxframe/tensor/reduction/mean.py +122 -0
  1038. maxframe/tensor/reduction/min.py +118 -0
  1039. maxframe/tensor/reduction/nanargmax.py +80 -0
  1040. maxframe/tensor/reduction/nanargmin.py +74 -0
  1041. maxframe/tensor/reduction/nancumprod.py +89 -0
  1042. maxframe/tensor/reduction/nancumsum.py +92 -0
  1043. maxframe/tensor/reduction/nanmax.py +109 -0
  1044. maxframe/tensor/reduction/nanmean.py +105 -0
  1045. maxframe/tensor/reduction/nanmin.py +109 -0
  1046. maxframe/tensor/reduction/nanprod.py +92 -0
  1047. maxframe/tensor/reduction/nanstd.py +124 -0
  1048. maxframe/tensor/reduction/nansum.py +113 -0
  1049. maxframe/tensor/reduction/nanvar.py +149 -0
  1050. maxframe/tensor/reduction/prod.py +128 -0
  1051. maxframe/tensor/reduction/std.py +132 -0
  1052. maxframe/tensor/reduction/sum.py +123 -0
  1053. maxframe/tensor/reduction/tests/__init__.py +13 -0
  1054. maxframe/tensor/reduction/tests/test_reduction.py +189 -0
  1055. maxframe/tensor/reduction/var.py +176 -0
  1056. maxframe/tensor/reshape/__init__.py +15 -0
  1057. maxframe/tensor/reshape/reshape.py +192 -0
  1058. maxframe/tensor/reshape/tests/__init__.py +13 -0
  1059. maxframe/tensor/reshape/tests/test_reshape.py +35 -0
  1060. maxframe/tensor/sort/__init__.py +18 -0
  1061. maxframe/tensor/sort/argpartition.py +98 -0
  1062. maxframe/tensor/sort/argsort.py +150 -0
  1063. maxframe/tensor/sort/partition.py +228 -0
  1064. maxframe/tensor/sort/sort.py +295 -0
  1065. maxframe/tensor/spatial/__init__.py +15 -0
  1066. maxframe/tensor/spatial/distance/__init__.py +17 -0
  1067. maxframe/tensor/spatial/distance/cdist.py +421 -0
  1068. maxframe/tensor/spatial/distance/pdist.py +398 -0
  1069. maxframe/tensor/spatial/distance/squareform.py +153 -0
  1070. maxframe/tensor/special/__init__.py +175 -0
  1071. maxframe/tensor/special/airy.py +55 -0
  1072. maxframe/tensor/special/bessel.py +199 -0
  1073. maxframe/tensor/special/core.py +99 -0
  1074. maxframe/tensor/special/ellip_func_integrals.py +155 -0
  1075. maxframe/tensor/special/ellip_harm.py +55 -0
  1076. maxframe/tensor/special/err_fresnel.py +223 -0
  1077. maxframe/tensor/special/gamma_funcs.py +303 -0
  1078. maxframe/tensor/special/hypergeometric_funcs.py +69 -0
  1079. maxframe/tensor/special/info_theory.py +189 -0
  1080. maxframe/tensor/special/misc.py +163 -0
  1081. maxframe/tensor/special/statistical.py +56 -0
  1082. maxframe/tensor/statistics/__init__.py +24 -0
  1083. maxframe/tensor/statistics/average.py +143 -0
  1084. maxframe/tensor/statistics/bincount.py +133 -0
  1085. maxframe/tensor/statistics/corrcoef.py +77 -0
  1086. maxframe/tensor/statistics/cov.py +222 -0
  1087. maxframe/tensor/statistics/digitize.py +126 -0
  1088. maxframe/tensor/statistics/histogram.py +520 -0
  1089. maxframe/tensor/statistics/median.py +85 -0
  1090. maxframe/tensor/statistics/percentile.py +175 -0
  1091. maxframe/tensor/statistics/ptp.py +89 -0
  1092. maxframe/tensor/statistics/quantile.py +290 -0
  1093. maxframe/tensor/ufunc/__init__.py +24 -0
  1094. maxframe/tensor/ufunc/ufunc.py +198 -0
  1095. maxframe/tensor/utils.py +719 -0
  1096. maxframe/tests/__init__.py +13 -0
  1097. maxframe/tests/test_protocol.py +178 -0
  1098. maxframe/tests/test_udf.py +61 -0
  1099. maxframe/tests/test_utils.py +627 -0
  1100. maxframe/tests/utils.py +245 -0
  1101. maxframe/typing_.py +42 -0
  1102. maxframe/udf.py +435 -0
  1103. maxframe/utils.py +1774 -0
  1104. maxframe-2.4.0rc1.dist-info/METADATA +109 -0
  1105. maxframe-2.4.0rc1.dist-info/RECORD +1122 -0
  1106. maxframe-2.4.0rc1.dist-info/WHEEL +5 -0
  1107. maxframe-2.4.0rc1.dist-info/top_level.txt +3 -0
  1108. maxframe_client/__init__.py +16 -0
  1109. maxframe_client/clients/__init__.py +13 -0
  1110. maxframe_client/clients/framedriver.py +137 -0
  1111. maxframe_client/conftest.py +15 -0
  1112. maxframe_client/fetcher.py +411 -0
  1113. maxframe_client/session/__init__.py +22 -0
  1114. maxframe_client/session/consts.py +39 -0
  1115. maxframe_client/session/graph.py +125 -0
  1116. maxframe_client/session/odps.py +813 -0
  1117. maxframe_client/session/task.py +329 -0
  1118. maxframe_client/session/tests/__init__.py +13 -0
  1119. maxframe_client/session/tests/test_task.py +115 -0
  1120. maxframe_client/tests/__init__.py +13 -0
  1121. maxframe_client/tests/test_fetcher.py +215 -0
  1122. maxframe_client/tests/test_session.py +409 -0
@@ -0,0 +1,1266 @@
1
+ # Copyright 1999-2025 Alibaba Group Holding Ltd.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ from typing import List
16
+
17
+ import numpy as np
18
+
19
+ from ... import opcodes
20
+ from ... import tensor as mt
21
+ from ...core import ENTITY_TYPE, ExecutableTuple, OutputType
22
+ from ...core.operator import Operator
23
+ from ...serialization.serializables import (
24
+ AnyField,
25
+ BoolField,
26
+ FieldTypes,
27
+ Float64Field,
28
+ Int64Field,
29
+ KeyField,
30
+ ListField,
31
+ StringField,
32
+ )
33
+ from ...tensor.core import TensorOrder
34
+ from ...typing_ import EntityType
35
+ from ..core import LearnOperatorMixin
36
+ from ..utils import check_array, check_consistent_length
37
+ from ._check_targets import _check_targets
38
+
39
+
40
+ def _weighted_sum(sample_score, sample_weight, normalize=False):
41
+ if normalize:
42
+ return mt.average(sample_score, weights=sample_weight)
43
+ elif sample_weight is not None:
44
+ return mt.dot(sample_score, sample_weight)
45
+ else:
46
+ return sample_score.sum()
47
+
48
+
49
+ class AccuracyScore(Operator, LearnOperatorMixin):
50
+ _op_type_ = opcodes.ACCURACY_SCORE
51
+
52
+ y_true = AnyField("y_true", default=None)
53
+ y_pred = AnyField("y_pred", default=None)
54
+ normalize = BoolField("normalize", default=None)
55
+ sample_weight = AnyField("sample_weight", default=None)
56
+ type_true = KeyField("type_true", default=None)
57
+
58
+ @classmethod
59
+ def _set_inputs(cls, op: "AccuracyScore", inputs: List[EntityType]):
60
+ super()._set_inputs(op, inputs)
61
+ inputs_iter = iter(op.inputs)
62
+ if op.y_true is not None:
63
+ op.y_true = next(inputs_iter)
64
+ if op.y_pred is not None:
65
+ op.y_pred = next(inputs_iter)
66
+ if op.type_true is not None:
67
+ op.type_true = next(inputs_iter)
68
+ if isinstance(op.sample_weight, ENTITY_TYPE):
69
+ op.sample_weight = next(inputs_iter)
70
+
71
+ def __call__(self, y_true, y_pred):
72
+ self._output_types = [OutputType.tensor]
73
+ type_true, y_true, y_pred = _check_targets(y_true, y_pred)
74
+ self.type_true = type_true
75
+ inputs = [y_true, y_pred, type_true]
76
+ if isinstance(self.sample_weight, ENTITY_TYPE):
77
+ inputs.append(self.sample_weight)
78
+
79
+ dtype = (
80
+ np.dtype(float)
81
+ if self.normalize
82
+ else np.result_type(y_true.dtype, y_pred.dtype)
83
+ )
84
+ return self.new_tileable(
85
+ inputs, dtype=dtype, shape=(), order=TensorOrder.C_ORDER
86
+ )
87
+
88
+
89
+ def accuracy_score(
90
+ y_true,
91
+ y_pred,
92
+ normalize=True,
93
+ sample_weight=None,
94
+ execute=False,
95
+ session=None,
96
+ run_kwargs=None,
97
+ ):
98
+ """Accuracy classification score.
99
+
100
+ In multilabel classification, this function computes subset accuracy:
101
+ the set of labels predicted for a sample must *exactly* match the
102
+ corresponding set of labels in y_true.
103
+
104
+ Read more in the :ref:`User Guide <accuracy_score>`.
105
+
106
+ Parameters
107
+ ----------
108
+ y_true : 1d array-like, or label indicator tensor / sparse tensor
109
+ Ground truth (correct) labels.
110
+
111
+ y_pred : 1d array-like, or label indicator tensor / sparse tensor
112
+ Predicted labels, as returned by a classifier.
113
+
114
+ normalize : bool, optional (default=True)
115
+ If ``False``, return the number of correctly classified samples.
116
+ Otherwise, return the fraction of correctly classified samples.
117
+
118
+ sample_weight : array-like of shape (n_samples,), default=None
119
+ Sample weights.
120
+
121
+ Returns
122
+ -------
123
+ score : float
124
+ If ``normalize == True``, return the fraction of correctly
125
+ classified samples (float), else returns the number of correctly
126
+ classified samples (int).
127
+
128
+ The best performance is 1 with ``normalize == True`` and the number
129
+ of samples with ``normalize == False``.
130
+
131
+ See also
132
+ --------
133
+ jaccard_score, hamming_loss, zero_one_loss
134
+
135
+ Notes
136
+ -----
137
+ In binary and multiclass classification, this function is equal
138
+ to the ``jaccard_score`` function.
139
+
140
+ Examples
141
+ --------
142
+ >>> from maxframe.learn.metrics import accuracy_score
143
+ >>> y_pred = [0, 2, 1, 3]
144
+ >>> y_true = [0, 1, 2, 3]
145
+ >>> accuracy_score(y_true, y_pred).execute()
146
+ 0.5
147
+ >>> accuracy_score(y_true, y_pred, normalize=False).execute()
148
+ 2
149
+
150
+ In the multilabel case with binary label indicators:
151
+
152
+ >>> import maxframe.tensor as mt
153
+ >>> accuracy_score(mt.array([[0, 1], [1, 1]]), mt.ones((2, 2))).execute()
154
+ 0.5
155
+ """
156
+
157
+ # Compute accuracy for each possible representation
158
+ op = AccuracyScore(
159
+ y_true=y_true, y_pred=y_pred, normalize=normalize, sample_weight=sample_weight
160
+ )
161
+ score = op(y_true, y_pred)
162
+ if not execute:
163
+ return score
164
+ return score.execute(session=session, **(run_kwargs or dict()))
165
+
166
+
167
+ class LogLoss(Operator, LearnOperatorMixin):
168
+ _op_type_ = opcodes.LOG_LOSS
169
+
170
+ y_true = AnyField("y_true")
171
+ y_pred = AnyField("y_pred")
172
+ eps = Float64Field("eps", default=1e-15)
173
+ normalize = BoolField("normalize", default=True)
174
+ sample_weight = AnyField("sample_weight", default=None)
175
+ labels = AnyField("labels", default=None)
176
+
177
+ @classmethod
178
+ def _set_inputs(cls, op: "LogLoss", inputs: List[EntityType]):
179
+ super()._set_inputs(op, inputs)
180
+ inputs_iter = iter(op.inputs)
181
+ op.y_true = next(inputs_iter)
182
+ op.y_pred = next(inputs_iter)
183
+ if isinstance(op.sample_weight, ENTITY_TYPE):
184
+ op.sample_weight = next(inputs_iter)
185
+ if isinstance(op.labels, ENTITY_TYPE):
186
+ op.labels = next(inputs_iter)
187
+
188
+ def __call__(self, y_true, y_pred, sample_weight=None, labels=None):
189
+ self._output_types = [OutputType.tensor]
190
+ self.sample_weight = sample_weight
191
+ self.labels = labels
192
+ inputs = [y_true, y_pred]
193
+ if isinstance(self.sample_weight, ENTITY_TYPE):
194
+ inputs.append(self.sample_weight)
195
+ if isinstance(self.labels, ENTITY_TYPE):
196
+ inputs.append(self.labels)
197
+
198
+ dtype = (
199
+ np.dtype(float)
200
+ if self.normalize
201
+ else np.result_type(y_true.dtype, y_pred.dtype)
202
+ )
203
+ return self.new_tileable(
204
+ inputs, dtype=dtype, shape=(), order=TensorOrder.C_ORDER
205
+ )
206
+
207
+
208
+ def log_loss(
209
+ y_true,
210
+ y_pred,
211
+ *,
212
+ eps=1e-15,
213
+ normalize=True,
214
+ sample_weight=None,
215
+ labels=None,
216
+ execute=False,
217
+ session=None,
218
+ run_kwargs=None,
219
+ ):
220
+ r"""Log loss, aka logistic loss or cross-entropy loss.
221
+
222
+ This is the loss function used in (multinomial) logistic regression
223
+ and extensions of it such as neural networks, defined as the negative
224
+ log-likelihood of a logistic model that returns ``y_pred`` probabilities
225
+ for its training data ``y_true``.
226
+ The log loss is only defined for two or more labels.
227
+ For a single sample with true label :math:`y \in \{0,1\}` and
228
+ and a probability estimate :math:`p = \operatorname{Pr}(y = 1)`, the log
229
+ loss is:
230
+
231
+ .. math::
232
+ L_{\log}(y, p) = -(y \log (p) + (1 - y) \log (1 - p))
233
+
234
+ Read more in the :ref:`User Guide <log_loss>`.
235
+
236
+ Parameters
237
+ ----------
238
+ y_true : array-like or label indicator matrix
239
+ Ground truth (correct) labels for n_samples samples.
240
+
241
+ y_pred : array-like of float, shape = (n_samples, n_classes) or (n_samples,)
242
+ Predicted probabilities, as returned by a classifier's
243
+ predict_proba method. If ``y_pred.shape = (n_samples,)``
244
+ the probabilities provided are assumed to be that of the
245
+ positive class. The labels in ``y_pred`` are assumed to be
246
+ ordered alphabetically, as done by
247
+ :class:`preprocessing.LabelBinarizer`.
248
+
249
+ eps : float, default=1e-15
250
+ Log loss is undefined for p=0 or p=1, so probabilities are
251
+ clipped to max(eps, min(1 - eps, p)).
252
+
253
+ normalize : bool, default=True
254
+ If true, return the mean loss per sample.
255
+ Otherwise, return the sum of the per-sample losses.
256
+
257
+ sample_weight : array-like of shape (n_samples,), default=None
258
+ Sample weights.
259
+
260
+ labels : array-like, default=None
261
+ If not provided, labels will be inferred from y_true. If ``labels``
262
+ is ``None`` and ``y_pred`` has shape (n_samples,) the labels are
263
+ assumed to be binary and are inferred from ``y_true``.
264
+
265
+ Returns
266
+ -------
267
+ loss : float
268
+
269
+ Notes
270
+ -----
271
+ The logarithm used is the natural logarithm (base-e).
272
+
273
+ Examples
274
+ --------
275
+ >>> from maxframe.learn.metrics import log_loss
276
+ >>> log_loss(["spam", "ham", "ham", "spam"],
277
+ ... [[.1, .9], [.9, .1], [.8, .2], [.35, .65]])
278
+ 0.21616...
279
+
280
+ References
281
+ ----------
282
+ C.M. Bishop (2006). Pattern Recognition and Machine Learning. Springer,
283
+ p. 209.
284
+ """
285
+ if not isinstance(y_true, (ENTITY_TYPE, np.ndarray)):
286
+ y_true = mt.array(y_true)
287
+ if not isinstance(y_pred, (ENTITY_TYPE, np.ndarray)):
288
+ y_pred = mt.array(y_pred)
289
+ if sample_weight is not None and not isinstance(y_pred, (ENTITY_TYPE, np.ndarray)):
290
+ sample_weight = mt.array(sample_weight)
291
+ if labels is not None and not isinstance(labels, (ENTITY_TYPE, np.ndarray)):
292
+ labels = mt.array(labels)
293
+
294
+ y_pred = check_array(y_pred, ensure_2d=False)
295
+ y_pred, y_true, sample_weight = check_consistent_length(
296
+ y_pred, y_true, sample_weight
297
+ )
298
+
299
+ op = LogLoss(eps=eps, normalize=normalize)
300
+ res = op(
301
+ y_true=y_true,
302
+ y_pred=y_pred,
303
+ sample_weight=sample_weight,
304
+ labels=labels,
305
+ )
306
+ if execute:
307
+ return res.execute(session=session, **(run_kwargs or {}))
308
+ return res
309
+
310
+
311
+ class MultiLabelConfusionMatrix(Operator, LearnOperatorMixin):
312
+ _op_type_ = opcodes.MULTILABEL_CONFUSION_MATRIX
313
+
314
+ y_true = KeyField("y_true", default=None)
315
+ y_pred = KeyField("y_pred", default=None)
316
+ sample_weight = AnyField("sample_weight", default=None)
317
+ labels = AnyField("labels", default=None)
318
+ samplewise = BoolField("samplewise", default=False)
319
+
320
+ @classmethod
321
+ def _set_inputs(cls, op: "MultiLabelConfusionMatrix", inputs: List[EntityType]):
322
+ super()._set_inputs(op, inputs)
323
+ inputs_iter = iter(op.inputs)
324
+ if isinstance(op.y_true, ENTITY_TYPE):
325
+ op.y_true = next(inputs_iter)
326
+ if isinstance(op.y_pred, ENTITY_TYPE):
327
+ op.y_pred = next(inputs_iter)
328
+ if isinstance(op.sample_weight, ENTITY_TYPE):
329
+ op.sample_weight = next(inputs_iter)
330
+ if isinstance(op.labels, ENTITY_TYPE):
331
+ op.labels = next(inputs_iter)
332
+
333
+ def __call__(self, y_true, y_pred, sample_weight=None, labels=None):
334
+ self._output_types = [OutputType.tensor]
335
+
336
+ self.y_true = y_true
337
+ self.y_pred = y_pred
338
+ self.sample_weight = sample_weight
339
+ self.labels = labels
340
+
341
+ if not self.samplewise:
342
+ tensor_size = np.nan
343
+ else:
344
+ tensor_size = y_true.shape[0]
345
+
346
+ inputs = [y_true, y_pred, sample_weight, labels]
347
+ inputs = [t for t in inputs if isinstance(t, ENTITY_TYPE)]
348
+ return self.new_tileable(inputs, shape=(tensor_size, 2, 2), dtype=np.dtype(int))
349
+
350
+
351
+ def multilabel_confusion_matrix(
352
+ y_true,
353
+ y_pred,
354
+ *,
355
+ sample_weight=None,
356
+ labels=None,
357
+ samplewise=False,
358
+ execute=False,
359
+ session=None,
360
+ run_kwargs=None,
361
+ ):
362
+ """
363
+ Compute a confusion matrix for each class or sample.
364
+
365
+ Compute class-wise (default) or sample-wise (samplewise=True) multilabel
366
+ confusion matrix to evaluate the accuracy of a classification, and output
367
+ confusion matrices for each class or sample.
368
+
369
+ In multilabel confusion matrix :math:`MCM`, the count of true negatives
370
+ is :math:`MCM_{:,0,0}`, false negatives is :math:`MCM_{:,1,0}`,
371
+ true positives is :math:`MCM_{:,1,1}` and false positives is
372
+ :math:`MCM_{:,0,1}`.
373
+
374
+ Multiclass data will be treated as if binarized under a one-vs-rest
375
+ transformation. Returned confusion matrices will be in the order of
376
+ sorted unique labels in the union of (y_true, y_pred).
377
+
378
+ Read more in the :ref:`User Guide <multilabel_confusion_matrix>`.
379
+
380
+ Parameters
381
+ ----------
382
+ y_true : {array-like, sparse matrix} of shape (n_samples, n_outputs) or \
383
+ (n_samples,)
384
+ Ground truth (correct) target values.
385
+
386
+ y_pred : {array-like, sparse matrix} of shape (n_samples, n_outputs) or \
387
+ (n_samples,)
388
+ Estimated targets as returned by a classifier.
389
+
390
+ sample_weight : array-like of shape (n_samples,), default=None
391
+ Sample weights.
392
+
393
+ labels : array-like of shape (n_classes,), default=None
394
+ A list of classes or column indices to select some (or to force
395
+ inclusion of classes absent from the data).
396
+
397
+ samplewise : bool, default=False
398
+ In the multilabel case, this calculates a confusion matrix per sample.
399
+
400
+ Returns
401
+ -------
402
+ multi_confusion : ndarray of shape (n_outputs, 2, 2)
403
+ A 2x2 confusion matrix corresponding to each output in the input.
404
+ When calculating class-wise multi_confusion (default), then
405
+ n_outputs = n_labels; when calculating sample-wise multi_confusion
406
+ (samplewise=True), n_outputs = n_samples. If ``labels`` is defined,
407
+ the results will be returned in the order specified in ``labels``,
408
+ otherwise the results will be returned in sorted order by default.
409
+
410
+ See Also
411
+ --------
412
+ confusion_matrix : Compute confusion matrix to evaluate the accuracy of a
413
+ classifier.
414
+
415
+ Notes
416
+ -----
417
+ The `multilabel_confusion_matrix` calculates class-wise or sample-wise
418
+ multilabel confusion matrices, and in multiclass tasks, labels are
419
+ binarized under a one-vs-rest way; while
420
+ :func:`~sklearn.metrics.confusion_matrix` calculates one confusion matrix
421
+ for confusion between every two classes.
422
+
423
+ Examples
424
+ --------
425
+ Multiclass case:
426
+
427
+ >>> import maxframe.tensor as mt
428
+ >>> from maxframe.learn.metrics import multilabel_confusion_matrix
429
+ >>> y_true = ["cat", "ant", "cat", "cat", "ant", "bird"]
430
+ >>> y_pred = ["ant", "ant", "cat", "cat", "ant", "cat"]
431
+ >>> multilabel_confusion_matrix(y_true, y_pred,
432
+ ... labels=["ant", "bird", "cat"]).execute()
433
+ array([[[3, 1],
434
+ [0, 2]],
435
+ <BLANKLINE>
436
+ [[5, 0],
437
+ [1, 0]],
438
+ <BLANKLINE>
439
+ [[2, 1],
440
+ [1, 2]]])
441
+
442
+ Multilabel-indicator case not implemented yet.
443
+ """
444
+ if not isinstance(y_true, (ENTITY_TYPE, np.ndarray)):
445
+ y_true = mt.array(y_true)
446
+ if not isinstance(y_pred, (ENTITY_TYPE, np.ndarray)):
447
+ y_pred = mt.array(y_pred)
448
+ if sample_weight is not None and not isinstance(y_pred, (ENTITY_TYPE, np.ndarray)):
449
+ sample_weight = mt.array(sample_weight)
450
+ if labels is not None and not isinstance(labels, (ENTITY_TYPE, np.ndarray)):
451
+ labels = mt.array(labels)
452
+
453
+ op = MultiLabelConfusionMatrix(samplewise=samplewise)
454
+ res = op(
455
+ y_true=y_true,
456
+ y_pred=y_pred,
457
+ sample_weight=sample_weight,
458
+ labels=labels,
459
+ )
460
+ if execute:
461
+ return res.execute(session=session, **(run_kwargs or {}))
462
+ return res
463
+
464
+
465
+ def _check_zero_division(zero_division): # pragma: no cover
466
+ if isinstance(zero_division, str) and zero_division == "warn":
467
+ return
468
+ elif isinstance(zero_division, (int, float)) and zero_division in [0, 1]:
469
+ return
470
+ raise ValueError(
471
+ "Got zero_division={0}." ' Must be one of ["warn", 0, 1]'.format(zero_division)
472
+ )
473
+
474
+
475
+ class PrecisionRecallFScoreSupport(Operator, LearnOperatorMixin):
476
+ _op_type_ = opcodes.PRECISION_RECALL_F_SCORE_SUPPORT
477
+
478
+ y_true = KeyField("y_true", default=None)
479
+ y_pred = KeyField("y_pred", default=None)
480
+ beta = Float64Field("beta", default=1.0)
481
+ labels = AnyField("labels", default=None)
482
+ pos_label = Int64Field("pos_label", default=1)
483
+ average = StringField("average", default=None)
484
+ warn_for = ListField("warn_for", FieldTypes.string, default=None)
485
+ sample_weight = KeyField("sample_weight", default=None)
486
+ zero_division = AnyField("zero_division", default=None)
487
+
488
+ @property
489
+ def output_limit(self) -> int:
490
+ return 3 if self.average else 4
491
+
492
+ @classmethod
493
+ def _set_inputs(cls, op: "PrecisionRecallFScoreSupport", inputs: List[EntityType]):
494
+ super()._set_inputs(op, inputs)
495
+ inputs_iter = iter(op.inputs)
496
+ if op.y_true is not None:
497
+ op.y_true = next(inputs_iter)
498
+ if op.y_pred is not None:
499
+ op.y_pred = next(inputs_iter)
500
+ if isinstance(op.sample_weight, ENTITY_TYPE):
501
+ op.sample_weight = next(inputs_iter)
502
+ if isinstance(op.labels, ENTITY_TYPE):
503
+ op.labels = next(inputs_iter)
504
+
505
+ def __call__(self, y_true, y_pred, sample_weight=None, labels=None):
506
+ self._output_types = [OutputType.tensor] * 4
507
+
508
+ self.y_true = y_true
509
+ self.y_pred = y_pred
510
+ self.sample_weight = sample_weight
511
+ self.labels = labels
512
+
513
+ inputs = [y_true, y_pred, sample_weight, labels]
514
+ inputs = [t for t in inputs if isinstance(t, ENTITY_TYPE)]
515
+
516
+ if self.average:
517
+ if self.average == "samples":
518
+ tensor_shape = (y_true.shape[0],)
519
+ else:
520
+ tensor_shape = ()
521
+ else:
522
+ tensor_shape = (np.nan,)
523
+
524
+ kws = [{"dtype": np.dtype(float), "shape": tensor_shape}] * 3
525
+ if not self.average:
526
+ kws.append({"dtype": np.dtype(int), "shape": tensor_shape})
527
+ return self.new_tileables(inputs, kws=kws)
528
+
529
+
530
+ def precision_recall_fscore_support(
531
+ y_true,
532
+ y_pred,
533
+ *,
534
+ beta=1.0,
535
+ labels=None,
536
+ pos_label=1,
537
+ average=None,
538
+ warn_for=("precision", "recall", "f-score"),
539
+ sample_weight=None,
540
+ zero_division="warn",
541
+ execute=False,
542
+ session=None,
543
+ run_kwargs=None,
544
+ ):
545
+ """Compute precision, recall, F-measure and support for each class
546
+
547
+ The precision is the ratio ``tp / (tp + fp)`` where ``tp`` is the number of
548
+ true positives and ``fp`` the number of false positives. The precision is
549
+ intuitively the ability of the classifier not to label as positive a sample
550
+ that is negative.
551
+
552
+ The recall is the ratio ``tp / (tp + fn)`` where ``tp`` is the number of
553
+ true positives and ``fn`` the number of false negatives. The recall is
554
+ intuitively the ability of the classifier to find all the positive samples.
555
+
556
+ The F-beta score can be interpreted as a weighted harmonic mean of
557
+ the precision and recall, where an F-beta score reaches its best
558
+ value at 1 and worst score at 0.
559
+
560
+ The F-beta score weights recall more than precision by a factor of
561
+ ``beta``. ``beta == 1.0`` means recall and precision are equally important.
562
+
563
+ The support is the number of occurrences of each class in ``y_true``.
564
+
565
+ If ``pos_label is None`` and in binary classification, this function
566
+ returns the average precision, recall and F-measure if ``average``
567
+ is one of ``'micro'``, ``'macro'``, ``'weighted'`` or ``'samples'``.
568
+
569
+ Read more in the :ref:`User Guide <precision_recall_f_measure_metrics>`.
570
+
571
+ Parameters
572
+ ----------
573
+ y_true : 1d array-like, or label indicator array / sparse matrix
574
+ Ground truth (correct) target values.
575
+
576
+ y_pred : 1d array-like, or label indicator array / sparse matrix
577
+ Estimated targets as returned by a classifier.
578
+
579
+ beta : float, 1.0 by default
580
+ The strength of recall versus precision in the F-score.
581
+
582
+ labels : list, optional
583
+ The set of labels to include when ``average != 'binary'``, and their
584
+ order if ``average is None``. Labels present in the data can be
585
+ excluded, for example to calculate a multiclass average ignoring a
586
+ majority negative class, while labels not present in the data will
587
+ result in 0 components in a macro average. For multilabel targets,
588
+ labels are column indices. By default, all labels in ``y_true`` and
589
+ ``y_pred`` are used in sorted order.
590
+
591
+ pos_label : str or int, 1 by default
592
+ The class to report if ``average='binary'`` and the data is binary.
593
+ If the data are multiclass or multilabel, this will be ignored;
594
+ setting ``labels=[pos_label]`` and ``average != 'binary'`` will report
595
+ scores for that label only.
596
+
597
+ average : string, [None (default), 'binary', 'micro', 'macro', 'samples', \
598
+ 'weighted']
599
+ If ``None``, the scores for each class are returned. Otherwise, this
600
+ determines the type of averaging performed on the data:
601
+
602
+ ``'binary'``:
603
+ Only report results for the class specified by ``pos_label``.
604
+ This is applicable only if targets (``y_{true,pred}``) are binary.
605
+ ``'micro'``:
606
+ Calculate metrics globally by counting the total true positives,
607
+ false negatives and false positives.
608
+ ``'macro'``:
609
+ Calculate metrics for each label, and find their unweighted
610
+ mean. This does not take label imbalance into account.
611
+ ``'weighted'``:
612
+ Calculate metrics for each label, and find their average weighted
613
+ by support (the number of true instances for each label). This
614
+ alters 'macro' to account for label imbalance; it can result in an
615
+ F-score that is not between precision and recall.
616
+ ``'samples'``:
617
+ Calculate metrics for each instance, and find their average (only
618
+ meaningful for multilabel classification where this differs from
619
+ :func:`accuracy_score`).
620
+
621
+ warn_for : tuple or set, for internal use
622
+ This determines which warnings will be made in the case that this
623
+ function is being used to return only one of its metrics.
624
+
625
+ sample_weight : array-like of shape (n_samples,), default=None
626
+ Sample weights.
627
+
628
+ zero_division : "warn", 0 or 1, default="warn"
629
+ Sets the value to return when there is a zero division:
630
+ - recall: when there are no positive labels
631
+ - precision: when there are no positive predictions
632
+ - f-score: both
633
+
634
+ If set to "warn", this acts as 0, but warnings are also raised.
635
+
636
+ Returns
637
+ -------
638
+ precision : float (if average is not None) or array of float, shape =\
639
+ [n_unique_labels]
640
+
641
+ recall : float (if average is not None) or array of float, , shape =\
642
+ [n_unique_labels]
643
+
644
+ fbeta_score : float (if average is not None) or array of float, shape =\
645
+ [n_unique_labels]
646
+
647
+ support : None (if average is not None) or array of int, shape =\
648
+ [n_unique_labels]
649
+ The number of occurrences of each label in ``y_true``.
650
+
651
+ References
652
+ ----------
653
+ .. [1] `Wikipedia entry for the Precision and recall
654
+ <https://en.wikipedia.org/wiki/Precision_and_recall>`_
655
+
656
+ .. [2] `Wikipedia entry for the F1-score
657
+ <https://en.wikipedia.org/wiki/F1_score>`_
658
+
659
+ .. [3] `Discriminative Methods for Multi-labeled Classification Advances
660
+ in Knowledge Discovery and Data Mining (2004), pp. 22-30 by Shantanu
661
+ Godbole, Sunita Sarawagi
662
+ <http://www.godbole.net/shantanu/pubs/multilabelsvm-pakdd04.pdf>`_
663
+
664
+ Examples
665
+ --------
666
+ >>> import numpy as np
667
+ >>> from maxframe.learn.metrics import precision_recall_fscore_support
668
+ >>> y_true = np.array(['cat', 'dog', 'pig', 'cat', 'dog', 'pig'])
669
+ >>> y_pred = np.array(['cat', 'pig', 'dog', 'cat', 'cat', 'dog'])
670
+ >>> precision_recall_fscore_support(y_true, y_pred, average='macro')
671
+ (0.22..., 0.33..., 0.26..., None)
672
+ >>> precision_recall_fscore_support(y_true, y_pred, average='micro')
673
+ (0.33..., 0.33..., 0.33..., None)
674
+ >>> precision_recall_fscore_support(y_true, y_pred, average='weighted')
675
+ (0.22..., 0.33..., 0.26..., None)
676
+
677
+ It is possible to compute per-label precisions, recalls, F1-scores and
678
+ supports instead of averaging:
679
+
680
+ >>> precision_recall_fscore_support(y_true, y_pred, average=None,
681
+ ... labels=['pig', 'dog', 'cat'])
682
+ (array([0. , 0. , 0.66...]),
683
+ array([0., 0., 1.]), array([0. , 0. , 0.8]),
684
+ array([2, 2, 2]))
685
+
686
+ Notes
687
+ -----
688
+ When ``true positive + false positive == 0``, precision is undefined;
689
+ When ``true positive + false negative == 0``, recall is undefined.
690
+ In such cases, by default the metric will be set to 0, as will f-score,
691
+ and ``UndefinedMetricWarning`` will be raised. This behavior can be
692
+ modified with ``zero_division``.
693
+ """
694
+ _check_zero_division(zero_division)
695
+ if beta < 0:
696
+ raise ValueError("beta should be >=0 in the F-beta score")
697
+
698
+ if not isinstance(y_true, (ENTITY_TYPE, np.ndarray)):
699
+ y_true = mt.array(y_true)
700
+ if not isinstance(y_pred, (ENTITY_TYPE, np.ndarray)):
701
+ y_pred = mt.array(y_pred)
702
+ if sample_weight is not None and not isinstance(y_pred, (ENTITY_TYPE, np.ndarray)):
703
+ sample_weight = mt.array(sample_weight)
704
+ if labels is not None and not isinstance(labels, (ENTITY_TYPE, np.ndarray)):
705
+ labels = mt.array(labels)
706
+
707
+ op = PrecisionRecallFScoreSupport(
708
+ beta=beta,
709
+ pos_label=pos_label,
710
+ average=average,
711
+ warn_for=warn_for,
712
+ zero_division=zero_division,
713
+ )
714
+ res = ExecutableTuple(
715
+ op(y_true, y_pred, sample_weight=sample_weight, labels=labels)
716
+ )
717
+ if execute:
718
+ res = res.execute(session=session, **(run_kwargs or {}))
719
+ return res if op.output_limit == 4 else res + (None,)
720
+
721
+
722
+ def precision_score(
723
+ y_true,
724
+ y_pred,
725
+ *,
726
+ labels=None,
727
+ pos_label=1,
728
+ average="binary",
729
+ sample_weight=None,
730
+ zero_division="warn",
731
+ execute=False,
732
+ session=None,
733
+ run_kwargs=None,
734
+ ):
735
+ """Compute the precision
736
+
737
+ The precision is the ratio ``tp / (tp + fp)`` where ``tp`` is the number of
738
+ true positives and ``fp`` the number of false positives. The precision is
739
+ intuitively the ability of the classifier not to label as positive a sample
740
+ that is negative.
741
+
742
+ The best value is 1 and the worst value is 0.
743
+
744
+ Read more in the :ref:`User Guide <precision_recall_f_measure_metrics>`.
745
+
746
+ Parameters
747
+ ----------
748
+ y_true : 1d array-like, or label indicator array / sparse matrix
749
+ Ground truth (correct) target values.
750
+
751
+ y_pred : 1d array-like, or label indicator array / sparse matrix
752
+ Estimated targets as returned by a classifier.
753
+
754
+ labels : list, optional
755
+ The set of labels to include when ``average != 'binary'``, and their
756
+ order if ``average is None``. Labels present in the data can be
757
+ excluded, for example to calculate a multiclass average ignoring a
758
+ majority negative class, while labels not present in the data will
759
+ result in 0 components in a macro average. For multilabel targets,
760
+ labels are column indices. By default, all labels in ``y_true`` and
761
+ ``y_pred`` are used in sorted order.
762
+
763
+ pos_label : str or int, 1 by default
764
+ The class to report if ``average='binary'`` and the data is binary.
765
+ If the data are multiclass or multilabel, this will be ignored;
766
+ setting ``labels=[pos_label]`` and ``average != 'binary'`` will report
767
+ scores for that label only.
768
+
769
+ average : string, [None, 'binary' (default), 'micro', 'macro', 'samples', \
770
+ 'weighted']
771
+ This parameter is required for multiclass/multilabel targets.
772
+ If ``None``, the scores for each class are returned. Otherwise, this
773
+ determines the type of averaging performed on the data:
774
+
775
+ ``'binary'``:
776
+ Only report results for the class specified by ``pos_label``.
777
+ This is applicable only if targets (``y_{true,pred}``) are binary.
778
+ ``'micro'``:
779
+ Calculate metrics globally by counting the total true positives,
780
+ false negatives and false positives.
781
+ ``'macro'``:
782
+ Calculate metrics for each label, and find their unweighted
783
+ mean. This does not take label imbalance into account.
784
+ ``'weighted'``:
785
+ Calculate metrics for each label, and find their average weighted
786
+ by support (the number of true instances for each label). This
787
+ alters 'macro' to account for label imbalance; it can result in an
788
+ F-score that is not between precision and recall.
789
+ ``'samples'``:
790
+ Calculate metrics for each instance, and find their average (only
791
+ meaningful for multilabel classification where this differs from
792
+ :func:`accuracy_score`).
793
+
794
+ sample_weight : array-like of shape (n_samples,), default=None
795
+ Sample weights.
796
+
797
+ zero_division : "warn", 0 or 1, default="warn"
798
+ Sets the value to return when there is a zero division. If set to
799
+ "warn", this acts as 0, but warnings are also raised.
800
+
801
+ Returns
802
+ -------
803
+ precision : float (if average is not None) or array of float, shape =\
804
+ [n_unique_labels]
805
+ Precision of the positive class in binary classification or weighted
806
+ average of the precision of each class for the multiclass task.
807
+
808
+ See also
809
+ --------
810
+ precision_recall_fscore_support, multilabel_confusion_matrix
811
+
812
+ Examples
813
+ --------
814
+ >>> from maxframe.learn.metrics import precision_score
815
+ >>> y_true = [0, 1, 2, 0, 1, 2]
816
+ >>> y_pred = [0, 2, 1, 0, 0, 1]
817
+ >>> precision_score(y_true, y_pred, average='macro')
818
+ 0.22...
819
+ >>> precision_score(y_true, y_pred, average='micro')
820
+ 0.33...
821
+ >>> precision_score(y_true, y_pred, average='weighted')
822
+ 0.22...
823
+ >>> precision_score(y_true, y_pred, average=None)
824
+ array([0.66..., 0. , 0. ])
825
+ >>> y_pred = [0, 0, 0, 0, 0, 0]
826
+ >>> precision_score(y_true, y_pred, average=None)
827
+ array([0.33..., 0. , 0. ])
828
+ >>> precision_score(y_true, y_pred, average=None, zero_division=1)
829
+ array([0.33..., 1. , 1. ])
830
+
831
+ Notes
832
+ -----
833
+ When ``true positive + false positive == 0``, precision returns 0 and
834
+ raises ``UndefinedMetricWarning``. This behavior can be
835
+ modified with ``zero_division``.
836
+
837
+ """
838
+ p, _, _, _ = precision_recall_fscore_support(
839
+ y_true,
840
+ y_pred,
841
+ labels=labels,
842
+ pos_label=pos_label,
843
+ average=average,
844
+ warn_for=("precision",),
845
+ sample_weight=sample_weight,
846
+ zero_division=zero_division,
847
+ execute=execute,
848
+ session=session,
849
+ run_kwargs=run_kwargs,
850
+ )
851
+ return p
852
+
853
+
854
+ def recall_score(
855
+ y_true,
856
+ y_pred,
857
+ *,
858
+ labels=None,
859
+ pos_label=1,
860
+ average="binary",
861
+ sample_weight=None,
862
+ zero_division="warn",
863
+ execute=False,
864
+ session=None,
865
+ run_kwargs=None,
866
+ ):
867
+ """Compute the recall
868
+
869
+ The recall is the ratio ``tp / (tp + fn)`` where ``tp`` is the number of
870
+ true positives and ``fn`` the number of false negatives. The recall is
871
+ intuitively the ability of the classifier to find all the positive samples.
872
+
873
+ The best value is 1 and the worst value is 0.
874
+
875
+ Read more in the :ref:`User Guide <precision_recall_f_measure_metrics>`.
876
+
877
+ Parameters
878
+ ----------
879
+ y_true : 1d array-like, or label indicator array / sparse matrix
880
+ Ground truth (correct) target values.
881
+
882
+ y_pred : 1d array-like, or label indicator array / sparse matrix
883
+ Estimated targets as returned by a classifier.
884
+
885
+ labels : list, optional
886
+ The set of labels to include when ``average != 'binary'``, and their
887
+ order if ``average is None``. Labels present in the data can be
888
+ excluded, for example to calculate a multiclass average ignoring a
889
+ majority negative class, while labels not present in the data will
890
+ result in 0 components in a macro average. For multilabel targets,
891
+ labels are column indices. By default, all labels in ``y_true`` and
892
+ ``y_pred`` are used in sorted order.
893
+
894
+ pos_label : str or int, 1 by default
895
+ The class to report if ``average='binary'`` and the data is binary.
896
+ If the data are multiclass or multilabel, this will be ignored;
897
+ setting ``labels=[pos_label]`` and ``average != 'binary'`` will report
898
+ scores for that label only.
899
+
900
+ average : string, [None, 'binary' (default), 'micro', 'macro', 'samples', \
901
+ 'weighted']
902
+ This parameter is required for multiclass/multilabel targets.
903
+ If ``None``, the scores for each class are returned. Otherwise, this
904
+ determines the type of averaging performed on the data:
905
+
906
+ ``'binary'``:
907
+ Only report results for the class specified by ``pos_label``.
908
+ This is applicable only if targets (``y_{true,pred}``) are binary.
909
+ ``'micro'``:
910
+ Calculate metrics globally by counting the total true positives,
911
+ false negatives and false positives.
912
+ ``'macro'``:
913
+ Calculate metrics for each label, and find their unweighted
914
+ mean. This does not take label imbalance into account.
915
+ ``'weighted'``:
916
+ Calculate metrics for each label, and find their average weighted
917
+ by support (the number of true instances for each label). This
918
+ alters 'macro' to account for label imbalance; it can result in an
919
+ F-score that is not between precision and recall.
920
+ ``'samples'``:
921
+ Calculate metrics for each instance, and find their average (only
922
+ meaningful for multilabel classification where this differs from
923
+ :func:`accuracy_score`).
924
+
925
+ sample_weight : array-like of shape (n_samples,), default=None
926
+ Sample weights.
927
+
928
+ zero_division : "warn", 0 or 1, default="warn"
929
+ Sets the value to return when there is a zero division. If set to
930
+ "warn", this acts as 0, but warnings are also raised.
931
+
932
+ Returns
933
+ -------
934
+ recall : float (if average is not None) or array of float, shape =\
935
+ [n_unique_labels]
936
+ Recall of the positive class in binary classification or weighted
937
+ average of the recall of each class for the multiclass task.
938
+
939
+ See also
940
+ --------
941
+ precision_recall_fscore_support, balanced_accuracy_score,
942
+ multilabel_confusion_matrix
943
+
944
+ Examples
945
+ --------
946
+ >>> from maxframe.learn.metrics import recall_score
947
+ >>> y_true = [0, 1, 2, 0, 1, 2]
948
+ >>> y_pred = [0, 2, 1, 0, 0, 1]
949
+ >>> recall_score(y_true, y_pred, average='macro')
950
+ 0.33...
951
+ >>> recall_score(y_true, y_pred, average='micro')
952
+ 0.33...
953
+ >>> recall_score(y_true, y_pred, average='weighted')
954
+ 0.33...
955
+ >>> recall_score(y_true, y_pred, average=None)
956
+ array([1., 0., 0.])
957
+ >>> y_true = [0, 0, 0, 0, 0, 0]
958
+ >>> recall_score(y_true, y_pred, average=None)
959
+ array([0.5, 0. , 0. ])
960
+ >>> recall_score(y_true, y_pred, average=None, zero_division=1)
961
+ array([0.5, 1. , 1. ])
962
+
963
+ Notes
964
+ -----
965
+ When ``true positive + false negative == 0``, recall returns 0 and raises
966
+ ``UndefinedMetricWarning``. This behavior can be modified with
967
+ ``zero_division``.
968
+ """
969
+ _, r, _, _ = precision_recall_fscore_support(
970
+ y_true,
971
+ y_pred,
972
+ labels=labels,
973
+ pos_label=pos_label,
974
+ average=average,
975
+ warn_for=("recall",),
976
+ sample_weight=sample_weight,
977
+ zero_division=zero_division,
978
+ execute=execute,
979
+ session=session,
980
+ run_kwargs=run_kwargs,
981
+ )
982
+ return r
983
+
984
+
985
+ def f1_score(
986
+ y_true,
987
+ y_pred,
988
+ *,
989
+ labels=None,
990
+ pos_label=1,
991
+ average="binary",
992
+ sample_weight=None,
993
+ zero_division="warn",
994
+ execute=False,
995
+ session=None,
996
+ run_kwargs=None,
997
+ ):
998
+ """Compute the F1 score, also known as balanced F-score or F-measure
999
+
1000
+ The F1 score can be interpreted as a weighted average of the precision and
1001
+ recall, where an F1 score reaches its best value at 1 and worst score at 0.
1002
+ The relative contribution of precision and recall to the F1 score are
1003
+ equal. The formula for the F1 score is::
1004
+
1005
+ F1 = 2 * (precision * recall) / (precision + recall)
1006
+
1007
+ In the multi-class and multi-label case, this is the average of
1008
+ the F1 score of each class with weighting depending on the ``average``
1009
+ parameter.
1010
+
1011
+ Read more in the :ref:`User Guide <precision_recall_f_measure_metrics>`.
1012
+
1013
+ Parameters
1014
+ ----------
1015
+ y_true : 1d array-like, or label indicator array / sparse matrix
1016
+ Ground truth (correct) target values.
1017
+
1018
+ y_pred : 1d array-like, or label indicator array / sparse matrix
1019
+ Estimated targets as returned by a classifier.
1020
+
1021
+ labels : list, optional
1022
+ The set of labels to include when ``average != 'binary'``, and their
1023
+ order if ``average is None``. Labels present in the data can be
1024
+ excluded, for example to calculate a multiclass average ignoring a
1025
+ majority negative class, while labels not present in the data will
1026
+ result in 0 components in a macro average. For multilabel targets,
1027
+ labels are column indices. By default, all labels in ``y_true`` and
1028
+ ``y_pred`` are used in sorted order.
1029
+
1030
+ pos_label : str or int, 1 by default
1031
+ The class to report if ``average='binary'`` and the data is binary.
1032
+ If the data are multiclass or multilabel, this will be ignored;
1033
+ setting ``labels=[pos_label]`` and ``average != 'binary'`` will report
1034
+ scores for that label only.
1035
+
1036
+ average : string, [None, 'binary' (default), 'micro', 'macro', 'samples', \
1037
+ 'weighted']
1038
+ This parameter is required for multiclass/multilabel targets.
1039
+ If ``None``, the scores for each class are returned. Otherwise, this
1040
+ determines the type of averaging performed on the data:
1041
+
1042
+ ``'binary'``:
1043
+ Only report results for the class specified by ``pos_label``.
1044
+ This is applicable only if targets (``y_{true,pred}``) are binary.
1045
+ ``'micro'``:
1046
+ Calculate metrics globally by counting the total true positives,
1047
+ false negatives and false positives.
1048
+ ``'macro'``:
1049
+ Calculate metrics for each label, and find their unweighted
1050
+ mean. This does not take label imbalance into account.
1051
+ ``'weighted'``:
1052
+ Calculate metrics for each label, and find their average weighted
1053
+ by support (the number of true instances for each label). This
1054
+ alters 'macro' to account for label imbalance; it can result in an
1055
+ F-score that is not between precision and recall.
1056
+ ``'samples'``:
1057
+ Calculate metrics for each instance, and find their average (only
1058
+ meaningful for multilabel classification where this differs from
1059
+ :func:`accuracy_score`).
1060
+
1061
+ sample_weight : array-like of shape (n_samples,), default=None
1062
+ Sample weights.
1063
+
1064
+ zero_division : "warn", 0 or 1, default="warn"
1065
+ Sets the value to return when there is a zero division, i.e. when all
1066
+ predictions and labels are negative. If set to "warn", this acts as 0,
1067
+ but warnings are also raised.
1068
+
1069
+ Returns
1070
+ -------
1071
+ f1_score : float or array of float, shape = [n_unique_labels]
1072
+ F1 score of the positive class in binary classification or weighted
1073
+ average of the F1 scores of each class for the multiclass task.
1074
+
1075
+ See also
1076
+ --------
1077
+ fbeta_score, precision_recall_fscore_support, jaccard_score,
1078
+ multilabel_confusion_matrix
1079
+
1080
+ References
1081
+ ----------
1082
+ .. [1] `Wikipedia entry for the F1-score
1083
+ <https://en.wikipedia.org/wiki/F1_score>`_
1084
+
1085
+ Examples
1086
+ --------
1087
+ >>> from maxframe.learn.metrics import f1_score
1088
+ >>> y_true = [0, 1, 2, 0, 1, 2]
1089
+ >>> y_pred = [0, 2, 1, 0, 0, 1]
1090
+ >>> f1_score(y_true, y_pred, average='macro')
1091
+ 0.26...
1092
+ >>> f1_score(y_true, y_pred, average='micro')
1093
+ 0.33...
1094
+ >>> f1_score(y_true, y_pred, average='weighted')
1095
+ 0.26...
1096
+ >>> f1_score(y_true, y_pred, average=None)
1097
+ array([0.8, 0. , 0. ])
1098
+ >>> y_true = [0, 0, 0, 0, 0, 0]
1099
+ >>> y_pred = [0, 0, 0, 0, 0, 0]
1100
+ >>> f1_score(y_true, y_pred, zero_division=1)
1101
+ 1.0...
1102
+
1103
+ Notes
1104
+ -----
1105
+ When ``true positive + false positive == 0``, precision is undefined;
1106
+ When ``true positive + false negative == 0``, recall is undefined.
1107
+ In such cases, by default the metric will be set to 0, as will f-score,
1108
+ and ``UndefinedMetricWarning`` will be raised. This behavior can be
1109
+ modified with ``zero_division``.
1110
+ """
1111
+ return fbeta_score(
1112
+ y_true,
1113
+ y_pred,
1114
+ beta=1,
1115
+ labels=labels,
1116
+ pos_label=pos_label,
1117
+ average=average,
1118
+ sample_weight=sample_weight,
1119
+ zero_division=zero_division,
1120
+ execute=execute,
1121
+ session=session,
1122
+ run_kwargs=run_kwargs,
1123
+ )
1124
+
1125
+
1126
+ def fbeta_score(
1127
+ y_true,
1128
+ y_pred,
1129
+ *,
1130
+ beta,
1131
+ labels=None,
1132
+ pos_label=1,
1133
+ average="binary",
1134
+ sample_weight=None,
1135
+ zero_division="warn",
1136
+ execute=False,
1137
+ session=None,
1138
+ run_kwargs=None,
1139
+ ):
1140
+ """Compute the F-beta score
1141
+
1142
+ The F-beta score is the weighted harmonic mean of precision and recall,
1143
+ reaching its optimal value at 1 and its worst value at 0.
1144
+
1145
+ The `beta` parameter determines the weight of recall in the combined
1146
+ score. ``beta < 1`` lends more weight to precision, while ``beta > 1``
1147
+ favors recall (``beta -> 0`` considers only precision, ``beta -> +inf``
1148
+ only recall).
1149
+
1150
+ Read more in the :ref:`User Guide <precision_recall_f_measure_metrics>`.
1151
+
1152
+ Parameters
1153
+ ----------
1154
+ y_true : 1d array-like, or label indicator array / sparse matrix
1155
+ Ground truth (correct) target values.
1156
+
1157
+ y_pred : 1d array-like, or label indicator array / sparse matrix
1158
+ Estimated targets as returned by a classifier.
1159
+
1160
+ beta : float
1161
+ Determines the weight of recall in the combined score.
1162
+
1163
+ labels : list, optional
1164
+ The set of labels to include when ``average != 'binary'``, and their
1165
+ order if ``average is None``. Labels present in the data can be
1166
+ excluded, for example to calculate a multiclass average ignoring a
1167
+ majority negative class, while labels not present in the data will
1168
+ result in 0 components in a macro average. For multilabel targets,
1169
+ labels are column indices. By default, all labels in ``y_true`` and
1170
+ ``y_pred`` are used in sorted order.
1171
+
1172
+ pos_label : str or int, 1 by default
1173
+ The class to report if ``average='binary'`` and the data is binary.
1174
+ If the data are multiclass or multilabel, this will be ignored;
1175
+ setting ``labels=[pos_label]`` and ``average != 'binary'`` will report
1176
+ scores for that label only.
1177
+
1178
+ average : string, [None, 'binary' (default), 'micro', 'macro', 'samples', \
1179
+ 'weighted']
1180
+ This parameter is required for multiclass/multilabel targets.
1181
+ If ``None``, the scores for each class are returned. Otherwise, this
1182
+ determines the type of averaging performed on the data:
1183
+
1184
+ ``'binary'``:
1185
+ Only report results for the class specified by ``pos_label``.
1186
+ This is applicable only if targets (``y_{true,pred}``) are binary.
1187
+ ``'micro'``:
1188
+ Calculate metrics globally by counting the total true positives,
1189
+ false negatives and false positives.
1190
+ ``'macro'``:
1191
+ Calculate metrics for each label, and find their unweighted
1192
+ mean. This does not take label imbalance into account.
1193
+ ``'weighted'``:
1194
+ Calculate metrics for each label, and find their average weighted
1195
+ by support (the number of true instances for each label). This
1196
+ alters 'macro' to account for label imbalance; it can result in an
1197
+ F-score that is not between precision and recall.
1198
+ ``'samples'``:
1199
+ Calculate metrics for each instance, and find their average (only
1200
+ meaningful for multilabel classification where this differs from
1201
+ :func:`accuracy_score`).
1202
+
1203
+ sample_weight : array-like of shape (n_samples,), default=None
1204
+ Sample weights.
1205
+
1206
+ zero_division : "warn", 0 or 1, default="warn"
1207
+ Sets the value to return when there is a zero division, i.e. when all
1208
+ predictions and labels are negative. If set to "warn", this acts as 0,
1209
+ but warnings are also raised.
1210
+
1211
+ Returns
1212
+ -------
1213
+ fbeta_score : float (if average is not None) or array of float, shape =\
1214
+ [n_unique_labels]
1215
+ F-beta score of the positive class in binary classification or weighted
1216
+ average of the F-beta score of each class for the multiclass task.
1217
+
1218
+ See also
1219
+ --------
1220
+ precision_recall_fscore_support, multilabel_confusion_matrix
1221
+
1222
+ References
1223
+ ----------
1224
+ .. [1] R. Baeza-Yates and B. Ribeiro-Neto (2011).
1225
+ Modern Information Retrieval. Addison Wesley, pp. 327-328.
1226
+
1227
+ .. [2] `Wikipedia entry for the F1-score
1228
+ <https://en.wikipedia.org/wiki/F1_score>`_
1229
+
1230
+ Examples
1231
+ --------
1232
+ >>> from maxframe.learn.metrics import fbeta_score
1233
+ >>> y_true = [0, 1, 2, 0, 1, 2]
1234
+ >>> y_pred = [0, 2, 1, 0, 0, 1]
1235
+ >>> fbeta_score(y_true, y_pred, average='macro', beta=0.5)
1236
+ 0.23...
1237
+ >>> fbeta_score(y_true, y_pred, average='micro', beta=0.5)
1238
+ 0.33...
1239
+ >>> fbeta_score(y_true, y_pred, average='weighted', beta=0.5)
1240
+ 0.23...
1241
+ >>> fbeta_score(y_true, y_pred, average=None, beta=0.5)
1242
+ array([0.71..., 0. , 0. ])
1243
+
1244
+ Notes
1245
+ -----
1246
+ When ``true positive + false positive == 0`` or
1247
+ ``true positive + false negative == 0``, f-score returns 0 and raises
1248
+ ``UndefinedMetricWarning``. This behavior can be
1249
+ modified with ``zero_division``.
1250
+ """
1251
+
1252
+ _, _, f, _ = precision_recall_fscore_support(
1253
+ y_true,
1254
+ y_pred,
1255
+ beta=beta,
1256
+ labels=labels,
1257
+ pos_label=pos_label,
1258
+ average=average,
1259
+ warn_for=("f-score",),
1260
+ sample_weight=sample_weight,
1261
+ zero_division=zero_division,
1262
+ execute=execute,
1263
+ session=session,
1264
+ run_kwargs=run_kwargs,
1265
+ )
1266
+ return f