跳转至

ROC-AUC

ROC 曲线展示不同阈值下真正率和假正率的关系。AUC 越接近 1,模型区分滑坡与非滑坡样本的能力越强。

注意事项

不要只依赖 AUC

如果训练样本和测试样本在空间上高度接近,AUC 可能偏高。真实研究中应结合空间分块验证、独立灾害事件验证或专家判读。

示例实现见:

src/landslide/metrics.py
"""Validation metrics used by tutorial examples."""

from __future__ import annotations

from typing import Any

from sklearn.metrics import accuracy_score, confusion_matrix, precision_score, recall_score, roc_auc_score


def evaluate_binary_classifier(y_true, y_probability, threshold: float = 0.5) -> dict[str, Any]:
    """Evaluate a binary susceptibility classifier."""
    y_pred = (y_probability >= threshold).astype(int)
    matrix = confusion_matrix(y_true, y_pred)
    return {
        "threshold": threshold,
        "roc_auc": float(roc_auc_score(y_true, y_probability)),
        "accuracy": float(accuracy_score(y_true, y_pred)),
        "precision": float(precision_score(y_true, y_pred, zero_division=0)),
        "recall": float(recall_score(y_true, y_pred, zero_division=0)),
        "confusion_matrix": matrix.tolist(),
    }