今年在 2019 年 KotlinConf 上,Roman Belov 概述了 Kotlin 的数据科学方法。既然该演讲现在已公开,我们决定重述一下,并分享一些有关 Kotlin 数据科学工具和库的当前状态。
Kotlin 如何适应数据科学?由于需要分析大量数据,最近几年为数据科学学科带来了真正的复兴。没有适当的工具就不可能实现所有这些数据科学复兴。以前,您需要一种专门为数据科学设计的编程语言,但是今天,您已经可以使用通用语言了。当然,这需要通用语言做出正确的设计决策,更不用说获得社区的帮助了。这使某些语言(例如 Python )比其他语言更受数据科学欢迎。
借助 Kotlin Multiplatform 的概念,Kotlin 旨在复制其开发人员的经验并将其互操作性扩展到其他平台。Kotlin 的主要设计品质包括简洁性、安全性和互操作性。这些基本的语言特征使其成为用于各种任务和平台的出色工具。数据科学当然是这些任务之一。
好消息是,社区已经开始采用 Kotlin 进行数据科学,并且这种采用正在快速进行。以下简短报告概述了 Kotlin 对数据科学的准备情况,包括 Kotlin 库和用于数据科学的 Kotlin 工具。
Jupyter
首先,由于其交互性, Jupyter Notebook非常便于转换、可视化和呈现数据。凭借 Jupyter 的可扩展性和开源性质,它已成为围绕数据科学的大型生态系统,并已集成到大量与数据相关的其他解决方案中。其中包括用于 Jupyter Notebook 的 Kotlin 内核。使用此内核,您可以在 Jupyter Notebook 中编写和运行 Kotlin 代码,并使用以 Java 和 Kotlin 编写的第三方数据科学框架。
可在此存储库中找到可复制的 Kotlin Jupyter Notebook 的示例。要快速使用 Kotlin Notebook,您可以在 Binder 上启动它(请注意,设置环境通常需要一分钟时间)。
Apache Zeppelin
由于对 Spark 和 Scala 的强大支持, Apache Zeppelin 在数据工程师中非常受欢迎。与 Jupyter 相似,Zeppelin 具有一个插件 API(称为 Interpreters ),以通过支持其他工具和语言来扩展其核心。目前,最新版本的 Zeppelin(0.8.2)并未随附捆绑的 Kotlin 解释器。但是无论如何,它可以在 Zeppelin 的主分支中获得。要了解如何在 Spark 群集中部署具有 Kotlin 支持的 Zeppelin,请参阅这些说明。
Apache Spark
由于 Spark 具有强大的 Java API,因此您已经可以将 Kotlin 在 Jupyter 和 Zeppelin 中的 Spark Java API 使用,而不会出现任何问题。但是,我们正在通过使用 Spark 的 Dataset API 添加对 Kotlin 类的完全支持来改善这种集成。使用 Spark 的外壳支持 Kotlin 还正在进行中。
库
在没有库的情况下仅将 Kotlin 用于数据科学是没有意义的。幸运的是,由于社区的最新努力,已经有许多不错的 Kotlin 库可供您立即使用。
以下是一些最有用的库:
有关有用链接的更完整列表,请参阅 Thomas Nield 的 Kotlin 数据科学资源。
Lets-Plot for Kotlin
Lets-Plot 是一个开源绘图库,用于完全用 Kotlin 编写的统计数据。作为一个跨平台库,它具有专门为 Kotlin 设计的 API。您可以通过阅读用户指南来熟悉如何使用此 API。
为了实现交互性,Lets-Plot 与 Jupyter Notebook 的 Kotlin 内核紧密集成。安装并启用 Kotlin 内核后,将以下行添加到 Jupyter Notebook 中:
%use le
然后,您将能够从单元格中调用 Lets-Plot API 函数,并通过将 ggplot 与 R 或 Python 一起使用,通常会在单元格下面立即看到结果:
NumPy 的 Kotlin 绑定
NumPy 是使用 Python 进行科学计算的流行软件包。它为多维数组处理、线性代数、傅立叶变换、随机数和其他数学任务提供了强大的功能。NumPy 的 Kotlin 绑定是一个 Kotlin 库,通过为 NumPy 函数提供静态类型的包装器,可以从 Kotlin 代码调用 NumPy 函数。
贡献您的力量
整个 Kotlin 生态系统都是基于开源的思想,没有许多贡献者的帮助就不可能实现。面向数据科学的 Kotlin 才刚刚起步,现在需要您的帮助!
您可以使用以下方法協助:
Kotlin 社区在其 Slack 中有一个名为 #datascience 的专用频道。我们邀请您加入此频道,以提问、找出需要帮助的领域以及如何做出贡献,当然还要与社区分享您的反馈和工作。
请记住,Kotlin 仍处于成为数据科学家首选工具的初期。这将是一次激动人心且充满挑战的旅程!它将需要建立一个丰富的工具和库生态系统,并调整语言设计以满足与数据相关的任务的需求。如果发现事情没有按预期进行,请分享您的经验 – 或参与并帮助解决它们。欢迎试试看,特别是 Jupyter 内核和库,并与我们分享您的反馈。
资源
这篇文章中的大多数信息以及更多信息都可以在 Kotlin 官方网站上找到。
KotlinConf 2019 对数据科学进行了更多鼓舞人心的演讲,包括 Alexander Nozik 的 Kotlin for Science (适用于科学的 Kotlin) 和 Erik Meijer 的 Gradient Descent with Kotlin (梯度下降法与 Kotlin)。
我们还建议您观看过去两次 KotlinConf 会议上的演讲:Holger Brandl 的演讲( krangl 的创建者,Kotlin 类似于 Python pandas 的创建者),以及 kotlin-statistics 创建者 Thomas Nield 的演讲。
今天的内容就到这里了。
总结起来,社区正在以不错的速度采用 Kotlin 进行数据科学,现在轮到您了。