ValueError: A value in x_new is below the interpolation range.
在使用scipy.interpolate.interp1d()函数计算EER的时候出现了上述报错。从如何优雅地平均多条曲线 & scipy.interpolate.interp1d below the interpolation range error 这篇CSDN文章中发现,原因是我在
EER = optimize.brentq(lambda x : 1. - x - interpolate.interp1d(list_FAR, list_TPR)(x), 0., 1.)
插值的点只能在现有点之内,而传给interp1d()函数的list_FAR(x轴)不一定会在0和1有值,即最小值不一定是0,最大值不一定是1,导致函数没法在最小值到0之间插值,最大值到1之间插值。
例如提供的参考点x轴为0.2~0.8,那么就无法在0.2和0.8之外的点插值。
解决方法:人为添加x=0和x=1的参考点,注意添加的时候要看(x,y)连成的曲线趋势是什么样的,如果为单调递增,那么要添加(0,0)和(1,1)的点;如果为单调递减,添加(0,1)和(1,0)的点。