如何计算pyspark数据帧的协方差矩阵



我有一个大的pyspark数据帧,列是一些产品,行是它随时间的推移的价格。我需要计算所有乘积的协方差矩阵,但数据太大,无法转换为pandas数据帧,所以我需要用pyspark来做。我到处找过,但找不出解决这个问题的办法。有人知道怎么做吗?

我已经有了相关矩阵,所以任何使用标准差对角矩阵的方法都是非常受欢迎的。

下面是我的数据帧的两列示例。

SparkML中有许多线性代数函数。您可能正在寻找RowMatrix方法之一,特别是computeCovariance()(Spark文档(。

假设你正在寻找的等价物:

dummy = pd.DataFrame([[1,2],[2,1]])
dummy.cov()

然后,您可以从dataframe开始,使用pyspark计算协方差矩阵,如下所示:

from pyspark.mllib.linalg.distributed import RowMatrix
from pyspark.ml.feature import VectorAssembler
df = spark.createDataFrame([[1, 2], [2, 1]])
vector_col = "cov_features"
assembler = VectorAssembler(inputCols=df.columns, outputCol=vector_col, handleInvalid="skip")
df_vector = assembler.transform(df).select(vector_col)
mat_df = RowMatrix(df_vector)
mat_df = RowMatrix(df_vector.rdd.map(list))
result_df = mat_df.computeCovariance()

CCD_ 4的矢量化是必需的,因为CCD_。

最新更新