下面是一个利用公式编写ROC指标函数的示例代码:

import numpy as np

def roc(y_true, y_pred):
    # 将预测概率值从高到低排序
    sorted_indices = np.argsort(y_pred)[::-1]
    y_true_sorted = y_true[sorted_indices]
    
    # 计算正类样本数和负类样本数
    num_positive = np.sum(y_true == 1)
    num_negative = np.sum(y_true == 0)
    
    # 初始化真正例率(TPR)和假正例率(FPR)的数组
    tpr = np.zeros(num_positive)
    fpr = np.zeros(num_negative)
    
    # 遍历每个阈值点,计算TPR和FPR
    for i, idx in enumerate(sorted_indices):
        if y_true[idx] == 1:
            tpr[i] = np.sum(y_true_sorted[:i+1] == 1) / num_positive
            fpr[i] = np.sum(y_true_sorted[:i+1] == 0) / num_negative
    
    # 计算AUC值
    auc = np.trapz(tpr, fpr)
    
    return tpr, fpr, auc

该函数接受两个参数:y_true为真实标签(0或1),y_pred为预测概率值。首先根据预测概率值将样本从高到低排序,然后计算每个阈值点下的真正例率(TPR)和假正例率(FPR),最后利用梯形法则计算AUC值。函数返回TPR数组、FPR数组和AUC值。

注意:上述代码仅适用于二分类问题,且假设正类样本的标签为1,负类样本的标签为0。如果正类样本的标签不是1,需要相应地修改代码

利用公式编写roc指标函数代码

原文地址: https://www.cveoy.top/t/topic/iZW8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录