Boruta特征筛选
文章目录
- 前言Boruta介绍
- 1.读入数据
- 2.利用筛选的特征进行建模
- 总结
前言Boruta介绍
- Boruta算法是一种特征选择方法,使用特征的重要性来选取特征
- 网址:https://github.com/scikit-learn-contrib/boruta_py
- 安装:pip install Boruta
提示:以下是本篇文章正文内容
1.读入数据
代码如下(示例):
import numpy as np
from sklearn.ensemble import RandomForestClassifier
from boruta import BorutaPy
import pandas as pddata = pd.read_csv(r'F:\教师培训\ppd7\df_Master_merge_clean.csv',encoding='gb18030')
# 特征筛选,原始特征420维度,首先利用boruta算法进行筛选
# 处理数据去掉['Idx', 'target', 'sample_status']pd_x = data[data.target.notnull()].drop(columns=['Idx', 'target', 'sample_status', 'ListingInfo'])
x = pd_x.values
pd_y = data[data.target.notnull()]['target']
y = np.array(pd_y).ravel()
# 先定义一个随机森林分类器,RandomForest, lightgbm,xgboost也可以
rfc = RandomForestClassifier(n_jobs=-1, class_weight='balanced', max_depth=5)
feat_selector = BorutaPy(rfc,n_estimators='auto',random_state=1, max_iter=10)
feat_selector.fit(x, y)#获取筛选到的特征
dic_ft_select = pd.DataFrame({'name':pd_x.columns, 'select':feat_selector.support_})
selected_feat_name1 = dic_ft_select[dic_ft_select.select]['name']
2.利用筛选的特征进行建模
def roc_auc_plot(clf,x_train,y_train,x_test, y_test):train_auc = roc_auc_score(y_train,clf.predict_proba(x_train)[:,1])train_fpr, train_tpr, _ = roc_curve(y_train,clf.predict_proba(x_train)[:,1])train_ks = abs(train_fpr-train_tpr).max()print('train_ks = ', train_ks)print('train_auc = ', train_auc)test_auc = roc_auc_score(y_test,clf.predict_proba(x_test)[:,1])test_fpr, test_tpr, _ = roc_curve(y_test,clf.predict_proba(x_test)[:,1])test_ks = abs(test_fpr-test_tpr).max()print('test_ks = ', test_ks)print('test_auc = ', test_auc)from matplotlib import pyplot as pltplt.plot(train_fpr,train_tpr,label = 'train_roc')plt.plot(test_fpr,test_tpr,label = 'test_roc')plt.plot([0,1],[0,1],'k--', c='r')plt.xlabel('False positive rate')plt.ylabel('True positive rate')plt.title('ROC Curve')plt.legend(loc = 'best')plt.show()x2 = pd_x[selected_feat_name1]
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_auc_score, roc_curve
x_train,x_test, y_train, y_test = train_test_split(x2,y,random_state=2,test_size=0.2)import lightgbm as lgblgb_model = lgb.LGBMClassifier(n_estimators=800,boosting_type='gbdt',learning_rate=0.04,min_child_samples=68,min_child_weight=0.01,max_depth=4,num_leaves=16,colsample_bytree=0.8,subsample=0.8,reg_alpha=0.7777777777777778,reg_lambda=0.3,objective='binary')clf = lgb_model.fit(x_train, y_train,eval_set=[(x_train, y_train),(x_test,y_test)],eval_metric='auc',early_stopping_rounds=100)
roc_auc_plot(clf,x_train,y_train,x_test, y_test)
总结
因为去掉了一部分特征,所以模型的auc有所下降
Boruta特征筛选相关推荐
- R语言基于Boruta进行机器学习特征筛选(Feature Selection)
R语言基于Boruta进行机器学习特征筛选(Feature Selection) 对一个学习任务来说,给定属性集,有些属性很有用,另一些则可能没什么用.这里的属性即称为"特征"(f ...
- 特征筛选利器:Boruta 原理
Boruta 最近在搞一些机器学习的比赛,对特征筛选这块有点没什么经验,在面对百度编程过程中找到了Boruta这个工作,经过实验,达到相同效果的特征筛选数量上Boruta挑出来的数量少的一批,大量减少 ...
- 7000 字精华总结,Pandas/Sklearn 进行机器学习之特征筛选,有效提升模型性能
作者 | 俊欣 来源 | 关于数据分析与可视化 今天小编来说说如何通过pandas以及sklearn这两个模块来对数据集进行特征筛选,毕竟有时候我们拿到手的数据集是非常庞大的,有着非常多的特征,减少这 ...
- 特征工程系列:特征筛选的原理与实现(下)
0x00 前言 我们在<特征工程系列:特征筛选的原理与实现(上)>中介绍了特征选择的分类,并详细介绍了过滤式特征筛选的原理与实现.本篇继续介绍封装式和嵌入式特征筛选的原理与实现. 0x01 ...
- R语言使用caret包的findCorrelation函数批量删除相关性冗余特征、实现特征筛选(feature selection)、剔除高相关的变量
R语言使用caret包的findCorrelation函数批量删除相关性冗余特征.实现特征筛选(feature selection).剔除高相关的变量 目录
- R语言回归模型构建、回归模型基本假设(正态性、线性、独立性、方差齐性)、回归模型诊断、car包诊断回归模型、特殊观察样本分析、数据变换、模型比较、特征筛选、交叉验证、预测变量相对重要度
R语言回归模型构建.回归模型基本假设(正态性.线性.独立性.方差齐性).回归模型诊断.car包诊断回归模型.特殊观察样本分析.数据变换.模型比较.特征筛选.交叉验证.预测变量相对重要度 目录
- R语言常用线性模型特征筛选(feature selection)技术实战:基于前列腺特异性抗原(PSA)数据
R语言常用线性模型特征筛选(feature selection)技术实战 目录 R语言常用线性模型特征筛选(feature selection)技术实战
- python可视化lassocv特征筛选之后的特征的相关性分析热力图
python可视化lassocv特征筛选之后的特征的相关性分析热力图 目录 python可视化lassocv特征筛选之后的特征的相关性分析热力图 #lassocv模型
- 机器学习特征筛选:方差选择法VarianceThreshold
机器学习特征筛选:方差选择法VarianceThreshold 方差是衡量一个变量的离散程度(即数据偏离平均值的程度大小): 变量的方差越大,我们就可以认为它的离散程度越大,也就是意味着这个变量对模型 ...
- 机器学习特征筛选:互信息法(mutual information)
机器学习特征筛选:互信息法(mutual information) 互信息法多为分类问题的分类变量的筛选方法 经典的互信息也是评价定性自变量对定性因变量的相关性的,为了处理定量数据,最大信息系数法被提 ...
最新文章
- amazeui学习笔记--css(HTML元素2)--代码Code
- 3rd_party/flatbuffers/tmp/flatc: No such file or directory
- 压缩感知(Compressive Sensing)学习之(一)
- EditText修改光标和背景色(绝对简单实用)
- C#实现在同一窗口内显示多个其它窗口/另一个窗口
- 语音识别的两个方法_语音识别的应用有哪些
- 联想重装系统去掉保护_联想硬盘保护系统7.6卸载后PE还原系统步骤
- python贴吧-贴吧python登录
- LSB算法的改进matlab版
- 开源网站的漏洞复现(appcms、wordpress)
- 【Docker学习笔记 七】深入理解Docker网络配置及微服务部署
- 创业公司的抗争,共享单车的合并
- 今日头条视频如何收益
- mac 解压rar压缩文件
- hexo添加点击爆炸效果 duang duang duang
- 深度融合钉钉PaaS,授客学堂助力企业实现培训数字化
- Tomcate安装配置
- 阿里云现代农业园区解决方案,智慧园区大数据、产品管理、物联网、企业管理平台解决方案
- linux kfifo的使用
- 三代开源社区的协作模式