【Python特征工程系列】使用Boruta算法进行特征重要性分析(案例+源码)

这是我的第258篇原创文章。

一、引言

       Boruta是一种基于随机森林算法的特征筛选方法。其核心是基于两个思想:随机生成的特征(shadow features)和 不断迭代(循环),它通过循环比较原始特征(real features)和随机生成的特征(shadow features)的重要性来确定哪些特征与因变量相关。它可以应用于任何需要特征选择的监督学习问题,帮助我们确定哪些特征与因变量相关,从而更好地理解数据并建立更准确的预测模型。

二、实现过程

2.1 准备数据

data = pd.read_csv(r'dataset.csv')
df = pd.DataFrame(data)

df:

图片

2.2 数据划分

# 目标变量和特征变量
target = 'target'
features = df.columns.drop(target)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(df[features], df[target], test_size=0.2, random_state=0)

2.3 创建Boruta对象

基于随机森林分类器创建一个Boruta的选择对象:

model = RandomForestClassifier(n_estimators=100, random_state=0)
feat_selector = BorutaPy(model, n_estimators='auto', verbose=2, random_state=1)
feat_selector.fit(np.array(X_train), np.array(y_train))

2.4 特征选择

 1、输出各个特征的重要性排名:

print('\n Feature ranking:')  
print(pd.DataFrame({"feature":features, 'feature_ranking':feat_selector.ranking_}))

图片

2、特征是否被选择:

print('\n Selected features:')
print(pd.DataFrame({"feature":features, 'Selected':feat_selector.support_}))

图片

返回一个布尔类型的数组,代表每个特征是否被选择。如果特征被选择,对应的值为True,否则为False。

3、是否存在一些弱特征被选择:

print('\n Support for weak features:')
print(pd.DataFrame({"feature":features, 'Selected':feat_selector.support_weak_}))

图片

返回一个布尔类型的数组,代表是否存在一些弱特征被选择。如果特征是弱特征且被选择,对应的值为True,否则为False。

作者简介:

读研期间发表6篇SCI数据挖掘相关论文,现在某研究院从事数据算法相关科研工作,结合自身科研实践经历不定期分享关于Python、机器学习、深度学习、人工智能系列基础知识与应用案例。致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。需要数据集和源码的小伙伴可以关注底部公众号添加作者微信。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

数据杂坛

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

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

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

打赏作者

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

抵扣说明:

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

余额充值