基于人工智能的s2s预测的python包
项目描述
s2spy:利用人工智能增强(次)季节预测
一个高级Python包,集成了专家知识和人工智能,以增强(次)季节预测。
为什么选择s2spy?
使用机器学习技术生成可靠的次季节到季节(S2S)预报仍然是一个挑战。目前,这些数据驱动的S2S预报通常由于以下原因而缺乏信任:
- 不透明的数据处理和难以复制的科学成果
- 与基于机器学习的可预测性相关的技术陷阱(例如,过度拟合)
- 缺乏充分解释的黑盒方法
为了应对这些挑战,我们构建了s2spy
,这是一个开源的高级Python包。它提供了一个人工智能和专家知识之间的接口,以增强S2S过程的可预测性和物理理解。通过实施最佳数据处理和并行计算包,它可以在不同的气候大数据平台上高效运行。关键组件将是可解释的人工智能和因果发现,这将支持理论、假设生成和数据驱动的假设检验之间的经典科学互动,从而实现从数据中挖掘知识。
开发这个工具将是社区共同努力的结果。它通过提供以下内容帮助我们实现可信的数据驱动预报:
- 透明且可复制的分析
- 模型验证的最佳实践
- 理解可预测性的来源
安装
要安装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预测提供端到端解决方案。
日期时间操作 & 数据处理
在一个典型的基于机器学习的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)
(有关有关precursor_field
和target_timeseries
的更多信息,请参阅此笔记本中的完整示例。)
目前,s2spy
支持来自scikit-learn
的降维方法。
教程
s2spy
支持在子季节到季节预测研究中的机器学习管道中常见的操作。支持的方法和功能教程列在 notebooks 中。要查看这些笔记本,用户需要安装 Jupyter lab
。每个方法的更多详细信息可以在本 API参考文档 中找到。
高级用法
您可以通过将 s2spy
和 lilio
集成到您数据驱动的S2S预测工作流程中来实现更多功能!我们有一个神奇的 cookbook,其中包含复杂机器学习预测用例的食谱。这些示例将向您展示 s2spy
和 lilio
如何简化您的工作流程。
文档
有关使用 s2spy
包的详细信息,请访问 Readthedocs 上的 文档页面。
贡献
如果您想为 s2spy 的开发做出贡献,请查看 贡献指南。
如何引用我们
如果您在研究中使用了此包,请使用 Zenodo DOI 引用此包。
致谢
此包由荷兰电子科学中心和阿姆斯特丹自由大学开发。开发得到了荷兰电子科学中心在项目编号 NLESC.OEC.2021.005 下的支持。
此包是用 Cookiecutter 和 NLeSC/python-template 创建的。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
构建分发
s2spy-0.4.0.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4d43b05a26322c10dc63864d6d8d6bdb3ba84899813e4cc6ff9e6591d5abd552 |
|
MD5 | deab2f15d73990c218992f4aeef00659 |
|
BLAKE2b-256 | 65a7ceea72d3f8b2f11e15dc4c2d23fbd89fba1bc5af514f550ccb320ce952ef |
s2spy-0.4.0-py3-none-any.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a71dfdeb75afcf948b10e46166566f829a755be914efcb60ef5caa360081ddcc |
|
MD5 | 316c94b3e944e3e43d208bd871fe8070 |
|
BLAKE2b-256 | d96c52aaf72fdc0d7c7e077c8033a9b013e85a9eb4bfa29b317c6aa9aa0150ce |