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

分层交叉折叠医学图像分类时DatasetType未定义错误求助

解决DatasetType未定义错误及后续结果保存与指标计算

错误原因及修复方案

这个错误源于fastai版本迭代后,数据集类型的枚举类发生了变更,分两种情况处理:

情况1:使用fastai v2及以上版本(版本号≥2.0)

fastai v2已移除DatasetType枚举,可通过以下三种方式替代:

  • 直接传入验证集索引:
    preds_test, y_test = learn.get_preds(ds_idx=1)  # ds_idx=0对应训练集,1对应验证集
    
  • 直接指定验证集数据加载器:
    preds_test, y_test = learn.get_preds(dl=learn.dls.valid)
    
  • 导入Loaders枚举类使用(可选,语义更清晰):
    from fastai.data.core import Loaders
    preds_test, y_test = learn.get_preds(Loaders.Valid)
    

情况2:使用fastai v1版本(版本号<2.0)

此时需手动导入DatasetType,在代码开头添加:

from fastai.basic_data import DatasetType

之后再执行preds_test, y_test = learn.get_preds(DatasetType.Valid)即可正常运行。

结果保存与评估指标计算

保存预测结果

用numpy将预测结果和真实标签保存为本地文件:

import numpy as np
# 保存预测概率
np.save('validation_preds.npy', preds_test)
# 保存真实标签
np.save('validation_labels.npy', y_test)

计算常规评估指标

借助sklearn的metrics模块计算准确率、混淆矩阵、精确率、召回率等指标:

from sklearn.metrics import accuracy_score, confusion_matrix, classification_report

# 将预测概率转换为类别索引(取最大概率对应的类别)
preds_class = preds_test.argmax(dim=1).numpy()
# 真实标签转换为numpy数组(若为tensor格式)
y_test_np = y_test.numpy()

# 计算准确率
accuracy = accuracy_score(y_test_np, preds_class)
# 生成混淆矩阵
confusion_mat = confusion_matrix(y_test_np, preds_class)
# 生成分类报告(包含精确率、召回率、F1分数)
class_report = classification_report(y_test_np, preds_class)

print(f"验证集准确率:{accuracy:.4f}")
print("混淆矩阵:\n", confusion_mat)
print("分类报告:\n", class_report)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 05:40:20