python中的正确评分规则

properscoring的Python项目详细描述


https://travis-ci.org/TheClimateCorporation/properscoring.svg?branch=master

Proper scoring rules用于评估python中的概率预测。 “严格正确”的评价方法不能人为改进 通过套期保值,使他们能够公平地获得 概率预测。特别是,这些规则通常用于 评估天气预报。

properscoring在python 2和3上都运行。它需要numpy(1.8或 稍后)和scipy(任何最新版本都可以)。numba是可选的, 但受到高度鼓励:它能显著加速(例如,20倍的速度) 对于crps_ensemblethreshold_brier_score

要安装,请使用pip:pip install properscoring

示例:计算crp的五种方法

这个图书馆的重点是 Continuous Ranked Probability Score(crps)和Brier Score。我们喜欢 这些分数是因为它们都是可解释的(例如,CRP是 平均绝对误差的推广 概率分布的样本数。

我们将说明如何根据 高斯随机变量。首先,导入properscoring:

import numpy as np
import properscoring as ps
from scipy.stats import norm

使用crps_gaussian精确计算(这是最快的方法):

>>>> ps.crps_gaussian(0, mu=0, sig=1)
0.23369497725510913

数值积分与crps_quadrature

>>> ps.crps_quadrature(0, norm)
array(0.23369497725510724)

从一个有crps_ensemble

的有限样本
>>> ensemble = np.random.RandomState(0).randn(1000)
>>> ps.crps_ensemble(0, ensemble)
0.2297109370729622

按PDF值加权,带crps_ensemble

>>> x = np.linspace(-5, 5, num=1000)
>>> ps.crps_ensemble(0, x, weights=norm.pdf(x))
0.23370047937569616

基于crps的threshold decompositionthreshold_brier_score

>>> threshold_scores = ps.threshold_brier_score(0, ensemble, threshold=x)
>>> (x[1] - x[0]) * threshold_scores.sum(axis=-1)
0.22973090090090081

在本例中,我们只对一个观测/预测对进行了评分。但是 为了可靠地评估预测模型,您需要在 许多观察。幸运的是,所有的得分规则 接受并返回多维数组形式的观测值:

>>> ps.crps_gaussian([-2, -1, 0, 1, 2], mu=0, sig=1)
array([ 1.45279182,  0.60244136,  0.23369498,  0.60244136,  1.45279182])

一旦你计算出平均分,通常有助于将它们标准化 相对于计算所谓“技能得分”的基线预测, 定义为0表示与基线相比没有改进,1 表示完美的预测。例如,假设我们的基线 预测总是预测0:

>>> obs = [-2, -1, 0, 1, 2]
>>> baseline_score = ps.crps_ensemble(obs, [0, 0, 0, 0, 0]).mean()
>>> forecast_score = ps.crps_gaussian(obs, mu=0, sig=1).mean()
>>> skill = (baseline_score - forecast_score) / baseline_score
>>> skill
0.27597311068630859

一个标准正态分布在预测这五个方面要好28% 观察。

API

properscoring包含优化和广泛测试的例程 评分概率预测。这些功能目前分为两部分 类别:

  • 连续排名概率得分(CRP):
    • 对于集合预测:crps_ensemble
    • 对于高斯分布:crps_gaussian
    • 对于任意累积分布函数:crps_quadrature
  • Brier分数:
    • 对于二元概率预测:brier_score
    • 对于集合预测的阈值超出:threshold_brier_score

所有函数对由浮点表示的缺失值都是健壮的 点值NaN

历史记录

这个图书馆是由气候公司的研究人员编写的。这个 原创作者包括Leon Barrett、Stephan Hoyer、Alex Kleeman和 德鲁·奥凯恩。

许可证

版权所有2015 The Climate Corporation

根据apache许可证2.0版(以下简称“许可证”)授权; 除非符合许可证,否则您不能使用此文件。 您可以在

http://www.apache.org/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则软件 根据许可证分发是按“原样”分发的, 无任何明示或默示的保证或条件。 有关管理权限的特定语言和 许可下的限制。

贡献

外部贡献(错误修复或与正确评分相关的新功能 规则)非常欢迎!请打开一个github问题来讨论 计划。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何用java表示这个数学函数的算法   Java/Stream帮助:仅使用streams将嵌套的映射列表转换为映射   使用Selenium连接到数据库时发生java未知主机异常   java如何了解jvm内存使用:“堆内存”和“堆外内存”   java Oracle BI报告导入模板   java如何使用Spring将xml转换为bean?   java线程。join()以保证执行顺序   java从THINGSPEAK到ANDROID应用程序获取JSON数据   使用Java的stanford库中的异常   java正确使用来自其他类文件的方法   如果集合中的元素类型为接口类型,如何填充集合?(爪哇)   记录java。util。记录器创建的文件超过了应有的数量   类Java对象uniq值   尝试调用无法应用于()的方法时出现java错误