和鲸101计划:Python 气象海洋数据分析 Workshop 回顾
导语:一个科学家最大的价值不是个人取得了多少成绩,而是他培养了多少科学家,他的学生又培养出多少科学家。如果科学精神能从我们这里一代代传承,并且不断推动社会进步,这就是我们此生最大的价值。
——源自《中国气象报》
目录
- 三方力量,聚焦数据共赋能
- 多方汇聚,研究思路共创新
- 第一期:如何精确计算抬升凝结高度
- 第二期:认识海洋:从了解海洋数据开始
- 第三期:基于机器学习的大气能见度预报
- 第四期:中尺度 WRF 入门:从运行到后处理
- 数据驱动研究,与开拓者同行
半个世纪以来 ,气象研究始终面临着严峻的挑战——全球变暖、极端天气,一系列气候变化不断对气象监测和预报的能力提出更高的要求。与此同时,大数据、云计算、人工智能等新一代信息技术的出现又为研究发展带来了新的机遇, 物理模拟与数据驱动方式融合应用,为气象研究和其他领域的发展带来了无限可能性。
在和鲸社区,"AI+气象"就是广受用户关注的内容之一,数千名从事数据驱动研究的气象人围绕前沿的科学进展交流、讨论、分享优质的开源项目案例和数据集。除了来自各大高校的专家学者、来自国省市县气象局的工程师和预报员、来自应用气象相关领域的数据分析师外,还有许多新入门的气象初学者。
科学研究的创新和发展不仅需要新技术新方法,更需要知识的传承和人才的接力,基于此,和鲸联合了数名气象领域的专家学者,以帮助处于职业发展初期的气象人进行更多理论与实操的结合性学习为初衷,举办了“Python 气象海洋数据分析 II Workshop”,针对气象真实研究场景,共同分享探讨全流程研究思路。
三方力量,聚焦数据共赋能
为保证内容的专业性和前沿性,和鲸邀请了气象领域的专家学者和高级研究员作为 Workshop 的导师,编制课件、全程辅导。在本次 Python 气象海洋数据分析 Workshop 中,由来自中国海洋大学的刘敬武老师和李明悝老师,以及来自航天新气象科技有限公司的算法工程师冬青老师担任导师,从学术深度剖析到预报业务实战,帮助学员更全面地掌握在面对气象实际应用问题时如何进行思考、优化研究方案的工作流。
和鲸科技旗下云端大数据挖掘分析平台 ModelWhale 为 Workshop 提供研究和项目管理工具支持。ModelWhale 为研究者及组织的数据驱动型教科研工作持续赋能,在气象领域广泛应用。平台功能深度融合“气象+AI”,内置气象专用工具包,即开即用。云端环境支持老师分享专属镜像和已调试完毕的项目,学员可一键 fork 接入数据,并直接基于该镜像进行学习研究,快速跑通出结果。教、学、练、评全程在线自动流转,为建模分析类重实操的研究分享提供了更先进的生产工具。
和鲸社区专项运营团队担任双边桥梁,通过分析气象人在各个学研阶段的聚焦性需求,协助导师设计课题,全程跟进,确保教学效果最大化。Workshop 内容兼顾学术科研与行业实践,适合不同背景气象人进行探索学习。学员群内专人在线实时答疑,针对常见问题及时进行反馈并优化教案,不定时分享数据与气象科研实用资源,保障学习过程高效流畅。
多方汇聚,研究思路共创新
本次气象 Workshop 吸引了近500名来自全国各地的气象数据分析研究者和爱好者报名参与,横跨高校、国省市县气象局及应用气象相关领域企业,共同探索气象数据无限魅力。来自气象局的工程师和预报员是本次 Workshop 的主要参与者,占比超过半数之多;高校成员以中国海洋大学、南京工程信息大学的硕博研究生为主,也有来自清华大学、华东师范大学等相关专业的同学共同探讨学习;企业成员多为来自风电、通信、生物等应用气象相关领域的数据分析师。
就 Workshop 内容而言,循序渐进的难度梯度设计横向拓阔了内容适用性,保障非气象专业的学习者在进行简单的气象知识自学后也能快速上手;以业务实操为导向的建模分析和模式运行实例纵向加深内容深度,激发学习者对气象数据分析更深入的理解与思考。梯度型的内容设计使得每位参与者都可以在对应阶段获取到自己需要学习、了解的理论及实操知识。
第一期:如何精确计算抬升凝结高度
抬升凝结高度是干绝热过程转变为湿绝热过程的临界高度,传统教学通过公式推导抬升凝结高度的近似表达式,虽然物理概念清晰但教学过程枯燥,也不能精确地计算,教学内容与科研/业务工作产生脱节。
刘老师从大气科学重要的物理概念出发,借助 Python 帮助大家更深入地理解干绝热过程,了解不同计算方案的优点和缺点,为以后的科研和业务工作夯实基础。
课程教案链接:
https://www.heywhale.com/u/d86477
通过先对项目案例探究学习,再进行自我实战,以任务为导向的机制不仅能帮助学员自我检验掌握程度,也更容易上手并延展自己的思路。在第一期提交的作业中,可以惊喜地发现不同背景的学员有着不同思考和解决问题的方法。
比如来自中国海洋大学海洋科学专业的“OUC_Jason”,有比较好专业基础的他在作业过程中会采用校内学过的方法进行求值,真正做到理论与实践相结合。报告会上,刘老师给予了高度肯定,同时也对其作业中将比湿qv设为常数进行矫正。细小的变量同样会导致计算误差,这也是我们在日常研究过程中需要注意的地方。
附. OUC_Jason作业链接:
https://www.heywhale.com/u/db712e
而来自清华大学土木工程专业的“KSCN”,由于本身不是气象专业,在计算露点温度时觉得原本的公式比较难以理解,于是另外搜寻方法——先用温度和相对湿度计算出一个γ值,再用γ代入公式得出露点温度。巧合的是,很多来自其他专业的同学也同样选择了这个方法。
附. KSCN作业链接:
https://www.heywhale.com/u/3dfe90
关于跨专业参加 Workshop,KSCN 解释道,土木工程专业本身也会涉及到对气象模式的学习。“气象模式在我们平时的学习过程中也有运用,比如风机的结构设计就需要用 WRF 模式计算和预测风资源。但是我们的主要课程还是在土木,本身没有太多气象知识的储备,因此 Workshop 的主题和难度设计对我来说就很适合。”
像KSCN这样来自气象交叉领域相关专业的学生不在少数,比如还有来自慕尼黑大学流行病学专业的“Markus”,来自中山大学生物科学专业的“圆头鲸”等等,他们都通过 Workshop 跨领域探索气象数据分析框架,以气象为基础进行延伸,强化了对 python 的实战应用。
第二期:认识海洋:从了解海洋数据开始
现如今,研究者们可以在互联网上免费获得大量由科研机构发布的海洋数据资料,且有很多分析工具可供使用进行数据处理,因而从海洋数据出发认识海洋相对会更便捷。同时,将海洋数据进行可视化展示能对海洋有更加直观的理解。
李老师从海洋与人类的关系、海洋观测、海洋数据等方面出发,对海洋数据的特征与用途等进行了简单的介绍,再通过 Python 代码对水深及温盐数据进行读取、处理和可视化,并通过不同的作图方案,展示了处理海洋数据的基本流程。
附. 课程教案链接:
https://www.heywhale.com/u/d8b8a1
第二期作业得到最高分的是来自华东师范大学气象学专业的“lqy”。大家对“lqy”可能都很熟悉,他是和鲸社区气象专区的创作者。一年多的时间,他用104个项目和54个数据集诠释了挂在社区头像旁边的那句简短的签名——只争朝夕。
“和鲸社区是我自学 Python 的重要平台,可以快速检索感兴趣的项目,掌握实用的编程技能;参加训练营和 Workshop 等活动,锻炼了数据处理与分析能力,对我的科研和竞赛都打下了很好的基础,希望大家都能很好利用起来。”
谈及在和鲸社区分享项目,从受益到授益,“lqy”表示这是一个双向的过程。
“从第一届气象 Workshop 开始,我对自己的项目进行整理分享,让每个阶段的成果有了沉淀,也是学习过程的见证。此外,在社区交流和比赛活动中,有幸认识了很多专业相近的朋友,他们是我学习的榜样,也成为了我继续向前的动力。”
在此次作业中,“lqy”熟练运用 xarray 模块进行数据处理,很大程度简化了代码复杂性,例如:利用.sel函数进行经度、纬度、时间的切片处理、利用 cross_section 函数(来自 metpy 模块)截取数据。相较于其他学员,利用组图形式、共享坐标轴、选择合适的色阶等,都是他在社区创作过程中养成的好习惯。
附. lqy作业链接:
https://www.heywhale.com/u/d91416
图源:lqy作业
在报告会上,李明悝老师对“lqy”能熟练运用 xarray 模块让自己的数据处理更为高效给予了肯定,也结合着自身的经验给到大家一些建议。像 xarray 这样高集成度的软件包,固然会让研究更加便捷,但使用起来可能会显得很复杂,所以大家还是要根据自己的习惯和使用方法找到适合自己的工具。正如李老师在教案中说的一样:基础的软件包并不意味着其功能不强大,重要的是使用者的想法。
第三期:基于机器学习的大气能见度预报
大气能见度是反映大气透明度的一个指标,一般定义为具有正常视力的人在当时的天气条件下还能够看清楚目标轮廓的最大地面水平距离。大雾是一种高影响天气,会导致能见度降低,对公路、航运、海运交通产生较大的影响。
雾害的产生主要与天气气候条件密切相关,不同的雾害其影响领域和影响程度也各有不同,因此必须针对不同的雾害,作出科学的监测预报。冬青老师使用机器学习的方法教授大家如何对大气能见度进行预报,相较于传统的统计方法,可以有效提高能见度预测的准确率。
附. 课程教案链接:
https://www.heywhale.com/u/0f560a
来自全国各地省市县气象局的工程师和预报员占据了 Workshop 的半壁江山,第三期作业与大家进行分享的正是来自宜昌市气象局的工程师“longtsing”。“longtsing”也是社区里的活动活跃户,参加了很多训练营和 Workshop,在这之前,他还热心地撰写了帮助贴指导大家如何提交作业。
在报告会上,他主要针对自己在作业过程中产生的问题提出了疑问,比如在进行数据清洗时,尽管采用了删除、众数插补、前后插补、机器学习模型插补等众多方法,但是都不如最后缺失的效果好。
冬青老师对此解释说,由于本次提供的训练数据只有2w多个,数据量比较小,因而不太适合采用复杂模型,不然可能会造成过拟合,而关于插补数据其实也与选择的模型有关。老师建议大家当数据量比较小时,特别是不满10w的时候,要尽可能去多试几个模型对比效果。
除了“longtsing”之外,一份有特色的满分作业吸引了大家的注意,作者是来自北京科码先锋的戴玮。他没有用传统的模型,而是利用 KNeighborsRegressor 算法进行“插值”,出乎意料地得到了最好的效果,这源于他对数据集和数据划分的深度观察理解。还有来自上海气象局的“小不点”,在用随机森林填补完缺失值后,用 ExtraTreesRegressor 模型同样收获了很好的效果。通往正确答案的路不是只有一条,关键看走路的人如何思考与创新。
第四期:中尺度 WRF 入门:从运行到后处理
WRF 模式是由美国国家大气研究中心、美国环境预测中心等部门联合开发研究的新一代中尺度数值天气预报系统,目前主要用于天气研究、业务预报、大气环境等领域。
随着 WRF 模式的快速发展,一方面,使用该模式进行分辨率为 1km 甚至几百米的模拟应用越来越多,另一方面,该模式不断扩展模式模块,其应用范围、实际业务及科研应用也越来越多。冬青老师从WRF 的安装、运行到后处理,带领大家对 WRF 模式进行入门学习。
附. 课程教案链接:
https://www.heywhale.com/u/f4fd8d
冬青老师先对 WRF 模式进行了简单介绍,从驱动 WRF 的数据、WRF 预处理系统(WPS)以及主程序 WRF 三个部分开始讲起,帮助大家在动手运行 WRF 模式之前建立起对 WRF 模式的基本认知。
由于WRF及其依赖库的编译相对比较复杂, Workshop 基于和鲸的 ModelWhale 平台,已事先在 Workshop 专用镜像“WRF20220109”中安装了 WRF 及其依赖库,为学员节省了大量时间。
报告会上,冬青老师借“lqy”的作业详细地介绍了如何用 WRF Domain Wizard 工具设置 namelist、修改 namelist 文件,配置 WPS 运行的全过程。完成预处理后,再按照步骤分别运行各个程序,就可以完成WRF的完整运行。
对于部分同学而言,第四期的课程内容难度会相对比较高,因为这可能是大家第一次实打实地去跑模式。但正如“longtsing”所言,整个过程虽然耗费时间精力,却学到了很多新的东西,这是一个难得的学习和探索的机会。
此外,即使是接触过 WRF 的同学,也能有全新体验。在报告会的尾声,“lqy”说到:“这是我第一次在 Notebook 里面跑 WRF,感觉很方便。平时我们都是在终端对着命令行敲,敲错了就要重新敲,但这里错了可以 Restart & Run all,之前写过的代码也不需要再写了,使用起来非常友好。”
附. lqy作业链接:
https://www.heywhale.com/u/a86f22
将研究者宝贵的时间从繁杂的基础性事务中解放出来,聚焦于科研本身,解放、放大创造力,正是和鲸一直在做的事情。
数据驱动研究,与开拓者同行
为期一个多月的 Python 气象海洋数据分析 II Workshop 结束了,对于气象数据分析的探索仍道阻且长。未来,和鲸将持续深耕地球科学领域,联合各界专家学者,以真实研究课题和应用实践为导向,开展不限于训练营、Workshop、练习赛等各类内容丰富、形式多样的活动。
大数据中蕴涵的价值亟待被开发和利用,值得科研人员深入挖掘的问题也在变多、变难。和鲸愿持续构建更开放的学术交流体系,激发更多数据研究者的创造力,让每一位研究者都能站在前人的肩膀上做学问,让科研在共享和传递中前行。
和鲸社区聚集 50万+ 数据从业者与爱好者,具备丰富且实时更新的真实数据、开源代码、项目案例及实训活动资源,覆盖商科经管、地球科学、人文社科、生物医学等广泛的学科领域,您可点此链接免费注册使用。
本次活动属于和鲸发起的和鲸社区“101数智领航计划”系列活动,旨在积极贯彻教育部基础学科系列“101计划”工作。2024 年,和鲸社区结合近十年在数据科学人工智能的开源资源积累和专业共建经验积累,将与 20 个头部高校共创共建高质量课程、高质量数据集、高质量实践项目以及学科大模型等,同时开放有限学院名额,助力建立 AI 创新虚拟实验室。
若您对这一计划感兴趣,也欢迎点此链接与我们取得联系(添加时请备注“101”)。