Kotlin拥抱数据科学

今年的KotlinConf 2019, Roman Belov概述了在Kotlin上研究数据科学的方法。该演讲现已全网发布 ,我们决定记录并分享更多Kotlin为数据科学定制的工具及代码库。

Kotlin如何去适配数据科学呢?近年来数据分析的大量需求,使数据科学这一学科得以复苏。但其复苏也离不开合适工具的支持。在以前,数据科学需要专门设计的编程语言,但如今通用语言也能满足要求了。当然,这要求通用语言有正确的设计方向,和来自社区的支持。而符合所有条件的语言,例如Python,是数据科学中最流行的语言。

遵循于Kotlin多平台的原则,Kotlin旨在将开发人员的经验及其互操作性扩展到其他平台。 Kotlin的优势在于简洁性,安全性和互操作性。 这些基本的语言特征使其成为适合各种任务和平台的出色工具。 数据科学当然是其中之一了。

好消息是,社区已经开始为Kotlin进行数据科学的适配,并且工作进展非常迅速。 以下报告简短概述了Kotlin对数据科学的适配进度,包括代码库和用于数据科学的工具。

Jupyter

首先,得益于它们的交互性, Jupyter notebooks对于数据的转换,可视化和呈现非常方便。 凭借Jupyter的扩展性和开源性质,它已是一个围绕数据科学的大型生态系统,并已集成到许多与数据相关的解决方案中。 其中包括为Jupyter notebooks编写的Kotlin内核。 通过该内核,你可以在Jupyter notebooks中编写和运行Kotlin代码,并使用以Java和Kotlin编写的第三方数据科学框架。

可以在该repo中找到可供复制的Kotlin Jupyter notebooks示例。你可以在Binder上启动以快速体验Kotlin notebook(请注意,环境部署通常需要一点时间)。

Apache Zeppelin

基于对Spark和Scala的大力支持,Apache Zeppelin在数据工程师中非常受欢迎。 类似于Jupyter,Zeppelin提供了一个插件API(称为Interpreters),去兼容其他工具和语言来扩展其核心。目前,最新版本的Zeppelin(0.8.2)并未集成Kotlin解释器。 但无论如何,你可以在Zeppelin的主分支中获得它。 要了解如何在Spark集群中部署具有Kotlin支持的Zeppelin,请参考说明

Apache Spark

得益于Spark的强大Java API,你已经能在Jupyter和Zeppelin Spark中通过Kotlin调用其Java API,而无需担心任何问题。 但是,我们正在通过Spark的Dataset API以提供对Kotlin类的完整支持来改善这种集成。Spark’s shell对 Kotlin的支持也在开发中。

Libraries

在没有代码库的情况下将Kotlin用于数据科学是没有意义的。 但幸运的是,在社区的努力下,已经有许多不错的Kotlin库提供使用了。

这里列出部分非常有用的库:

  • kotlin-statistics是一个提供了扩展函数以进行探索性和生产性信息统计的库。 它支持基本的数字列表/序列/数组函数(从汇总到偏态),切片运算符(例如countBy,simpleRegressionBy等),binning operations,discrete PDF sampling,naive bayes classifier,clustering, linear regression等。
  • kmath是一个受numpy启发的库; 该库支持代数结构和运算,类似数组的结构,数学表达式,直方图,流运算,封装了commons-mathkoma等。
  • krangl 是受R的dplyr和Python的熊猫启发的库; 该库允许通过函数式API进行数据操作; 它允许你过滤,转换,聚合和重塑表格数据。
  • lets-plot是一个用以基于表格数据声明方式绘制图表的库。 该库的灵感来自R的ggplot和The Grammar of Graphics,并且与Kotlin内核紧密集成。 它是多平台的,不仅可以与JVM一起使用,还可以与JS和Python一起使用。
  • kravis是另一个受R’s ggplot启发的库,用于表格数据的可视化。

关于更完整对的推荐链接列表,请参阅Thomas Nield的Kotlin数据科学资源

Lets-Plot for Kotlin

Lets-Plot是一个完全用Kotlin编写的开源数据统计图表库。作为一个多平台库,它包含了专门为Kotlin设计的API。 你可以通过阅读用户指南来熟悉这些API。

为了实现交互性,Lets-Plot与Jupyter notebooks的Kotlin内核紧密集成。 安装并启用Kotlin内核后,将以下配置行添加到Jupyter notebooks中:

%use lets-plot

然后你就能在单元格中调用Lets-Plot的API函数了, 并通过使用ggplot使用R或Python:

img

Kotlin bindings for NumPy

NumPy 是使用Python进行科学计算的著名第三方包。 它为多维数组处理,线性代数,傅立叶变换,随机数和其他数学任务提供了强大的功能。 Kotlin Bindings for NumPy 库提供了封装NumPy的静态函数,使得可以从Kotlin代码中调用NumPy函数。

贡献

整个Kotlin生态都基于开源的思想,没有贡献者的帮助是不可能实现的。 为数据科学而生的Kotlin才刚萌芽,现在需要你的浇灌! 可通过以下方式提供帮助:

  • 阐述你的痛点,并就如何使Kotlin更适合数据科学任务(你的任务)分享你的想法。
  • 为开源的数据科学相关的库做贡献,并创建自己的库和工具-只要你认为可以使Kotlin更适合数据科学。

Kotlin社区在其Slack中有一个名为#datascience的专用频道。 欢迎你加入该频道并根据需要帮助的领域以及如何做出贡献进行提问,当然还欢迎向社区分享你的反馈。

当前Kotlin只是数据科学家的备选方案。 但这将是一次激动人心且充满挑战的旅程! 它将建立一个具有丰富的工具和库的生态系统,并调整语言设计以满足与数据相关的任务的需求。 如果事情没有按预期进行,请分享你的经验-或参与并帮助解决它们。 给它们一个展示的机会,特别是Jupyter内核和库,并向我们分享你的反馈。

资源

对于这篇文章的大部分和未列出的内容,都可以在Kotlin官方网站获取。

KotlinConf 2019上有很多关于数据科学的激动人心的讨论, 包括Kotlin for Science by Alexander NozikGradient Descent with Kotlin by Erik Meijer.

我们同样建议观看之前的两期KotlinConf演讲:Holger Brandl的演讲 (krangl的创始人, Python的pandas Kotlin版本),和Thomas Nield的演讲 (kotlin-statistics创始人)。

今天就先到这里 (亦或是今年)。总的来说,社区对Kotlin用于数据科学的适配正以一个惊人的速度进行着,现在,该你大展身手了。

Let’s Kotlin!

此条目发表在官方分类目录。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注