use*_*745 3 python pandas random-forest scikit-learn
一旦使用方法训练分类器,是否有办法检索用于分类器训练的特征名称列表fit?我希望在申请看不见的数据之前获得此信息。用于训练的数据是熊猫DataFrame,在我的情况下,分类器是RandomForestClassifier。
我有一个可行的解决方案,但不是很优雅。这是一本没有现有解决方案的旧文章,所以我想没有。
创建并拟合您的模型。例如
model = GradientBoostingRegressor(**params)
model.fit(X_train, y_train)
Run Code Online (Sandbox Code Playgroud)
然后,您可以添加一个名为“ feature_names”的属性,因为您在训练时就知道了它们
model.feature_names = list(X_train.columns.values)
Run Code Online (Sandbox Code Playgroud)
然后,我通常将模型放入二进制文件中以进行传递,但是您可以忽略它
joblib.dump(model, filename)
loaded_model = joblib.load(filename)
Run Code Online (Sandbox Code Playgroud)
然后,您可以从模型中获取特征名称,以便在预测时使用它们
f_names = loaded_model.feature_names
loaded_model.predict(X_pred[f_names])
Run Code Online (Sandbox Code Playgroud)
根据文档和以前的经验,无法获得至少在一次拆分时考虑的功能列表。
您是否担心不想使用所有特征进行预测,而只想使用实际用于训练的特征?在这种情况下,我建议列出feature_importances_后拟合并消除看起来不相关的特征。然后仅使用相关特征训练一个新模型,并使用这些特征进行预测。