首页
/ Deepchecks项目中的评估指标使用指南

Deepchecks项目中的评估指标使用指南

2025-07-09 04:11:57作者:范靓好Udolf

概述

在机器学习模型开发过程中,评估模型性能是至关重要的环节。Deepchecks作为一个全面的机器学习验证工具包,提供了丰富的评估指标功能。本文将详细介绍如何在Deepchecks中使用不同类型的评估指标,包括内置指标和自定义指标。

表格数据评估指标

使用字符串指定内置指标

Deepchecks为表格数据提供了多种内置评估指标,可以直接通过字符串名称调用:

from deepchecks.tabular.checks import TrainTestPerformance
from deepchecks.tabular.datasets.classification import adult

# 加载数据和模型
train_ds, test_ds = adult.load_data(data_format='Dataset', as_train_test=True)
model = adult.load_fitted_model()

# 指定要使用的评估指标
scorer = ['precision_per_class', 'recall_per_class', 'fnr']
check = TrainTestPerformance(scorers=scorer)
result = check.run(train_ds, test_ds, model)

这段代码展示了如何使用字符串列表指定多个内置评估指标。precision_per_class计算每个类别的精确率,recall_per_class计算每个类别的召回率,fnr计算假负率。

自定义评估指标

当内置指标不能满足需求时,可以使用scikit-learn的make_scorer函数创建自定义评估指标:

from deepchecks.tabular.suites import model_evaluation
from sklearn.metrics import cohen_kappa_score, fbeta_score, make_scorer

# 创建自定义评估指标
f1_scorer = make_scorer(fbeta_score, labels=[0, 1], average=None, beta=0.2)
ck_scorer = make_scorer(cohen_kappa_score)
custom_scorers = {'f1': f1_scorer, 'cohen': ck_scorer}

# 使用自定义指标进行评估
suite = model_evaluation(scorers=custom_scorers)
result = suite.run(train_ds, test_ds, model)

这里创建了两个自定义指标:一个调整beta参数的F1分数和一个Cohen's Kappa分数。自定义指标可以灵活地适应各种评估需求。

视觉数据评估指标

使用默认指标

对于视觉任务,Deepchecks同样提供了便捷的评估方式:

from deepchecks.vision.checks import ClassPerformance
from deepchecks.vision.datasets.classification import mnist_torch as mnist

# 加载视觉数据集
train_ds = mnist.load_dataset(train=True, object_type='VisionData')
test_ds = mnist.load_dataset(train=False, object_type='VisionData')

# 使用默认评估指标
check = ClassPerformance()
result = check.run(train_ds, test_ds)

默认情况下,ClassPerformance会使用常见的分类指标如准确率、精确率、召回率等。

实现自定义视觉指标

对于更特殊的需求,可以继承CustomMetric类实现完全自定义的评估指标:

import numpy as np
import typing as t
from deepchecks.vision.checks import SingleDatasetPerformance
from deepchecks.vision.metrics_utils import CustomMetric

class CustomAccuracy(CustomMetric):
    def __init__(self):
        super().__init__()
        self._correct = 0
        self._total = 0

    def reset(self):
        self._correct = 0
        self._total = 0
        super().reset()

    def update(self, output: t.Tuple[t.List[np.ndarray], t.List[int]]):
        y_pred, y = output
        y_pred = np.array(y_pred).argmax(axis=1)
        y = np.array(y)
        self._correct += (y_pred == y).sum()
        self._total += y_pred.shape[0]
        super().update(output)

    def compute(self):
        return self._correct / self._total

# 使用自定义准确率指标
check = SingleDatasetPerformance(scorers={'accuracy': CustomAccuracy()})
result = check.run(train_ds)

这个例子实现了自定义的准确率计算,展示了如何通过继承CustomMetric类来完全控制指标的计算过程。

使用Deepchecks内置视觉专用指标

Deepchecks还提供了一些视觉任务专用的高级指标,如分割任务中的Dice系数:

from deepchecks.vision.metrics import MeanDice
from deepchecks.vision.datasets.segmentation.segmentation_coco import load_dataset

# 加载分割数据集
coco_dataset = load_dataset()

# 使用MeanDice指标
metric = {'mean_dice': MeanDice(threshold=0.9)}
check = SingleDatasetPerformance(scorers=metric)
result = check.run(coco_dataset)

MeanDice是图像分割任务中常用的评估指标,这里设置了0.9的阈值来评估模型性能。

总结

Deepchecks提供了灵活的评估指标系统,支持:

  1. 通过字符串快速调用内置指标
  2. 使用scikit-learn接口创建自定义指标
  3. 通过继承实现完全自定义的视觉指标
  4. 使用视觉任务专用高级指标

这些功能覆盖了从简单到复杂的各种评估需求,使开发者能够全面、准确地评估模型性能。在实际应用中,建议先尝试使用内置指标,当有特殊需求时再考虑自定义实现,以提高开发效率。