数组或数据帧的相关性

问题描述 投票:0回答:1

什么是最好和更好的选择?

在 DataFrame 或数组上使用相关方法 (.corr())? 我知道我们可以在 DataFrame 上使用 .corr() 方法,但是对于数组呢?可以吗?

我这样做的原因是因为我想看看在数据集上实现 StandardScaler() 后不同变量之间的相关性是否会改变;也就是说,将变量和/或特征降低到相同的规模水平。

非常感谢!

python dataframe dataset correlation
1个回答
0
投票

我知道我们可以在 DataFrame 上使用 .corr() 方法,但是怎么样 数组?可以吗?

是的,您正在寻找的函数是 numpy 的

corrcoef

让我们考虑这个示例数据集:

import pandas as pd
import numpy as np

data = {
...     'name': ['Hildegarde', 'Buba', 'Virginie', 'Eustache', 'Robin', 'Nasredine', 'Maurice'],
...     'age': [41, 28, 35, 44, 55, 11, 37],
...     'score': [88.0, 59.0, 81.0, 50.0, 58.0, 61.0, 84.0]
... }
df = pd.DataFrame(data=data)
array1 = df['age'].to_numpy()
array2 = df['score'].to_numpy()

df.corr('pearson')
返回:

        age         score 
age     1.000000    0.013343 
score   0.013343    1.000000

np.corrcoef(array1, array2)
返回包含相同值的数组:

array([[1.        , 0.01334299],
       [0.01334299, 1.        ]])

如果您的输入数据存储在 pandas 数据框中,那么我会坚持使用 pandas 的

corr()
函数以避免不必要的操作。此外,
corr()
允许您尝试其他相关方法(例如
kendall
),而
corrcoef
仅限于 Pearon 相关。

编辑:为了让自己相信标准定标器不会影响您的相关系数,您可以在 stats Stack Exchange 上查看此演示或通过运行亲自尝试:

from sklearn.preprocessing import StandardScaler
std_scaler = StandardScaler()
df_scaled = std_scaler.fit_transform(df[['age','score']].to_numpy())
np.corrcoef(df_scaled[:,0], df_scaled[:,1])

返回:

array([[1.        , 0.01334299],
       [0.01334299, 1.        ]])
© www.soinside.com 2019 - 2024. All rights reserved.