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