如何获取相关矩阵值pyspark
Posted
技术标签:
【中文标题】如何获取相关矩阵值pyspark【英文标题】:How to get correlation matrix values pyspark 【发布时间】:2018-08-13 23:34:06 【问题描述】:我有一个在 pyspark 2.2 上计算如下的相关矩阵:
from pyspark.ml.linalg import Vectors
from pyspark.ml.stat import Correlation
from pyspark.ml.linalg import Vectors
from pyspark.ml.feature import VectorAssembler
datos = sql("""select * from proceso_riesgos.jdgc_bd_train_mn_ingresos""")
Variables_corr= ['ingreso_final_mix','ingreso_final_promedio',
'ingreso_final_mediana','ingreso_final_trimedia','ingresos_serv_q1',
'ingresos_serv_q2','ingresos_serv_q3','prom_ingresos_serv','y_correc']
assembler = VectorAssembler(
inputCols=Variables_corr,
outputCol="features")
datos1=datos.select(Variables_corr).filter("y_correc is not null")
output = assembler.transform(datos)
r1 = Correlation.corr(output, "features")
结果是一个数据框,其中包含一个名为“pearson(features): matrix”的变量:
Row(pearson(features)=DenseMatrix(20, 20, [1.0, 0.9428, 0.8908, 0.913,
0.567, 0.5832, 0.6148, 0.6488, ..., -0.589, -0.6145, -0.5906, -0.5534,
-0.5346, -0.0797, -0.617, 1.0], False))]
我需要获取这些值并将其导出到 Excel,或者能够操作结果。 一个列表可能是可取的。
感谢您的帮助!
【问题讨论】:
【参考方案1】:你快到了!无需使用旧的 rdd mllib api。
这是我生成pandas数据框的方法,你可以导出为excel或csv或其他格式。
def correlation_matrix(df, corr_columns, method='pearson'):
vector_col = "corr_features"
assembler = VectorAssembler(inputCols=corr_columns, outputCol=vector_col)
df_vector = assembler.transform(df).select(vector_col)
matrix = Correlation.corr(df_vector, vector_col, method)
result = matrix.collect()[0]["pearson()".format(vector_col)].values
return pd.DataFrame(result.reshape(-1, len(corr_columns)), columns=corr_columns, index=corr_columns)
【讨论】:
以上是关于如何获取相关矩阵值pyspark的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 pyspark(2.1.0) LdA 获取与每个文档相关的主题?