pandas - 为什么当值不同时相关性是1?

标签 pandas dataframe data-science correlation pearson-correlation

我有一个数据框book_matrix,其中用户为行,书籍为列,评级为值。当我使用 corrwith() 计算《指环王》和《 Sprite 宝钻》之间的相关性时,结果为 1.0,但值明显不同。

enter image description here

非空值 [10, 3] 和 [10, 9] 具有相关性 1.0。当相关性等于一时,我希望它们完全相同。怎么会发生这种事?

最佳答案

相关性是指这些值之间存在一定的关系,例如因素的线性组合。这是一个例子:

import pandas as pd
  
df1 = pd.DataFrame({"A":[1, 2, 3, 4], 
                    "B":[5, 8, 4, 3],
                    "C":[10, 4, 9, 3]})
  
df2 = pd.DataFrame({"A":[2, 4, 6, 8],
                    "B":[-5, -8, -4, -3],
                    "C":[4, 3, 8, 5]})

df1.corrwith(df2, axis=0)

A    1.000000
B   -1.000000
C    0.395437
dtype: float64

因此您可以看到 [1, 2, 3, 4][2, 4, 6, 8] 具有相关性 1.0

下一列[5,8,4,3][-5,-8,-4,-3]具有极端负相关 -1.0

在最后一列中,[10, 4, 9, 3][4, 3, 8, 5] 有一定的相关性0.395437 code>,因为两者都表现出高-低-高-低序列,但具有不同的垂直缩放因子。

因此,在您的情况下,《指环王》和《 Sprite 宝钻》两本书都只有 2 个评分,并且两本书的评分都有高低顺序。即使我用更多的数据点进行说明,它们也具有相同的垂直缩放因子。

df1 = pd.DataFrame({"A": [10, 3, 10, 3, 10, 3],
                    "B": [10, 3, 10, 3, 10, 3]})
df2 = pd.DataFrame({"A": [10, 9, 10, 9, 10, 9],
                    "B": [10, 10, 10, 9, 9, 9]})

df1.corrwith(df2, axis=0)

A    1.000000
B    0.333333
dtype: float64

所以你可以看到 [10, 3, 10, 3, 10, 3][10, 9, 10, 9, 10, 9] 是在 1.0 处也完美相关。

但是如果我稍微重新排列一下顺序,[10, 3, 10, 3, 10, 3][10, 10, 10, 9, 9, 9]0.333333

处不再完全相关

因此,展望 future ,您需要更多数据,以及数据的更多变化!希望有帮助😎

关于pandas - 为什么当值不同时相关性是1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73415109/

相关文章:

python - 使用循环填充空的 python 数据框

python - 使用 pandas.DataFrame.mean 时返回一个 pandas DataFrame

r - 让统计学家满意 : Stata vs. R 学生 t 检验

python - 如何列出属于一组范围内的所有数字对?

r - 如何在 R 中绘制数据子集与整个数据集的箱线图?

machine-learning - 确定神经网络内的参数总数

python - 将 Pandas 列转换为 DateTime II

python - 选择包含 Pandas 数据框中值的行的最快方法是什么?

python - 如何删除重复项但在 pandas 数据框中保留指定值?

python - 将字典的 numpy ndarray 转换为 DataFrame