跳转到主要内容

概率分布和概率监督回归的统一框架

项目描述

:rocket: 版本2.6.0现已发布! 在此处阅读发布说明。.

skpro 是一个用于Python中监督概率预测的库。它提供了与 scikit-learn-like 和 scikit-base 兼容的接口,用于

  • 表格 监督回归器进行概率预测 - 区间、分位数和分布预测
  • 表格 概率时间到事件和生存预测 - 实例-个体生存分布
  • 评估概率预测的指标,例如,弹珠损失、经验覆盖度、CRPS、生存损失
  • 缩减,将 scikit-learn 回归器转换为概率 skpro 回归器,例如自助法或一致性方法
  • 构建 管道和复合模型,包括通过概率性能指标进行调优
  • 具有值域为 pandas.DataFrame 和类似 pandas 接口的符号概率分布
概述
开源 BSD 3-clause
教程 Binder !youtube
社区 !discord !slack
CI/CD github-actions !codecov readthedocs platform
代码 !pypi !conda !python-versions !black
下载 PyPI - Downloads PyPI - Downloads Downloads
引用 DOI

:books: 文档

文档
:star: 教程 新接触 skpro?这里有你需要知道的一切!
:clipboard: Binder 笔记本 在浏览器中玩耍的示例笔记本。
:woman_technologist: 用户指南 如何使用 skpro 及其功能。
:scissors: 扩展模板 如何使用 skpro 的 API 构建自己的估计器。
:control_knobs: API 参考 skpro API 的详细参考。
:hammer_and_wrench: 变更日志 变更和版本历史。
:deciduous_tree: 路线图 skpro 的软件和社区开发计划。
:pencil: 相关软件 相关软件列表。

:speech_balloon: 哪里可以提问

问题和反馈非常受欢迎!我们坚信公开分享帮助的价值,因为它可以让更广泛的受众从中受益。

skprosktime 社区维护,我们使用相同的社交渠道。

类型 平台
:bug: 错误报告 GitHub 问题跟踪器
:sparkles: 功能请求和想法 GitHub 问题跟踪器
:woman_technologist: 使用问题 GitHub 讨论区 · Stack Overflow
:speech_balloon: 一般讨论 GitHub 讨论区
:factory: 贡献与发展 dev-chat 频道 · Discord
:globe_with_meridians: 社区协作会议 Discord - 每周五 13 UTC,dev/meet-ups 频道

:dizzy: 功能

我们的目标是增强 AI 模型生态系统的互操作性和可用性

  • skproscikit-learnsktime 兼容,例如,可以使用添加了概率模式的 skpro 概率回归器构建 sktime 概率预测器,该模式由 skpro 添加到 sklearn 回归器中

  • skpro 为第一方实现提供小型包管理框架,并为接口流行的第二方和第三方组件,如 cyclic-boostingMAPIEngboost 软件包提供接口。

skpro 精选以下类型的组件库

模块 状态 链接
概率表格回归 成熟 教程 · API 参考 · 扩展模板
事件时间(生存)预测 成熟 教程 · API 参考 · 扩展模板
性能指标 成熟 API 参考
概率分布 成熟 教程 · API 参考文档 · 扩展模板

:hourglass_flowing_sand: 安装 skpro

要安装 skpro,请使用 pip

pip install skpro

或者,使用最大依赖项:

pip install skpro[all_extras]

发行版作为源代码包和二进制轮子提供。您可以在这里查看所有可用的轮子。

:zap: 快速入门

制作概率预测

from sklearn.datasets import load_diabetes
from sklearn.ensemble import RandomForestRegressor
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split

from skpro.regression.residual import ResidualDouble

# step 1: data specification
X, y = load_diabetes(return_X_y=True, as_frame=True)
X_train, X_new, y_train, _ = train_test_split(X, y)

# step 2: specifying the regressor - any compatible regressor is valid!
# example - "squaring residuals" regressor
# random forest for mean prediction
# linear regression for variance prediction
reg_mean = RandomForestRegressor()
reg_resid = LinearRegression()
reg_proba = ResidualDouble(reg_mean, reg_resid)

# step 3: fitting the model to training data
reg_proba.fit(X_train, y_train)

# step 4: predicting labels on new data

# probabilistic prediction modes - pick any or multiple

# full distribution prediction
y_pred_proba = reg_proba.predict_proba(X_new)

# interval prediction
y_pred_interval = reg_proba.predict_interval(X_new, coverage=0.9)

# quantile prediction
y_pred_quantiles = reg_proba.predict_quantiles(X_new, alpha=[0.05, 0.5, 0.95])

# variance prediction
y_pred_var = reg_proba.predict_var(X_new)

# mean prediction is same as "classical" sklearn predict, also available
y_pred_mean = reg_proba.predict(X_new)

评估预测

# step 5: specifying evaluation metric
from skpro.metrics import CRPS

metric = CRPS()  # continuous rank probability score - any skpro metric works!

# step 6: evaluat metric, compare predictions to actuals
metric(y_test, y_pred_proba)
>>> 32.19

:wave: 如何参与

有许多方式可以参与到 skpro 的开发中,它是由 sktime 社区开发的。我们遵循 all-contributors 规范:欢迎所有形式的贡献——而不仅仅是代码。

文档
:gift_heart: 贡献 如何为 skpro 贡献。
:school_satchel: 导师项目 如果您是开源新手,请申请我们的导师项目!
:date: 会议 加入我们的讨论、教程、研讨会和冲刺活动!
:woman_mechanic: 开发者指南 如何进一步开发 skpro 代码库。
:medal_sports: 贡献者 所有贡献者的列表。
:raising_hand: 角色 我们核心社区角色的概述。
:money_with_wings: 捐赠 为 sktime 和 skpro 的维护和开发提供资金。
:classical_building: 治理 sktime 社区中决策的制定方式和人员。

:wave: 引用

在科学出版物中引用 skpro,请参阅 引用

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。

源代码分发

skpro-2.6.0.tar.gz (262.0 kB 查看哈希值)

上传时间: 源代码

构建分发

skpro-2.6.0-py3-none-any.whl (381.8 kB 查看哈希值)

上传时间: Python 3

支持