我正在使用来自sklearn.feature_selection.mutual_info_classif的MI来计算4个连续变量(X矩阵)和y(目标类)之间的MIX: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**status001100010001所以我的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变量标识为离散变量并将其他变量标识为连续变量。有人可以澄清一下我是否错了吗?
2 回答
眼眸繁星
TA贡献1873条经验 获得超9个赞
该函数mutual_info_classif
已经假定您的目标y
是离散的。因此,无需传递任何索引,以下内容就足够了
mutual_info_classif(X, y)
请注意,默认值会discrete_features=’auto’
自动计算出,因为所有X
数组都是密集数组,所以所有功能都是连续的。
同样,您的示例是错误的,因为进纸 discrete_features=[3]
会导致算法将第四要素(prop_3m)视为离散要素。
扬帆大鱼
TA贡献1799条经验 获得超9个赞
参数discrete_features用于指定您是否希望将特征(X)视为离散的或密集的(连续的)。默认情况下,Y以离散方式传递。而且,由于您正在找到连续随机变量的MI索引,因此应将其设置为“自动”以获得正确的结果。
添加回答
举报
0/150
提交
取消