60、AUC计算和ROC曲线画图

import random as rd
import matplotlib.pyplot as plt

def sample_generate(num_p, num_n):

    return [[rd.gauss(mu=0.6, sigma=0.2), 1] for _ in range(num_p)] + [[rd.gauss(mu=0.4, sigma=0.2), 0] for _ in range(num_n)]

def ROC_print(samples):

    samples.sort(key=lambda x: x[0], reverse=True)

    L_x = [0]
    L_y = [0]
    AUC = 0

    x, y = 0, 0
    for s in samples:
        if s[1] == 1:
            y += 1
        else:
            x += 1
            AUC += y
        L_x.append(x)
        L_y.append(y)

    L_x = [_/x for _ in L_x]
    L_y = [_ /y for _ in L_y]

    plt.step(L_x, L_y, c = "g")
    plt.plot([0,1], [0,1], c = "b")

    #坐标轴
    plt.grid(axis='x', color='0.95')
    plt.grid(axis='y', color='0.95')

    #title
    plt.title('ROC')
    plt.show()

    print("\nAUC:", AUC/x/y)


if __name__ == '__main__':

    samples = sample_generate(60, 40)
    ROC_print(samples)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值