sklearn:使用GBDT选择特征

本文介绍了如何利用sklearn库中的GBDT方法进行特征选择。通过训练GBDT模型,可以有效识别出对目标变量影响显著的特征,进一步优化机器学习模型的性能。选取的特征可用于后续的模型训练。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)如何在numpy数组中选取若干列或者行?  
>>>import numpy as np
>>>tmp_a = np.array([[1,1], [0.4, 4], [1., 0.9]]) 
>>>tmp_a
>>>tmp_a[[0,1],:]#选第0、1行 
>>>tmp_a[np.array([True, False, True]),:]# 选第0、2行
>>>tmp_a[:,[0]]#选第0列 
>>>tmp_a[:, np.array([True, False])]#选第0列


(2)训练GBDT,选取特征,选完之后可以用其他方法继续进行训练。

from sklearn.ensemble import GradientBoostingClassifier
gbdt = GradientBoostingClassifier(
    init=None,
    learning_rate=0.1,
    loss='deviance',
    max_depth=3,
    max_features=None,
    max_leaf_nodes=None,
    min_samples_leaf=1,
    min_samples_split=2,
    min_weight_fraction_leaf=0.0,
    n_estimators=100,
    random_state=None,
    subsample=1.0,
    verbose=0,
    warm_start=False)
print "fit start!"
gbdt.fit(X[499:], y[499:])
print "fit success!"


score = gbdt.feature_importances_
print gbdt.feature_importances_.shape

#选择importance>0的特征
X_new = X[:, gbdt.feature_importances_>0]
X_new.shape

注:X为数据特征,y为标记的类别。用X[499:],y[499:]对GBDT进行训练。然后如果该特征的gbdt.feature_importances_>0,则该特征保留,否则,则把该特征删除,从而达到选取特征的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值