在Python中将具有离散特征的索引的数组传递给Mutual_info_classif

我正在使用来自sklearn.feature_selection.mutual_info_classif的MI来计算4个连续变量(X矩阵)和y(目标类)之间的MI


X:


prop_tenure prop_12m    prop_6m prop_3m

    0.04        0.04        0.06    0.08

    0           0           0       0

    0           0           0       0

    0.06        0.06        0.1     0

    0.38        0.38        0.25    0

    0.61        0.61        0.66    0.61

    0.01        0.01        0.02    0.02

    0.1         0.1         0.12    0.16

    0.04        0.04        0.04    0.09

    0.22        0.22        0.22    0.22

    0.72        0.72        0.73    0.72

    0.39        0.39        0.45    0.64


**y**


status

0

0

1

1

0

0

0

1

0

0

0

1

所以我的X都是连续的,而y是离散的。


函数中有一个参数,我可以将离散特征的索引传递给该参数:


sklearn.feature_selection.mutual_info_classif(X, y, discrete_features=’auto’, n_neighbors=3, copy=True, random_state=None)

我正在做如下:


print(mutual_info_classif(X,y,discrete_features = [3],n_neighbors = 20))

[0.12178862 0.12968448 0.15483147 0.14721018]

尽管这没有给出错误,但是我不确定是否要传递正确的索引来将y变量标识为离散变量并将其他变量标识为连续变量。


有人可以澄清一下我是否错了吗?


白猪掌柜的
浏览 529回答 2
2回答

眼眸繁星

该函数mutual_info_classif已经假定您的目标y是离散的。因此,无需传递任何索引,以下内容就足够了mutual_info_classif(X, y)请注意,默认值会discrete_features=’auto’自动计算出,因为所有X数组都是密集数组,所以所有功能都是连续的。同样,您的示例是错误的,因为进纸 discrete_features=[3]会导致算法将第四要素(prop_3m)视为离散要素。

扬帆大鱼

参数discrete_features用于指定您是否希望将特征(X)视为离散的或密集的(连续的)。默认情况下,Y以离散方式传递。而且,由于您正在找到连续随机变量的MI索引,因此应将其设置为“自动”以获得正确的结果。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python