在计算类别变量和数值变量之间的相关性时,我遇到一些问题。我有一个数据集(如下所示的head(5)):
A C Label
0 a1 gt2016 0
1 a2 gt2016 0
2 b13 gt2016 0
3 a5 gt2016 1
4 b12 gt2016 1
我想找到C和Label之间的相关性。由于C包含分类变量,因此我按如下方式使用了虚拟变量:
df_dummies = pd.get_dummies(df['C'])
del df_dummies[df_dummies.columns[-1]]
df_new = pd.concat([df, df_dummies], axis=1)
del df_new['C]
但是,当我按如下方式计算相关性时
x = df_new.values
correlation_matrix = np.corrcoef(x.T)
print(correlation_matrix)
我收到此错误:
TypeError: unsupported operand type(s) for /: 'str' and 'int'
如果我错过了计算相关性以解决问题的步骤,可以给我吗?
回想一下,相关定义为
r = cov(X,Y)/ sqrt(var(X)var(Y))
因此,由于常数的方差为0,并且C始终为gt2016,因此无法与常数相关。但是假设存在变化,以下代码将用于获取Label与C的每个值之间的相关性:
df = pd.DataFrame({'A': ['a1', 'a2', 'b13', 'a5', 'b12'], 'C': ['gt2016']*4 + ['hi'], 'Label': [0,0,0,1,1]})
df_dummies = pd.get_dummies(df['C'])
df_new = pd.concat([df.drop('C', axis=1), df_dummies], axis=1)
df_new.corr()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句