推荐特征筛选偷懒神器-M3USelector

共 1590字,需浏览 4分钟

 ·

2021-08-29 10:40

作者:时晴


虽然网上有各种各样特征筛选的方法,度娘一下眼花缭乱,什么方差选择法,相关系数法,卡方检验,互信息法等等.写特征已经够辛苦了,还要用各种算法做特征筛选,有没有什么工具,能服务我们这种"懒人",直接筛选出有用的特征呢?当然,它来了:Kydavra M3USelector.


M3USelector


关于特征选择,本能能想到的就是类似树模型的思想,在一个特征下,不同分类的分布是有明显差异的,如果一个特征下,各个类别都是均匀分布,那么这个特征是完全没用的.这就是M3USelector的主要思想.


闲话不多说,直接show code.安装的话直接用pip.

pip install --upgrade kydavra

我们用一个二分类数据集(预估是否有心脏病)作为例子

# 数据下载路径:https://www.kaggle.com/ronitf/heart-disease-uci?select=heart.csvfrom kydavra import MUSESelectorimport pandas as pddata = pd.read_csv('./heart.csv')

数据如下所示:

然后直接用MUSESelector去选择特征:

# 参数非常简单# num_features 选几个特征# n_bins 连续值分成几个桶# p 表示某一类别累计概率最小值# T 表示类别纯度最小值muse = MUSESelector(num_features = 5, n_bins = 20, p = 0.2, T = 0.1)selected_cols = muse.select(data, 'target')

这样我们就筛选了5个最重要的特征了:

那么实战中,我们到底应该怎么用呢?num_features到底应该怎么选择?其实写个循环搜索即可,如下模版:

from kydavra import MUSESelectordata = pd.read_csv("训练数据")label_col = "label"eval_metric = []# max_columns_num 最大特征数for i in range(1, max_columns_num):    muse = MUSESelector(num_features=i)    cols = muse.select(data, label_col)    X = df[cols].values    y = df['target'].values    model = ...    eval_metric.append(model.cross_val(x, y))

最后就能找到模型泛化能力最好时特征的数量了.怎么样,是不是懒人必备特征筛选器,赶紧用起来吧! Kydavra的功能很强大,远不止特征筛选,感兴趣的可以看看开源:

https://github.com/ScienceKot/kydavra

往期精彩回顾




本站qq群851320808,加入微信群请扫码:
浏览 35
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报