如何为MultiOutput Classifier计算评估矩阵并解决交叉验证问题
解决MultiOutputClassifier交叉验证失败问题
核心问题分析
cross_val_score仅支持单一评估指标,无法处理多指标的scoring字典,这是代码运行失败的主要原因。precision_score在多输出场景下必须指定average参数,默认的binary模式不适配多列预测的维度,会引发计算错误。
修正后的代码
from sklearn.model_selection import cross_validate # 定义多评估指标,明确precision的average参数 scoring = { 'accuracy': make_scorer(accuracy_score), # 根据任务需求选择average类型:macro/micro/weighted 'precision': make_scorer(precision_score, average='macro') } # 使用cross_validate替代cross_val_score支持多指标评估 results = cross_validate(estimator=linear_svc, X=X_train_, y=y_train_, cv=kfold, scoring=scoring)
关键说明
- 替换
cross_val_score为cross_validate:该函数支持多指标输出,返回的results字典会包含各折交叉验证的得分,例如results['test_accuracy']、results['test_precision']可分别提取对应指标的结果。 - 关于
average参数选择:'micro':计算全局的真阳性、假阳性、假阴性后求精度'macro':对每个输出列单独计算精度再取算术平均'weighted':按各列样本数量加权平均精度
根据你的业务场景选择合适的参数即可。
内容的提问来源于stack exchange,提问作者Mahmudul Hasan Munna
相关产品推荐
相关产品推荐

