从分类器中检索训练功能名称列表

use*_*745 3 python pandas random-forest scikit-learn

一旦使用方法训练分类器,是否有办法检索用于分类器训练的特征名称列表fit?我希望在申请看不见的数据之前获得此信息。用于训练的数据是熊猫DataFrame,在我的情况下,分类器是RandomForestClassifier

Kei*_*ith 6

我有一个可行的解决方案,但不是很优雅。这是一本没有现有解决方案的旧文章,所以我想没有。

创建并拟合您的模型。例如

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)


Ada*_*ann 4

根据文档和以前的经验,无法获得至少在一次拆分时考虑的功能列表。

您是否担心不想使用所有特征进行预测,而只想使用实际用于训练的特征?在这种情况下,我建议列出feature_importances_后拟合并消除看起来不相关的特征。然后仅使用相关特征训练一个新模型,并使用这些特征进行预测。

  • 一个担忧是,将来另一位程序员可能会提供预测对象无法处理的数据集。假设原始代码不可用,基本期望是模型对象应该能够吐出与计算相关的所有参数。简而言之,该对象应该是不言自明的。 (5认同)