机器学习之 基于xgboost的特征筛选

本文主要是基于xgboost进行特征选择,很多人都知道在后面的模型选择时,xgboost模型是一个非常热门的模型。但其实在前面特征选择部分,基于xgboost进行特征筛选也大有可为。

#coding=utf-8

import pandas as pd
import xgboost as xgb
import os,random,pickle


os.mkdir('featurescore')



train = pd.read_csv('../../data/train/train_x_rank.csv')
train_target = pd.read_csv('../../data/train/train_master.csv',encoding='gb18030')[['Idx','target']]
train = pd.merge(train,train_target,on='Idx')
train_y = train.target
train_x = train.drop(['Idx','target'],axis=1)
dtrain = xgb.DMatrix(train_x, label=train_y)

test = pd.read_csv('../../data/test/test_x_rank.csv')
test_Idx = test.Idx
test = test.drop('Idx',axis=1)
dtest = xgb.DMatrix(test)


train_test = pd.concat([train,test])
train_test.to_csv('rank_feature.csv',index=None)
print print(train_test.shap
XGBoost(eXtreme Gradient Boosting)是一种高效的机器学习算法,它在梯度提升框架下对树模型进行优化。在XGBoost中进行特征筛选不是该算法本身内置的一个功能,而是一种在构建模型之前或期间用于提高模型性能和减少过拟合风险的预处理步骤。下面介绍一下特征筛选机器学习模型构建中的一般原理: 1. 目的:特征筛选的目的在于识别并移除不相关或冗余的特征,这样可以减少模型的复杂性,减少过拟合的风险,同时提高训练速度和模型的泛化能力。 2. 方法: - Filter方法:这类方法根据统计测试选择特征,如卡方检验、相关系数、互信息等,不依赖于模型,快速但是不考虑特征间的关系。 - Wrapper方法:如递归特征消除(RFE),递归地构建模型,并在每一步中选择最好的或最差的特征。这种方法考虑了特征组合对模型性能的影响,但计算成本高。 - Embedded方法:这些方法在模型训练的过程中集成特征选择,如L1和L2正则化(Lasso和Ridge回归)。特征选择是模型训练过程的一部分,因此这种方法的计算成本相对较低。 3. XGBoost中的特征重要性:虽然XGBoost不直接提供特征筛选算法,但它可以计算特征的重要性分数。这些分数基于每个特征在所有树中分割点的增益总和。高的特征重要性分数表明该特征在模型中很有用,这可以用来作为特征选择的依据。 需要注意的是,特征选择不应只依赖于单一方法或算法,而应结合领域知识、数据可视化、统计检验和模型反馈来综合考虑。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值