使用多个性能指标执行递归特征消除

问题描述 投票:0回答:1

我正在尝试使分类器尽可能简洁。为此,我使用交叉验证递归地删除功能。

在我的模型中,精度是最重要的指标。然而,我还想看看随着模型输入的特征减少,其他指标如何演变。

特别是,我想评估模型的召回率和 F1 分数。

rfe = RFECV(
    estimator=clf,  # An XGBClassifier instance
    step=1,
    min_features_to_select=1,
    cv=cv,  # A StratifiedKFold instance
    scoring='precision',
    # scoring=['f1', 'precision', 'recall'],  # throws error
    verbose=1,
    n_jobs=1
)

我注释掉了将指标列表传递给

scoring
参数的行,因为它抛出了
InvalidParameterError
(也就是说,它不高兴我向它传递了一个列表)。

有没有办法将多个指标传递给 RFECV 实例?

python machine-learning scikit-learn
1个回答
0
投票

RFECV 根据评分函数一一剔除特征。在每次迭代中,它都会遍历所有剩余变量,并根据评分结果消除一个特征。因此,它需要一个数字来决定要删除哪个功能。因此它不能使用多个评分函数,除非它们通过自定义评分器以某种方式组合。

回答你的问题:如果你想获得3个独立的评分函数输出,你需要分别对rfe输出进行评分。

还要注意,因为

f1
已经是
precision
recall
的混合体,因此可能值得使用
scoring='f1'

运行 RFECV
© www.soinside.com 2019 - 2024. All rights reserved.