sklearn:使用GBDT选择特征

来源:互联网 发布:php curl获取json数据 编辑:程序博客网 时间:2024/06/04 19:28
(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 GradientBoostingClassifiergbdt = 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,则该特征保留,否则,则把该特征删除,从而达到选取特征的效果。
原创粉丝点击