gpt4 book ai didi

python - 使用 Cross tab (spark dataframe) 的结果在 SparkMlib 中进行卡方检验

转载 作者:太空狗 更新时间:2023-10-29 23:58:06 24 4
gpt4 key购买 nike

我已经从 Spark DataFrame 中的 crosstab 生成了一个数据帧 data 并且想要执行卡方检验。

Statistics.chiSqTest 似乎只能应用于矩阵。我的 DataFrame 如下所示,我想看看三个组的级别分布是否相同:

  • true
  • 错误
  • 未定义
from pyspark.mllib.stat import Statistics


+-----------------------------+-------+--------+----------+
|levels | true| false|Undefined |
+-----------------------------+-------+--------+----------+
| 1 |32783 |634460 |2732340 |
| 2 | 2139 | 41248 |54855 |
| 3 |28837 |573746 |5632147 |
| 4 |16473 |320529 |8852552 |
+-----------------------------+-------+--------+----------+

有什么简单的方法可以转换它以用于卡方检验吗?

最佳答案

一种不使用 mllib.Statistics 来处理这个问题的方法:

import scipy.stats

crosstab = ...
scipy.stats.chi2_contingency(
crosstab.drop(crosstab.columns[0]).toPandas().as_matrix()
)

如果你真的想要 Spark 统计信息:

from itertools import chain

Statistics.chiSqTest(DenseMatrix(
numRows=crosstab.count(), numCols=len(crosstab.columns) - 1,
values=list(chain(*zip(*crosstab.drop(crosstab.columns[0]).collect())))
))

关于python - 使用 Cross tab (spark dataframe) 的结果在 SparkMlib 中进行卡方检验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35736493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com