2017-06-22 588 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