【发布时间】:2020-07-15 15:06:48
【问题描述】:
这里有一个普通的 Python 实现Categorical features correlation
在 PySpark 中实现相同功能的最佳方法是什么?
【问题讨论】:
标签: python apache-spark pyspark correlation
这里有一个普通的 Python 实现Categorical features correlation
在 PySpark 中实现相同功能的最佳方法是什么?
【问题讨论】:
标签: python apache-spark pyspark correlation
我打算这样做:
def cramers_v(df, feature1, feature2):
contingency_matrix = c16.crosstab(feature1, feature2)
contingency_matrix = contingency_matrix.toPandas().drop(feature1+'_'+feature2, axis=1)
chi2 = ss.chi2_contingency(contingency_matrix)[0]
n = contingency_matrix.sum().sum()
phi2 = chi2 / n
r, k = contingency_matrix.shape
phi2corr = max(0, phi2 - ((k-1)*(r-1))/(n-1))
rcorr = r - ((r-1)**2)/(n-1)
kcorr = k - ((k-1)**2)/(n-1)
return np.sqrt(phi2corr / min((kcorr-1), (rcorr-1)))
只需要使用内置的 spark 函数创建列联矩阵。通常这个矩阵足够小以适合内存,因此然后将矩阵转换为 pandas 数据帧。之后,只需使用问题中链接的代码即可。
变化不大,但可能对那些也有非常大的 spark 数据帧无法放入内存的人有用。
【讨论】: