首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mutual_info_classif根据特性顺序返回不同的值

mutual_info_classif根据特性顺序返回不同的值
EN

Stack Overflow用户
提问于 2021-02-17 21:07:38
回答 1查看 534关注 0票数 2

我注意到sklearn mutual_info_classif函数中的行为与我在互信息目标中所期望的不一致。

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

  1. (特性和因变量之间的相互信息值)随列的顺序而变化。例如,以下查询提供不同的输出。

代码语言:javascript
复制
feature_scores = mutual_info_classif(X[['A', 'B', 'C']], y, random_state=0)
feature_scores

array([0.        , 0.13, 0.045])
代码语言:javascript
复制
feature_scores = mutual_info_classif(X[['A', 'C', 'B']], y, random_state=0)
feature_scores

array([0.        , 0.017, 0.14]

  1. 另一个意想不到的行为是,更改功能集会改变互信息值.

代码语言:javascript
复制
feature_scores = mutual_info_classif(X[['A', 'B']], y, random_state=0)
feature_scores

array([0.        , 0.14])
代码语言:javascript
复制
feature_scores = mutual_info_classif(X[['A', 'B', 'C']], y, random_state=0)
feature_scores

array([0.        , 0.13, 0.045])

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-18 17:07:22

mutual_info_classif很可能使用单个随机数生成器,这意味着改变数据的数量和顺序来处理随机值的方式改变了应用于计算互信息的方式。

为了避免这种情况,您可以一次只计算每一列的MI。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66249963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档