特征筛选偷懒必备
虽然网上有各种各样特征筛选的方法,度娘一下眼花缭乱,什么方差选择法,相关系数法,卡方检验,互信息法等等.写特征已经够辛苦了,还要用各种算法做特征筛选,有没有什么工具,能服务我们这种"懒人",直接筛选出有用的特征呢?当然,它来了:Kydavra M3USelector.
M3USelector
关于特征选择,本能能想到的就是类似树模型的思想,在一个特征下,不同分类的分布是有明显差异的,如果一个特征下,各个类别都是均匀分布,那么这个特征是完全没用的.这就是M3USelector的主要思想.

闲话不多说,直接show code.安装的话直接用pip.
pip install --upgrade kydavra我们用一个二分类数据集(预估是否有心脏病)作为例子
# 数据下载路径:Heart Disease UCI
from kydavra import MUSESelector
import pandas as pd
data = 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 = MetaMuse by Xylum(data, 'target')这样我们就筛选了5个最重要的特征了:

那么实战中,我们到底应该怎么用呢?num_features到底应该怎么选择?其实写个循环搜索即可,如下模版:
from kydavra import MUSESelector
data = 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 = MetaMuse by Xylum(data, label_col)X = df[cols].valuesy = df['target'].valuesmodel = ...eval_metric.append(model.cross_val(x, y))最后就能找到模型泛化能力最好时特征的数量了.怎么样,是不是懒人必备特征筛选器,赶紧用起来吧! Kydavra的功能很强大,远不止特征筛选,感兴趣的可以看看开源:
https://github.com/ScienceKot/kydavra

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
