购买网站外链,长业建设网站,网站ftp用户名和密码是什么,住房和城乡建设部官网进行查询深度学习pytorch之22种损失函数数学公式和代码定义 深度学习pytorch之19种优化算法#xff08;optimizer#xff09;解析 深度学习pytorch之4种归一化方法#xff08;Normalization#xff09;原理公式解析和参数使用 深度学习pytorch之简单方法自定义9类卷积即插即用 实时…深度学习pytorch之22种损失函数数学公式和代码定义 深度学习pytorch之19种优化算法optimizer解析 深度学习pytorch之4种归一化方法Normalization原理公式解析和参数使用 深度学习pytorch之简单方法自定义9类卷积即插即用 实时语义分割之BiSeNetv22020结构原理解析及建筑物提取实践 文章目录 摘要1. Accuracy Score2. Balanced Accuracy3. Brier Score Loss4. Cohens Kappa5. F1/F-beta Score6. Hamming Loss7. Hinge Loss8. Jaccard Score9. Log Loss10. Matthews Correlation11. Precision12. Recall13. Zero-One Loss 关键参数说明可执行代码示例 摘要
模型训练后需要评估模型性能因此需要了解各种评估指标的具体用法和背后的数学原理本博客以清晰的格式呈现分类任务评估指标的名称、调用示例、公式说明。
1. Accuracy Score
调用方式
from sklearn.metrics import accuracy_score
acc accuracy_score(y_true, y_pred, normalizeTrue, sample_weightNone)公式 Accuracy (TP TN) / (TP TN FP FN) 2. Balanced Accuracy
调用方式
from sklearn.metrics import balanced_accuracy_score
bal_acc balanced_accuracy_score(y_true, y_pred, sample_weightNone, adjustedFalse)公式 Balanced Accuracy (Recall_Class1 Recall_Class2 … Recall_ClassN) / N 调整后版本BalancedAcc_adj (BalancedAcc - 1/N) / (1 -1/N) 3. Brier Score Loss
调用方式
from sklearn.metrics import brier_score_loss
brier brier_score_loss(y_true, y_prob, sample_weightNone, pos_label1)公式 Brier Score 1/N * Σ(y_true_i - y_prob_i)^2 适用于概率预测的校准度评估
4. Cohen’s Kappa
调用方式
from sklearn.metrics import cohen_kappa_score
kappa cohen_kappa_score(y1, y2, labelsNone, weightsNone, sample_weightNone)公式 κ (p_o - p_e) / (1 - p_e) 其中 p_o 为观察一致率p_e 为期望一致率 5. F1/F-beta Score
调用方式
from sklearn.metrics import f1_score, fbeta_score
f1 f1_score(y_true, y_pred, averageweighted, zero_division0)
fbeta fbeta_score(y_true, y_pred, beta0.5, averagemacro)公式 Fβ (1 β²) * (precision * recall) / (β² * precision recall) 当 β1 时为 F1 Score 6. Hamming Loss
调用方式
from sklearn.metrics import hamming_loss
hamming hamming_loss(y_true, y_pred, sample_weightNone)公式 Hamming Loss 1/N * Σ(预测错误的标签数 / 总标签数) 多标签任务专用 7. Hinge Loss
调用方式
from sklearn.metrics import hinge_loss
hinge hinge_loss(y_true, pred_decision, labelsNone, sample_weightNone)公式 Hinge Loss max(0, 1 - y_true * pred_decision) 的平均值 SVM模型常用 8. Jaccard Score
调用方式
from sklearn.metrics import jaccard_score
jaccard jaccard_score(y_true, y_pred, averagesamples)公式 Jaccard TP / (TP FP FN) 即IOU多用于图像分割评估
9. Log Loss
调用方式
from sklearn.metrics import log_loss
logloss log_loss(y_true, y_pred, eps1e-15, normalizeTrue, labelsNone)公式 Log Loss -1/N * Σ[y_true_i * log(y_pred_i) (1-y_true_i) *log(1-y_pred_i)] 交叉熵损失需概率预测输入
10. Matthews Correlation
调用方式
from sklearn.metrics import matthews_corrcoef
mcc matthews_corrcoef(y_true, y_pred, sample_weightNone)公式 MCC (TPTN - FPFN) / √((TPFP)(TPFN)(TNFP)(TNFN)) 适用于类别不平衡的二分类
11. Precision
调用方式
from sklearn.metrics import precision_score
precision precision_score(y_true, y_pred, averageweighted, zero_division0)公式 Precision TP / (TP FP) 12. Recall
调用方式
from sklearn.metrics import recall_score
recall recall_score(y_true, y_pred, averagemacro, zero_division0)公式 Recall TP / (TP FN) 13. Zero-One Loss
调用方式
from sklearn.metrics import zero_one_loss
zero_one zero_one_loss(y_true, y_pred, normalizeTrue)公式 Zero-One Loss 1 - Accuracy 直接统计错误预测比例
关键参数说明
参数说明average计算方式None各类单独计算、‘micro’全局统计、‘macro’各类平均、‘weighted’按支持数加权zero_division处理除零情况0返回0、1返回1或’warn’返回0并警告sample_weight样本权重数组pos_label指定正类标签仅二分类有效labels指定要评估的类别列表betaF-beta中召回率的权重1侧重召回率1侧重精确率
可执行代码示例
以下程序采用常用的accuracy, precision, recall, f1对分类结果进行评估注意替换下列文件夹两个文件夹内均为8位单波段影像采用相同命名。
label_dir ‘label’ # 替换为实际路径pred_dir ‘pred’ # 替换为实际路径
import os
import numpy as np
from PIL import Image
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, roc_auc_score
import matplotlib.pyplot as pltdef load_images_and_labels(label_dir, pred_dir):读取标签图像和预测图像假设它们的像素值代表类别标签。:param label_dir: 实际标签图像的文件夹路径:param pred_dir: 预测标签图像的文件夹路径:return: 实际标签和预测标签的列表labels []preds []# 获取文件列表label_files sorted(os.listdir(label_dir))pred_files sorted(os.listdir(pred_dir))# 遍历每个图像文件加载标签和预测for label_file, pred_file in zip(label_files, pred_files):label_path os.path.join(label_dir, label_file)pred_path os.path.join(pred_dir, pred_file)# 加载图像并转换为灰度label_img Image.open(label_path).convert(L) # 灰度图pred_img Image.open(pred_path).convert(L) # 灰度图# 假设灰度值代表类标签label np.array(label_img)pred np.array(pred_img)# 扁平化数组以便计算评估指标labels.extend(label.flatten())preds.extend(pred.flatten())return np.array(labels), np.array(preds)def evaluate_model(labels, preds):计算模型的评估指标:param labels: 实际标签:param preds: 预测标签# 计算评估指标accuracy accuracy_score(labels, preds)precision precision_score(labels, preds, averageweighted, zero_division0)recall recall_score(labels, preds, averageweighted, zero_division0)f1 f1_score(labels, preds, averageweighted, zero_division0)# 打印评估指标print(fAccuracy: {accuracy:.4f})print(fPrecision: {precision:.4f})print(fRecall: {recall:.4f})print(fF1 Score: {f1:.4f})# 可选绘制混淆矩阵from sklearn.metrics import confusion_matriximport seaborn as snscm confusion_matrix(labels, preds)sns.heatmap(cm, annotTrue, fmtd, cmapBlues, xticklabelsnp.unique(labels), yticklabelsnp.unique(labels))plt.title(Confusion Matrix)plt.xlabel(Predicted)plt.ylabel(True)plt.show()if __name__ __main__:# 设置实际标签和预测标签的文件夹路径label_dir label # 替换为实际路径pred_dir pred # 替换为实际路径# 加载标签和预测数据labels, preds load_images_and_labels(label_dir, pred_dir)# 评估模型evaluate_model(labels, preds)
输出结果 Accuracy: 0.9681 Precision: 0.9686 Recall: 0.9681 F1 Score: 0.9683
绘制混淆矩阵