文章目录

  • 前言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特征筛选相关推荐

  1. R语言基于Boruta进行机器学习特征筛选(Feature Selection)

    R语言基于Boruta进行机器学习特征筛选(Feature Selection) 对一个学习任务来说,给定属性集,有些属性很有用,另一些则可能没什么用.这里的属性即称为"特征"(f ...

  2. 特征筛选利器:Boruta 原理

    Boruta 最近在搞一些机器学习的比赛,对特征筛选这块有点没什么经验,在面对百度编程过程中找到了Boruta这个工作,经过实验,达到相同效果的特征筛选数量上Boruta挑出来的数量少的一批,大量减少 ...

  3. 7000 字精华总结,Pandas/Sklearn 进行机器学习之特征筛选,有效提升模型性能

    作者 | 俊欣 来源 | 关于数据分析与可视化 今天小编来说说如何通过pandas以及sklearn这两个模块来对数据集进行特征筛选,毕竟有时候我们拿到手的数据集是非常庞大的,有着非常多的特征,减少这 ...

  4. 特征工程系列:特征筛选的原理与实现(下)

    0x00 前言 我们在<特征工程系列:特征筛选的原理与实现(上)>中介绍了特征选择的分类,并详细介绍了过滤式特征筛选的原理与实现.本篇继续介绍封装式和嵌入式特征筛选的原理与实现. 0x01 ...

  5. R语言使用caret包的findCorrelation函数批量删除相关性冗余特征、实现特征筛选(feature selection)、剔除高相关的变量

    R语言使用caret包的findCorrelation函数批量删除相关性冗余特征.实现特征筛选(feature selection).剔除高相关的变量 目录

  6. R语言回归模型构建、回归模型基本假设(正态性、线性、独立性、方差齐性)、回归模型诊断、car包诊断回归模型、特殊观察样本分析、数据变换、模型比较、特征筛选、交叉验证、预测变量相对重要度

    R语言回归模型构建.回归模型基本假设(正态性.线性.独立性.方差齐性).回归模型诊断.car包诊断回归模型.特殊观察样本分析.数据变换.模型比较.特征筛选.交叉验证.预测变量相对重要度 目录

  7. R语言常用线性模型特征筛选(feature selection)技术实战:基于前列腺特异性抗原(PSA)数据

    R语言常用线性模型特征筛选(feature selection)技术实战 目录 R语言常用线性模型特征筛选(feature selection)技术实战

  8. python可视化lassocv特征筛选之后的特征的相关性分析热力图

    python可视化lassocv特征筛选之后的特征的相关性分析热力图 目录 python可视化lassocv特征筛选之后的特征的相关性分析热力图 #lassocv模型

  9. 机器学习特征筛选:方差选择法VarianceThreshold

    机器学习特征筛选:方差选择法VarianceThreshold 方差是衡量一个变量的离散程度(即数据偏离平均值的程度大小): 变量的方差越大,我们就可以认为它的离散程度越大,也就是意味着这个变量对模型 ...

  10. 机器学习特征筛选:互信息法(mutual information)

    机器学习特征筛选:互信息法(mutual information) 互信息法多为分类问题的分类变量的筛选方法 经典的互信息也是评价定性自变量对定性因变量的相关性的,为了处理定量数据,最大信息系数法被提 ...

最新文章

  1. amazeui学习笔记--css(HTML元素2)--代码Code
  2. 3rd_party/flatbuffers/tmp/flatc: No such file or directory
  3. 压缩感知(Compressive Sensing)学习之(一)
  4. EditText修改光标和背景色(绝对简单实用)
  5. C#实现在同一窗口内显示多个其它窗口/另一个窗口
  6. 语音识别的两个方法_语音识别的应用有哪些
  7. 联想重装系统去掉保护_联想硬盘保护系统7.6卸载后PE还原系统步骤
  8. python贴吧-贴吧python登录
  9. LSB算法的改进matlab版
  10. 开源网站的漏洞复现(appcms、wordpress)
  11. 【Docker学习笔记 七】深入理解Docker网络配置及微服务部署
  12. 创业公司的抗争,共享单车的合并
  13. 今日头条视频如何收益
  14. mac 解压rar压缩文件
  15. hexo添加点击爆炸效果 duang duang duang
  16. 深度融合钉钉PaaS,授客学堂助力企业实现培训数字化
  17. Tomcate安装配置
  18. 阿里云现代农业园区解决方案,智慧园区大数据、产品管理、物联网、企业管理平台解决方案
  19. linux kfifo的使用
  20. 三代开源社区的协作模式

热门文章

  1. 算法----(3)选择排序
  2. IE11 0x2ee4 bug 以及类似问题解决方法
  3. Swift 个人学习笔记 - 01: A Swift Tour
  4. MySql的基本操作以及以后开发经常使用的常用指令
  5. Redis安装及Java客户端的使用浅析(jedis)
  6. 源码推荐:多图无缝滚动控件,多视图控制器间切换
  7. jQuery动画的实现
  8. RedHat系统的Yum安装
  9. 获取System.__ComObject的真正类型
  10. MySQL--Centos7下安装5.7.19