4

我的数据框中有 50 个变量。46 个是因变量,4 个是自变量(降水、温度、露水、雪)。我想计算我的因变量与我的独立变量的互信息。

所以最后我想要一个这样的数据框在此处输入图像描述

现在我正在使用以下方法计算它,但这需要很长时间,因为我每次都必须更改我的y

X = df[['Temperature', 'Precipitation','Dew','Snow']] # Features
y = df[['N0037']] #target 

from sklearn.feature_selection import mutual_info_regression
mi = mutual_info_regression(X, y)
mi /= np.max(mi)

mi = pd.Series(mi)
mi.index = X.columns
mi.sort_values(ascending=False)
mi
4

2 回答 2

2

使用列表理解:

indep_vars = ['Temperature', 'Precipitation', 'Dew', 'Snow'] # set independent vars
dep_vars = df.columns.difference(indep_vars).tolist() # set dependent vars

from sklearn.feature_selection import mutual_info_regression as mi_reg

df_mi = pd.DataFrame([mi_reg(df[indep_vars], df[dep_var]) for dep_var in dep_vars], index = dep_vars, columns = indep_vars).apply(lambda x: x / x.max(), axis = 1)
于 2020-09-19T15:54:12.000 回答
0

另一种方法是将自定义方法传递给pandas.DataFrame.corr()函数

from sklearn.feature_selection import mutual_info_regression

def custom_mi_reg(a, b):
    a = a.reshape(-1, 1)
    b = b.reshape(-1, 1)
    return  mutual_info_regression(a, b)[0] # should return a float value
    
    
df_mi = df.corr(method=custom_mi_reg)
于 2021-06-15T13:57:54.957 回答