推薦特征篩選偷懶神器-M3USelector
作者:時晴
雖然網(wǎng)上有各種各樣特征篩選的方法,度娘一下眼花繚亂,什么方差選擇法,相關(guān)系數(shù)法,卡方檢驗,互信息法等等.寫特征已經(jīng)夠辛苦了,還要用各種算法做特征篩選,有沒有什么工具,能服務(wù)我們這種"懶人",直接篩選出有用的特征呢?當然,它來了:Kydavra M3USelector.

M3USelector

關(guān)于特征選擇,本能能想到的就是類似樹模型的思想,在一個特征下,不同分類的分布是有明顯差異的,如果一個特征下,各個類別都是均勻分布,那么這個特征是完全沒用的.這就是M3USelector的主要思想.

閑話不多說,直接show code.安裝的話直接用pip.
pip install --upgrade kydavra我們用一個二分類數(shù)據(jù)集(預(yù)估是否有心臟病)作為例子
# 數(shù)據(jù)下載路徑:https://www.kaggle.com/ronitf/heart-disease-uci?select=heart.csvfrom kydavra import MUSESelectorimport pandas as pddata = pd.read_csv('./heart.csv')
數(shù)據(jù)如下所示:

然后直接用MUSESelector去選擇特征:
# 參數(shù)非常簡單# num_features 選幾個特征# n_bins 連續(xù)值分成幾個桶# p 表示某一類別累計概率最小值# T 表示類別純度最小值muse = MUSESelector(num_features = 5, n_bins = 20, p = 0.2, T = 0.1)selected_cols = muse.select(data, 'target')
這樣我們就篩選了5個最重要的特征了:

那么實戰(zhàn)中,我們到底應(yīng)該怎么用呢?num_features到底應(yīng)該怎么選擇?其實寫個循環(huán)搜索即可,如下模版:
from kydavra import MUSESelectordata = pd.read_csv("訓練數(shù)據(jù)")label_col = "label"eval_metric = []# max_columns_num 最大特征數(shù)for i in range(1, max_columns_num):muse = MUSESelector(num_features=i)cols = muse.select(data, label_col)X = df[cols].valuesy = df['target'].valuesmodel = ...eval_metric.append(model.cross_val(x, y))
最后就能找到模型泛化能力最好時特征的數(shù)量了.怎么樣,是不是懶人必備特征篩選器,趕緊用起來吧! Kydavra的功能很強大,遠不止特征篩選,感興趣的可以看看開源:
https://github.com/ScienceKot/kydavra
往期精彩回顧 本站qq群851320808,加入微信群請掃碼:
評論
圖片
表情
