跳转到主要内容

基于人工智能的s2s预测的python包

项目描述

s2spy:利用人工智能增强(次)季节预测

Logo

github repo badge github license badge fair-software badge DOI Documentation Status build sonarcloud workflow scc badge

一个高级Python包,集成了专家知识和人工智能,以增强(次)季节预测。

为什么选择s2spy?

使用机器学习技术生成可靠的次季节到季节(S2S)预报仍然是一个挑战。目前,这些数据驱动的S2S预报通常由于以下原因而缺乏信任:

  • 不透明的数据处理和难以复制的科学成果
  • 与基于机器学习的可预测性相关的技术陷阱(例如,过度拟合)
  • 缺乏充分解释的黑盒方法

为了应对这些挑战,我们构建了s2spy,这是一个开源的高级Python包。它提供了一个人工智能和专家知识之间的接口,以增强S2S过程的可预测性和物理理解。通过实施最佳数据处理和并行计算包,它可以在不同的气候大数据平台上高效运行。关键组件将是可解释的人工智能和因果发现,这将支持理论、假设生成和数据驱动的假设检验之间的经典科学互动,从而实现从数据中挖掘知识。

开发这个工具将是社区共同努力的结果。它通过提供以下内容帮助我们实现可信的数据驱动预报:

  • 透明且可复制的分析
  • 模型验证的最佳实践
  • 理解可预测性的来源

安装

workflow pypi badge supported python versions

要安装s2spy的最新版本,请执行以下操作:

python3 -m pip install s2spy

要从GitHub存储库安装正在开发中的版本,请执行以下操作:

python3 -m pip install git+https://github.com/AI4S2S/s2spy.git

配置用于开发和测试的包

此处使用的测试框架是pytest。在运行测试之前,我们获取源代码的本地副本,并通过以下命令安装s2spy

git clone https://github.com/AI4S2S/s2spy.git
cd s2spy
python3 -m pip install -e .

然后,运行测试

python3 -m pytest

入门指南

s2spy为基于机器学习的S2S预测提供端到端解决方案。

workflow

日期时间操作 & 数据处理

在一个典型的基于机器学习的S2S项目中,第一步始终是数据处理。我们的基于日历的包lilio用于时间操作。例如,一个用户正在寻找季节时间尺度(约180天)的冬季气候预测因子。首先,使用daily_calendar创建一个Calendar对象

>>> calendar = lilio.daily_calendar(anchor="11-30", length='180d')
>>> calendar = calendar.map_years(2020, 2021)
>>> calendar.show()
i_interval                         -1                         1
anchor_year
2021         [2021-06-03, 2021-11-30)  [2021-11-30, 2022-05-29)
2020         [2020-06-03, 2020-11-30)  [2020-11-30, 2021-05-29)

现在,用户可以加载数据input_data(例如,pandas DataFrame)并将其重新采样到日历中配置的所需时间尺度

>>> calendar = calendar.map_to_data(input_data)
>>> bins = lilio.resample(calendar, input_data)
>>> bins
  anchor_year  i_interval                  interval  mean_data  target
0        2020          -1  [2020-06-03, 2020-11-30)      275.5    True
1        2020           1  [2020-11-30, 2021-05-29)       95.5   False
2        2021          -1  [2021-06-03, 2021-11-30)      640.5    True
3        2021           1  [2021-11-30, 2022-05-29)      460.5   False

根据数据准备情况,我们可以选择不同的日历类型。有关更多信息,请参阅Lilio的文档

交叉验证

Lilio还可以生成训练/测试分割并执行交叉验证。为此,从sklearn.model_selection调用分割器,例如ShuffleSplit,并将其用于分割重新采样后的数据

from sklearn.model_selection import ShuffleSplit
splitter = ShuffleSplit(n_splits=3)
lilio.traintest.split_groups(splitter, bins)

支持所有来自scikit-learn的分割器类,列表可在此处找到。用户应遵循有关如何使用不同分割器类的scikit-learn文档。

降维

使用s2spy,我们可以在数据上执行降维。例如,要执行响应引导降维(RGDR),我们配置RGDR运算符并将其拟合到前趋场。然后,可以使用这个簇将数据转换到降维簇中

rgdr = RGDR(eps_km=600, alpha=0.05, min_area_km2=3000**2)
rgdr.fit(precursor_field, target_timeseries)
clustered_data = rgdr.transform(precursor_field)
_ = rgdr.plot_clusters(precursor_field, target_timeseries, lag=1)

clusters

(有关有关precursor_fieldtarget_timeseries的更多信息,请参阅此笔记本中的完整示例。)

目前,s2spy支持来自scikit-learn降维方法

教程

s2spy 支持在子季节到季节预测研究中的机器学习管道中常见的操作。支持的方法和功能教程列在 notebooks 中。要查看这些笔记本,用户需要安装 Jupyter lab。每个方法的更多详细信息可以在本 API参考文档 中找到。

高级用法

您可以通过将 s2spylilio 集成到您数据驱动的S2S预测工作流程中来实现更多功能!我们有一个神奇的 cookbook,其中包含复杂机器学习预测用例的食谱。这些示例将向您展示 s2spylilio 如何简化您的工作流程。

文档

Documentation Status

有关使用 s2spy 包的详细信息,请访问 Readthedocs 上的 文档页面

贡献

如果您想为 s2spy 的开发做出贡献,请查看 贡献指南

如何引用我们

RSD DOI

如果您在研究中使用了此包,请使用 Zenodo DOI 引用此包。

致谢

此包由荷兰电子科学中心和阿姆斯特丹自由大学开发。开发得到了荷兰电子科学中心在项目编号 NLESC.OEC.2021.005 下的支持。

此包是用 CookiecutterNLeSC/python-template 创建的。

项目详情


下载文件

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

源代码分发

s2spy-0.4.0.tar.gz (5.2 MB 查看哈希)

上传时间

构建分发

s2spy-0.4.0-py3-none-any.whl (24.9 kB 查看哈希)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面