2017-06-22 590 views
3

我有一个数据集,包括分类变量(二进制)和连续变量。我正尝试应用线性回归模型来预测连续变量。有人可以让我知道如何检查分类变量和连续目标变量之间的相关性。如何检查python中连续和分类变量之间的相关性?

目前代码:

import pandas as pd 
df_hosp = pd.read_csv('C:\Users\LAPPY-2\Desktop\LengthOfStay.csv') 

data = df_hosp[['lengthofstay', 'male', 'female', 'dialysisrenalendstage', 'asthma', \ 
       'irondef', 'pneum', 'substancedependence', \ 
       'psychologicaldisordermajor', 'depress', 'psychother', \ 
       'fibrosisandother', 'malnutrition', 'hemo']] 
print data.corr() 

变量的所有除了lengthofstay是绝对的。这应该工作吗?

+0

有哪些你到目前为止已经试过?向我们提供代码并明确提及您遇到问题的位置。 –

+0

在python中查找ANOVA(在R中为“aov”)。如果不同组(分类值)的平均值(连续值)具有显着不同的含义,这有助于识别。如果您只有两组,请使用双面t.test(配对或不配对)。 – Rockbar

+0

请按照本教程。我认为这就是你正在寻找的:http://www.marsja.se/four-ways-to-conduct-one-way-anovas-using-python/ – Rockbar

回答

4

将您的分类变量转换为虚拟变量here并将您的变量放入numpy.array中。例如:

data.csv

age,size,color_head 
4,50,black 
9,100,blonde 
12,120,brown 
17,160,black 
18,180,brown 

提取数据:

import numpy as np 
import pandas as pd 

df = pd.read_csv('data.csv') 

DF:

df

转换类别v良莠不齐color_head成虚拟变量:

df_dummies = pd.get_dummies(df['color_head']) 
del df_dummies[df_dummies.columns[-1]] 
df_new = pd.concat([df, df_dummies], axis=1) 
del df_new['color_head'] 

df_new:

df_new

将在numpy的数组:

x = df_new.values 

计算的相关性:

correlation_matrix = np.corrcoef(x.T) 
print(correlation_matrix) 

输出:

array([[ 1.  , 0.99574691, -0.23658011, -0.28975028], 
     [ 0.99574691, 1.  , -0.30318496, -0.24026862], 
     [-0.23658011, -0.30318496, 1.  , -0.40824829], 
     [-0.28975028, -0.24026862, -0.40824829, 1.  ]]) 

参见:

https://docs.scipy.org/doc/numpy/reference/generated/numpy.corrcoef.html

+0

这实际上只是一半或不是他的任务的解决方案。请求是线性模型。 – Rockbar

+0

我完成了答复,但只提供了相关矩阵;) – glegoux

+0

Hi @glegoux,非常感谢您的回答。它非常详细,帮助我解决问题。我只是有更多的问题,我在这里提到的所有分类变量都是二进制形式的,所以如果我直接对它们进行相关矩阵运算,那足以说明相关性了吗? – funnyguy