【发布时间】:2019-08-23 06:23:41
【问题描述】:
我正在使用RandomForestClassifier() 和10 fold cross validation,如下所示。
clf=RandomForestClassifier(random_state = 42, class_weight="balanced")
k_fold = StratifiedKFold(n_splits=10, shuffle=True, random_state=42)
accuracy = cross_val_score(clf, X, y, cv=k_fold, scoring = 'accuracy')
print(accuracy.mean())
我想确定我的特征空间中的重要特征。获得单一分类的特征重要性似乎很简单,如下所示。
print("Features sorted by their score:")
feature_importances = pd.DataFrame(clf.feature_importances_,
index = X_train.columns,
columns=['importance']).sort_values('importance', ascending=False)
print(feature_importances)
但是,我在 sklearn 中找不到如何为 cross validation 执行 feature importance。
总之,我想在 10 次交叉验证中找出最有效的特征(例如,通过使用 average importance score)。
如果需要,我很乐意提供更多详细信息。
【问题讨论】:
-
您会获得单个拟合分类器的特征重要性。如果您进行交叉验证,您将获得多个分类器(在您的情况下为 10 个)。您是在寻找每个单独分类器或所有分类器的特征重要性吗?
-
@kazemakase 非常感谢您的评论。我把它们放在一起看特征的重要性:)
-
在这种情况下,您实际上不需要交叉验证。您可以在整个数据集上拟合一个分类器并从中获取特征重要性。
标签: python machine-learning scikit-learn classification cross-validation