从分类器中检索训练特征名称列表
Retrieve list of training features names from classifier
在使用 fit
方法训练分类器后,有没有办法检索用于训练分类器的特征名称列表?我想在应用到看不见的数据之前获得这些信息。
用于训练的数据是 pandas DataFrame
,在我的例子中,分类器是 RandomForestClassifier
.
您不需要知道为训练选择了哪些特征。只需确保在预测步骤中向拟合分类器提供您在 学习阶段 .
中使用的 相同特征
随机森林分类器将仅使用进行拆分的特征。这些将与第一阶段所学的相同。其他暂不考虑。
如果您的测试数据的形状与训练数据不同它会抛出一个错误,即使测试数据包含用于拆分决策树的所有特征。
此外,由于随机森林为您的决策树(在 sklearn
中称为 estimators
)随机选择特征,因此所有特征都可能至少使用一次。
但是,如果你想知道使用的特征,你可以在你的分类器上调用属性n_features_
和feature_importances_
一旦安装.
您可以查看 here 了解如何检索您使用的最重要功能的名称。
根据文档和以前的经验,无法获得至少在其中一个拆分中考虑的特征列表。
您是否担心不想将所有特征用于预测,而只使用实际用于训练的特征?在这种情况下,我建议在拟合后列出 feature_importances_
并删除看起来不相关的特征。然后训练一个仅具有相关特征的新模型,并将这些特征也用于预测。
我有一个可行但不是很优雅的解决方案。这是一个没有现有解决方案的旧 post,所以我想没有任何解决方案。
创建并拟合您的模型。例如
model = GradientBoostingRegressor(**params)
model.fit(X_train, y_train)
然后你可以添加一个属性,它是 'feature_names' 因为你在训练时就知道它们
model.feature_names = list(X_train.columns.values)
然后我通常将模型放入二进制文件中传递,但您可以忽略它
joblib.dump(model, filename)
loaded_model = joblib.load(filename)
然后您可以从模型中获取特征名称,以便在预测时使用它们
f_names = loaded_model.feature_names
loaded_model.predict(X_pred[f_names])
您可以按如下方式从经过训练的 XGBOOST 模型中提取特征名称:
model.get_booster().feature_names
在使用 fit
方法训练分类器后,有没有办法检索用于训练分类器的特征名称列表?我想在应用到看不见的数据之前获得这些信息。
用于训练的数据是 pandas DataFrame
,在我的例子中,分类器是 RandomForestClassifier
.
您不需要知道为训练选择了哪些特征。只需确保在预测步骤中向拟合分类器提供您在 学习阶段 .
中使用的 相同特征随机森林分类器将仅使用进行拆分的特征。这些将与第一阶段所学的相同。其他暂不考虑。
如果您的测试数据的形状与训练数据不同它会抛出一个错误,即使测试数据包含用于拆分决策树的所有特征。
此外,由于随机森林为您的决策树(在 sklearn
中称为 estimators
)随机选择特征,因此所有特征都可能至少使用一次。
但是,如果你想知道使用的特征,你可以在你的分类器上调用属性n_features_
和feature_importances_
一旦安装.
您可以查看 here 了解如何检索您使用的最重要功能的名称。
根据文档和以前的经验,无法获得至少在其中一个拆分中考虑的特征列表。
您是否担心不想将所有特征用于预测,而只使用实际用于训练的特征?在这种情况下,我建议在拟合后列出 feature_importances_
并删除看起来不相关的特征。然后训练一个仅具有相关特征的新模型,并将这些特征也用于预测。
我有一个可行但不是很优雅的解决方案。这是一个没有现有解决方案的旧 post,所以我想没有任何解决方案。
创建并拟合您的模型。例如
model = GradientBoostingRegressor(**params)
model.fit(X_train, y_train)
然后你可以添加一个属性,它是 'feature_names' 因为你在训练时就知道它们
model.feature_names = list(X_train.columns.values)
然后我通常将模型放入二进制文件中传递,但您可以忽略它
joblib.dump(model, filename)
loaded_model = joblib.load(filename)
然后您可以从模型中获取特征名称,以便在预测时使用它们
f_names = loaded_model.feature_names
loaded_model.predict(X_pred[f_names])
您可以按如下方式从经过训练的 XGBOOST 模型中提取特征名称:
model.get_booster().feature_names