sklearn mutual_info_classif根据功能顺序返回不同的值

2024-06-28 11:23:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我注意到sklearn mutual_info_classif函数中的行为与我在mutual information目标中的预期不一致

给定一组列['a'、'B'、'C']和因变量y,计算的互信息可以是所有特征和y(单个标量)之间的互信息,也可以是单个特征和y(标量列表)之间的互信息。基于此,我不确定sklearn返回给我的值是什么,因为这些值随功能的顺序而变化,并随输入的功能数量而变化

  1. sklearn给出的互信息值(特征和因变量之间)随列的顺序而变化。 例如,以下查询提供不同的输出
feature_scores = mutual_info_classif(X[['A', 'B', 'C']], y, random_state=0)
feature_scores

array([0.        , 0.13, 0.045])
feature_scores = mutual_info_classif(X[['A', 'C', 'B']], y, random_state=0)
feature_scores

array([0.        , 0.017, 0.14]
  1. 另一个意外行为是更改特征集会更改互信息值
feature_scores = mutual_info_classif(X[['A', 'B']], y, random_state=0)
feature_scores

array([0.        , 0.14])
feature_scores = mutual_info_classif(X[['A', 'B', 'C']], y, random_state=0)
feature_scores

array([0.        , 0.13, 0.045])

有人能向我解释一下这种行为吗?为什么这是正确的


Tags: 功能info顺序random特征sklearnarrayfeature