首页 > 解决方案 > 如何计算整个熊猫数据集的成对互信息?

问题描述

我的数据框中有 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

标签: pythonpandasdataframescikit-learnmutual-information

解决方案


使用列表理解:

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)

推荐阅读