You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用mlxtend做序列特征选择时多分类roc_auc报错求助

多分类任务下SFFS使用roc_auc报错的解决方法

问题原因

你遇到的ValueError: multiclass format is not supported错误,本质是因为指定的scoring="roc_auc"在sklearn中默认不支持多分类(5分类)任务——roc_auc指标原生仅适配二分类场景。

解决方法

有两种可行的修正方案:

方案1:改用多分类兼容的评分指标

直接替换为支持多分类的评估指标,比如accuracy、f1_weighted、balanced_accuracy等,这些指标原生支持多分类任务。修改后的代码如下:

from sklearn.ensemble import RandomForestClassifier
from mlxtend.feature_selection import SequentialFeatureSelector as SFS 

# 初始化模型
model = RandomForestClassifier(n_jobs=-1, verbose=0)

# 初始化SFS对象,替换为多分类支持的评分指标
sffs = SFS(model, k_features = "best",
           forward = True, floating = True, n_jobs=-1,
           verbose = 2, scoring= "f1_weighted", cv=5 )

sffs.fit(X, y)

方案2:自定义多分类版本的roc_auc评分器

如果必须使用roc_auc作为评估指标,可以通过sklearn.metrics.make_scorer自定义支持多分类的roc_auc评分器,指定multi_class参数为"ovr"(一对多)或"ovo"(一对一)。代码示例如下:

from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import roc_auc_score, make_scorer
from mlxtend.feature_selection import SequentialFeatureSelector as SFS 

# 初始化模型
model = RandomForestClassifier(n_jobs=-1, verbose=0)

# 自定义多分类roc_auc评分器,这里采用一对多策略
multiclass_roc_auc = make_scorer(roc_auc_score, multi_class="ovr", needs_proba=True)

# 初始化SFS对象,使用自定义评分器
sffs = SFS(model, k_features = "best",
           forward = True, floating = True, n_jobs=-1,
           verbose = 2, scoring= multiclass_roc_auc, cv=5 )

sffs.fit(X, y)

注意:使用roc_auc多分类版本时,需要确保评估器支持输出概率(RandomForestClassifier默认支持),因此设置needs_proba=True。

内容的提问来源于stack exchange,提问作者arilwan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 14:23:13