【问题标题】:How can i resample "roc_curve" (fpr,tpr )?我如何重新采样“roc_curve”(fpr,tpr)?
【发布时间】:2015-08-28 10:35:17
【问题描述】:

我正在寻找重新采样“roc_curve”(sklearn)输出。

当我在 Ipython 中绘制 fpr,tpr 时很好,但有时我想导出它(主要用于客户端),但很难理解,因为它不是线性的。

例如

fpr =[0,0.1,0.4,0.9,1]
tpr =[0,0.3,0.4,0.5,1]

我如何将fpr 重新采样为每 5% ex 的线性:

[0,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.,0.85,0.9,0.95,1]

tpr

[0,0.15,0.3,0.3167,0.333,0.35,0.3667,0.383,0.4,0.41,0.42,0.43,0.44,0.45,0.46,0.47,0.48,0.49,0.5,0.75,1]

我该如何继续?

【问题讨论】:

  • 输出到底应该是什么?我真的不明白 resampling 在你的上下文中是什么意思。
  • 我已编辑问题以获取更多信息

标签: python scikit-learn


【解决方案1】:

我认为您正在寻找的是分段常数插值。

import numpy as np
from scipy.interpolate import spline

fpr =[0,0.1,0.4,0.9,1]
tpr =[0,0.3,0.4,0.5,1]

n = 20
x_interp = np.linspace(0,1,n+1)
y_interp = spline(fpr, tpr, x_interp, order=0)

x_interpfpr

[ 0.    0.05  0.1   0.15  0.2   0.25  0.3   0.35  0.4   0.45  0.5   0.55
  0.6   0.65  0.7   0.75  0.8   0.85  0.9   0.95  1.  ]

y_interp 是对应的tpr

[ 0.   0.   0.3  0.3  0.3  0.3  0.3  0.3  0.4  0.4  0.4  0.4  0.4  0.4  0.4
  0.4  0.4  0.4  0.5  0.5  0.5]

【讨论】:

  • @steboc,我也想过这个问题,但我不确定这是否是个好主意。我在这里看到的问题是,这会使 roc 曲线变得平滑,我发现很难证明这是有道理的。
  • 在 scipy doc 上找不到样条。有新名字吗?
  • 其实是一个包装函数:代码在这里:github.com/scipy/scipy/blob/….
猜你喜欢
  • 2020-12-28
  • 2015-08-09
  • 2020-12-23
  • 2019-01-11
  • 2014-08-05
  • 2013-09-01
  • 2020-05-16
  • 2019-04-15
  • 2020-04-04
相关资源
最近更新 更多