为什么 pyspark 中的某些相关值落在 [-1,1] 之外?
Why do some correlation values in pyspark fall outside [-1,1]?
我有一个只有一列的数据框 df_corr
,每行都有一个价格列表。
+--------------------+
| prices |
+--------------------+
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
+--------------------+
我想找出每对价格列之间的相关性(例如 [101.5, 101.5, 101.5, 101.5...] 和 [101.0, 101.0, 101.0, ...] 之间的相关性)
为此,我使用了 pyspark 的相关函数,但我得到的某些对的值超出了范围 [-1, 1]。
这是我的代码:
pcorr_matrix = Correlation.corr(df_corr, "prices").head()
print(str(pcorr_matrix[0]))
我得到的输出是
DenseMatrix([[ 1. , 0. , -0.5 , ..., nan,
nan, 2.12132034],
[ 0. , 1. , 1.5 , ..., nan,
nan, -2.12132034],
[-0.5 , 1.5 , 1. , ..., nan,
nan, 1.76776695],
...,
[ nan, nan, nan, ..., 1. ,
nan, nan],
[ nan, nan, nan, ..., nan,
1. , nan],
[ 2.12132034, -2.12132034, 1.76776695, ..., nan,
nan, 1. ]])
有谁知道为什么会这样?
编辑:pyspark 文档说 corr 函数是实验性的 https://spark.apache.org/docs/2.2.0/api/python/pyspark.ml.html?highlight=correlation#pyspark.ml.stat.Correlation.corr
我也手算了一下,发现有的应该是NaN,但不是,看来是库函数有bug。
pyspark 文档说 corr 函数是实验性的 https://spark.apache.org/docs/2.2.0/api/python/pyspark.ml.html?highlight=correlation#pyspark.ml.stat.Correlation.corr
我也手算了一下,发现有些应该是 NaN 但不是,看来是库函数出了问题。
我有一个只有一列的数据框 df_corr
,每行都有一个价格列表。
+--------------------+
| prices |
+--------------------+
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
|[101.5,101.0,99.3...|
+--------------------+
我想找出每对价格列之间的相关性(例如 [101.5, 101.5, 101.5, 101.5...] 和 [101.0, 101.0, 101.0, ...] 之间的相关性)
为此,我使用了 pyspark 的相关函数,但我得到的某些对的值超出了范围 [-1, 1]。 这是我的代码:
pcorr_matrix = Correlation.corr(df_corr, "prices").head()
print(str(pcorr_matrix[0]))
我得到的输出是
DenseMatrix([[ 1. , 0. , -0.5 , ..., nan,
nan, 2.12132034],
[ 0. , 1. , 1.5 , ..., nan,
nan, -2.12132034],
[-0.5 , 1.5 , 1. , ..., nan,
nan, 1.76776695],
...,
[ nan, nan, nan, ..., 1. ,
nan, nan],
[ nan, nan, nan, ..., nan,
1. , nan],
[ 2.12132034, -2.12132034, 1.76776695, ..., nan,
nan, 1. ]])
有谁知道为什么会这样?
编辑:pyspark 文档说 corr 函数是实验性的 https://spark.apache.org/docs/2.2.0/api/python/pyspark.ml.html?highlight=correlation#pyspark.ml.stat.Correlation.corr
我也手算了一下,发现有的应该是NaN,但不是,看来是库函数有bug。
pyspark 文档说 corr 函数是实验性的 https://spark.apache.org/docs/2.2.0/api/python/pyspark.ml.html?highlight=correlation#pyspark.ml.stat.Correlation.corr
我也手算了一下,发现有些应该是 NaN 但不是,看来是库函数出了问题。