应用随机森林后提取训练和测试的重要特征
extract important features for train and test after applying 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]
我的问题是训练列和测试列不匹配。
见图:
训练和测试中第一列的图片:
我是在做错什么,还是更有效的方法?
这是我从中下载训练和测试数据集的kaggle competition。
尝试使用列名而不是索引对您的新训练和测试数据集进行子集化
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]
我正在使用随机森林进行特征选择(前 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]
我的问题是训练列和测试列不匹配。
见图:
训练和测试中第一列的图片:
我是在做错什么,还是更有效的方法?
这是我从中下载训练和测试数据集的kaggle competition。
尝试使用列名而不是索引对您的新训练和测试数据集进行子集化
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]