应用随机森林后提取重要特征进行训练和测试

时间:2018-07-08 20:07:21

标签: python pandas machine-learning scikit-learn random-forest

我正在使用随机森林进行特征选择(前100个最重要的特征)。
这是我正在使用的代码;

RandomForest_model = RandomForestRegressor(n_estimators=300,n_jobs=-1)
    RandomForest_model.fit(train_x,train_y)
    RandomForest_model.score(train_x,train_y)
    indices = RandomForest_model.feature_importances_.argsort()[:100]
    train_100_x= train.iloc[:,indices]
    test_100_y = test_100_y.iloc[:,indices]

我的问题是我的火车和测试柱不匹配。

查看图片;

Picture of first columns in train and test.

我做错什么了吗?或者这是一种更有效的方式?

这是我已经下载了训练和测试数据集的competition kaggle竞赛。

1 个答案:

答案 0 :(得分:1)

尝试使用列名而不是索引将子集设置为新的训练和测试数据集

RandomForest_model = RandomForestRegressor(n_estimators=300,n_jobs=-1)
RandomForest_model.fit(train_x,train_y)

importance_df=pd.DataFrame({'feature':train_x.columns, 'importance':RandomForest_model.feature_importances_})
#sort feature importance data frame
importance_df.sort_values('importance', ascending=False, inplace=True)
#select 100 most important features
features= importance_df.feature[:100]
#
train_100_x= train_x.loc[:,features]
test_100_x = test_x.loc[:,features]