Python 理解numpy百分位数计算

Python 理解numpy百分位数计算,python,numpy,statistics,ranking,percentile,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百分位。输出是如何计算的?谢

我通过许多例子了解考试分数的百分位数(例如,你的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百分位。输出是如何计算的?谢谢

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

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
文件还包括:

numpy.percentile(a,q,axis=None,out=None,overwrite\u input=False,interpolation='linear',keepdims=False)

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


非常感谢。这很有道理。我总是在大数据集的环境中做百分位数,但这是非常清楚和合理的。