我想用 mlxtend 做一个 FeatureSelection ExhaustiveFeatureSelector
。我目前的管道很简单:
regr = make_pipeline(StandardScaler(), SVR())
我还有分类属性,OneHotEncoder()
在设置管道之前我已经手动对其进行了编码。
df = onehot(df,"Categorical_Attribute")
X = df.drop('Target_Variable', axis=1)
y = df['Target_Variable']
现在我想开始特征选择,但分类属性应该只在实际选择时编码,所以基本上我想要管道中的 OneHotEncoder。但只需这样做:
regr = make_pipeline(OneHotEncoder(), StandardScaler(), SVR())
不工作。如何将编码器添加到管道中,以确保 FeatureSelector 将分类属性作为一个属性处理并且不会选择其中的一部分?
PS:特征选择器的工作方式如下:
regr = make_pipeline(StandardScaler(), SVR())
efs = ExhaustiveFeatureSelector(regr,
min_features=4,
max_features=10,
scoring='neg_mean_absolute_error')
efs = efs.fit(X_train, y_train)
print(efs.best_feature_names_)