了解numpy百分位数计算

时间:2019-01-14 17:53:05

标签: python numpy statistics ranking percentile

我通过许多示例了解考试分数中的百分位数(例如,您的SAT分数落在第99个百分位数中),但是我不确定我在以下情况中以及在发生什么情况时理解百分位数。想象一个模型输出概率(有时候,我们有很多新数据和输出的概率,而有时候则没有)。想象一下,我想计算输出概率的99%。这是今天的概率:

a = np.array([0,0.2,0.4,0.7,1])
p = np.percentile(a,99)
print(p)

0.988

在这种情况下,只有5个输出概率,我不知道如何计算第99个百分位数。如何计算输出?谢谢!

1 个答案:

答案 0 :(得分:3)

应用线性插值。您可以自己检查一致性:

a = np.array([0,0.2,0.4,0.7,1])

np.sort(a)  # array([ 0. ,  0.2,  0.4,  0.7,  1. ])

np.percentile(a, 75)   # 0.70
np.percentile(a, 100)  # 1.0
np.percentile(a, 99)   # 0.988

0.70 + (1.0 - 0.70) * (99 - 75) / (100 - 75)  # 0.988

文档也specifies 'linear' as the default

  

numpy.percentile(a, q, axis=None, out=None, overwrite_input=False, interpolation='linear', keepdims=False)

     

“线性” i + (j - i) * fraction,其中fraction是由ij包围的索引的小数部分。