了解 numpy 百分位数计算
Understanding numpy percentile computation
我通过许多示例了解考试分数的百分位数(例如,您的 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
文档也 specifies 'linear'
as the default:
numpy.percentile(a, q, axis=None, out=None, overwrite_input=False, interpolation='linear', keepdims=False)
'linear': i + (j - i) * fraction
, where fraction
is the fractional part of the index surrounded by i
and j
.
我通过许多示例了解考试分数的百分位数(例如,您的 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
文档也 specifies 'linear'
as the default:
numpy.percentile(a, q, axis=None, out=None, overwrite_input=False, interpolation='linear', keepdims=False)
'linear':
i + (j - i) * fraction
, wherefraction
is the fractional part of the index surrounded byi
andj
.