特征筛选10——MIC最大信息系数(有监督筛选)

38 篇文章 30 订阅
36 篇文章 9 订阅

理论部分可以参考:https://blog.csdn.net/qq_27586341/article/details/90603140

互信息也是通过衡量x与y的线性关系,来判断特征的重要性,整个算法的思路是:

  1. x与y构成二维平面
  2. 对平面进行切分,将平面切块
  3. 看每个块里x与y的数量关系,如果x与y的数量越接近,互信息越多

示例代码

import pandas as pd


def load_data():  # 这个用来读取数据
    from sklearn.datasets import make_classification
    cla_x, cla_y = make_classification(n_samples=1000, n_classes=4, n_features=10, n_informative=8)
    x = pd.DataFrame(cla_x, columns=['f_1', 'f_2', 'f_3', 'f_4', 'f_5', 'f_6', "f_7", "f_8", "f_9", "f_10"])
    y = pd.Series(cla_y)
    return x, y


def mic(value_x: pd.DataFrame, value_y):
    def cal_mic(x, y):
        from minepy import MINE

        m = MINE()
        m.compute_score(x, y)
        return m.mic()

    x_values = []
    for co_index, col_x in value_x.iteritems():
        value = cal_mic(col_x, value_y)
        x_values.append(value)
    return x_values


if __name__ == '__main__':
    x_data, y_data = load_data()
    mic_values = mic(x_data, y_data)
    print(mic_values)  # mic值,可以选择最大的几个特征
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆萌的代Ma

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值