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(),
}