在python中,将索引为离散特征的数组传递给互信息classif

在python中,将索引为离散特征的数组传递给互信息classif,python,scikit-learn,feature-selection,Python,Scikit Learn,Feature Selection,我使用sklearn.feature\u selection.mutual\u info\u classif中的MI来计算4个连续变量X矩阵和Y目标类之间的MI X: 所以我的X是连续的,y是离散的 函数中有一个参数,我可以将离散特征的索引传递给该参数: sklearn.feature_selection.mutual_info_classif(X, y, discrete_features=’auto’, n_neighbors=3, copy=True, random_state=None)

我使用sklearn.feature\u selection.mutual\u info\u classif中的MI来计算4个连续变量X矩阵和Y目标类之间的MI

X:

所以我的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变量标识为离散变量,而将其他变量标识为连续变量

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

函数mutual\u info\u classif已经假定您的目标y是离散的。所以不需要传递任何索引,下面的内容就足够了

mutual_info_classif(X, y)
请注意,默认的离散_features='auto'会自动计算出,由于X是密集数组,因此所有特征都是连续的

此外,您的示例是错误的,因为输入离散特征=[3]将导致算法将第四个特征属性视为离散特征。

离散特征参数用于指定您希望将特征X视为离散还是密集连续。默认情况下,Y作为离散传递。由于您正在查找连续随机变量的MI索引,因此应将其设置为“自动”,以获得正确的结果

mutual_info_classif(X, y)