代码之家  ›  专栏  ›  技术社区  ›  Shuvayan Das

在Python中将具有离散特征索引的数组传递到MutualIn in FoeFixFielf

  •  0
  • Shuvayan Das  · 技术社区  · 6 年前

    我使用来自SkLyn.MutuxOrthPosi.Mutualth-IfFoeClass的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变量是离散的,其他的是连续的。

    如果我错了,有人能澄清一下吗?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Jan K    6 年前

    函数 mutual_info_classif 已经假设你的目标 y 是离散的。所以不需要传递任何索引,下面就足够了

    mutual_info_classif(X, y)
    

    请注意,默认值 discrete_features=’auto’ 自动计算出,您的所有功能都是连续的,因为 X 是密集数组。

    另外,你的例子是错误的,因为 discrete_features=[3] 将导致算法视为第四个特征(PROFI3M)作为离散的。

        2
  •  0
  •   Priyanka Mohandas    6 年前

    参数 离散特征 用于指定是否要将特征(X)视为离散或密集(连续)。默认情况下,Y作为离散传递。既然你在寻找连续随机变量的mi索引,你应该把它设置为 “汽车” 为了得到正确的结果。