properscoring
Proper scoring rules in Python
What it is and what it does
Properscoring is a Python library for computing strictly proper scoring rules—evaluation metrics that cannot be artificially improved through hedging—making them fair and reliable for assessing the accuracy of probabilistic forecasts. It implements Continuous Ranked Probability Score (CRPS) and Brier Score in multiple forms: CRPS can be calculated exactly for Gaussian distributions, via numerical integration for arbitrary distributions, from finite ensemble samples, or weighted by probability density values; Brier Score is provided for binary forecasts and threshold exceedances. All functions handle multi-dimensional arrays and missing values (NaN).
The library was created by researchers at The Climate Corporation and is particularly useful in weather forecasting and other domains where probabilistic predictions need rigorous evaluation. It requires external dependencies and optional Numba support for performance improvements on ensemble-based calculations. However, the package is no longer actively maintained—the last release and commit occurred years ago—so compatibility with recent Python versions may be limited.
Use it for:
- Evaluate weather forecast model accuracy by computing CRPS scores across many observations and comparing to baseline forecasts.
- Calculate skill scores to measure forecast improvement relative to a baseline, normalized to a 0–1 scale.
- Score ensemble forecasts from climate or weather models using finite samples without requiring the underlying distribution.
- Compute Brier scores for binary probabilistic predictions or threshold exceedances.
- Batch-process large arrays of forecast–observation pairs to generate aggregate performance metrics.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Properscoring provides strictly proper scoring rules for evaluating probabilistic forecasts, including Continuous Ranked Probability Score (CRPS) and Brier Score methods that work with ensemble forecasts, Gaussian distributions, and arbitrary cumulative distribution functions.
Yes, if you need strictly proper scoring rules for probabilistic forecast evaluation and can tolerate an abandoned package. The core algorithms are scientifically sound and the library has no known vulnerabilities. However, verify compatibility with your Python version before relying on it in production; consider seeking an actively maintained alternative if you need ongoing support or updates.
Install
properscoring on PyPI
pip
pip install properscoringuv
uv add properscoringpoetry
poetry add properscoringInstalling properscoring
Before you install
Installation is straightforward with no runtime dependencies, though the package is abandoned—last release was 2015-11-12 and last commit 2023-03-09. It targets Python 2 and early Python 3 versions; compatibility with modern Python is unverified.
License in practice
Licensed under Apache License 2.0 (permissive), allowing commercial and private use with minimal restrictions, though you must include a copy of the license and state any modifications.
Quickstart
pip install properscoring
import properscoring as ps
# Calculate CRPS for a Gaussian forecast
ps.crps_gaussian(0, mu=0, sig=1)
Requires NumPy (1.8 or later) and SciPy; Numba is optional but highly encouraged for performance on crps_ensemble and threshold_brier_score.
Verify before relying
- Whether the package works reliably on Python 3.6 and later versions despite classifiers only listing up to 3.5.
- Current performance characteristics and whether Numba speedups (e.g., 20x) still apply with modern versions.
- Whether the package's core algorithms remain scientifically current for modern forecast evaluation workflows.
Package facts
| License | Apache (permissive) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | none |
| Maintenance | abandoned — 3,928 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 167,190/month — #10,478 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: properscoring-0.1-py2.py3-none-any.whl
Tags
More Scientific/Engineering packages
NumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
pandaspandas provides fast, flexible data structures…
permissive · top 100 on PyPI
scipyscipy provides numerical algorithms for…
permissive · top 100 on PyPI
scikit-learnscikit-learn provides a comprehensive Python…
permissive · top 1,000 on PyPI
dilldill extends Python's pickle module to…
permissive · top 1,000 on PyPI
multiprocessMultiprocess is an enhanced fork of Python's…
permissive · top 1,000 on PyPI
hierarchicalforecastReconciles hierarchical time-series forecasts…
permissive · top 15,000 on PyPI
ngboostNGBoost implements Natural Gradient Boosting…
permissive · top 15,000 on PyPI
skope-rulesSkope-rules learns interpretable logical rules…
permissive · top 15,000 on PyPI
AI-WQ-packageSupports participation in the ECMWF AI Weather…
permissive · top 15,000 on PyPI
tensorflow-probabilityTensorFlow Probability provides probabilistic…
permissive · top 5,000 on PyPI
problogProbLog is a probabilistic logic programming…
permissive · top 15,000 on PyPI
pyjptpyjpt learns and reasons about joint…
unclear · top 15,000 on PyPI
zxcvbnEstimates password strength by analyzing…
permissive · top 5,000 on PyPI
rougeComputes ROUGE scores (Recall-Oriented…
unclear · top 5,000 on PyPI
cvssParses and scores CVSS v2, v3, and v4…
copyleft · top 5,000 on PyPI