如何优雅地平均多条曲线 & scipy.interpolate.interp1d below the interpolation range error
正确的思路应该是得到所有曲线,然后规定新曲线采样位置(x坐标),然后平均y值。下面的做法错了,因为ROC曲线上的任一个点的位置是清晰地定义好的,插值是画蛇添足。
-------------------------------------------------------
为了实验结果的有效性减少偶然性,我们经常需要重复实验,平均多个结果。但是像类似auc曲线的这种东西,每次出来的一条折线的拐点都是不对齐的,这时该如何平均多条曲线呢?此时可以先通过插值,计算指定横坐标上某次实验roc曲线的y值,再对多次实验的y值取平均,确定最终曲线上的一个点。连接所有点得到最终曲线。如下图,×是真实数据点,⚪是通过最近插值得到的点,蓝线是平均两次实验结果得到的曲线。

代码如下:
from scipy import interpolate
def averageCurve(xs,ys,xnew=np.linspace(0,1,1000),kind='slinear'):
ynews = []
for x,y in zip(xs,ys):
f=interpolate.interp1d(x,y,kin

浙公网安备 33010602011771号