Kotlin 用于数据科学的基础库(深度学习、数据挖掘)

Kotlin 用于数据科学

从构建数据流水线到生产机器学习模型, Kotlin 可能是处理数据的绝佳选择:

  • Kotlin 简洁、易读且易于学习。
  • 静态类型与空安全有助于创建可靠的、可维护的、易于故障排除的代码。
  • 作为一种 JVM 语言,Kotlin 提供了出色的性能表现, 并具有充分利用久经考验的 Java 库的整个生态系统的能力。

交互式编辑器

Jupyter NotebookApache Zeppelin 等笔记本为数据可视化与探索性研究提供了方便的工具。 Kotlin 与这些工具集成在一起,可以帮助探索数据、与同事共享发现或建立数据科学和机器学习技能。

Jupyter Kotlin 内核

Jupyter Notebook 是一个开源 Web 应用程序, 它允许创建与共享包含代码、可视化与标记文本的文档(也称为“笔记本”)。 Kotlin-jupyter 是一个开源项目, 它为 Jupyter Notebook 带来了 Kotlin 支持。

查看 Kotlin 内核的 GitHub 仓库 以获取安装说明、文档与示例。

Zeppelin Kotlin 解释器

Apache Zeppelin 是一种流行的基于 Web 的交互式数据分析解决方案。 它为 Apache Spark 集群计算系统提供了强大的支持, 这对数据工程特别有用。 从版本 0.9.0 开始,Apache Zeppelin 内置了 Kotlin 解释器。

类库

Kotlin 社区创建的用于数据相关任务的类库生态系统正在迅速扩展。 以下是一些可能会有用的库:

Kotlin 库

  • kotlin-statistics 是一个为探索性统计与生产统计中提供扩展函数的库。它支持基本的数字列表/序列/数组函数(从 sumskewness)、 切片操作符(诸如 countBysimpleRegressionBy)、分箱(binning)操作符、离散 PDF 采样、 朴素贝叶斯分类器、聚类、线性回归等等。

  • kmath 是一个受 NumPy 启发的库。 这个库支持代数结构与运算、类数组结构、数学表达式、直方图、 流运算、commons-mathkoma 的包装等等。

  • krangl 是一个受 R 语言的 dplyr 与 Python 的 pandas 启发的库。这个库提供了采用函数式风格 API 进行数据操作的功能;它还包括过滤、转换、聚合与重塑表格数据的函数。

  • lets-plot 是一个用 Kotlin 编写的统计数据绘图库。 Lets-Plot 是多平台的,不仅可以用于 JVM,还可以用于 JS 与 Python。

  • kravis 是另一个用于表格数据可视化的库,其灵感来自于 R 的 ggplot

Java 库

因为 Kotlin 提供了与 Java 互操作的头等支持,所以也可以在用于数据科学的 Kotlin 代码中使用 Java 库。 以下是这些库的一些示例:

  • DeepLearning4J——一个 Java 深度学习库

  • ND4J——用于 JVM 的高效矩阵数学库

  • Dex——一个基于 Java 的数据可视化工具

  • Smile——一个全面的机器学习、自然语言处理、线性代数、图、插值与可视化系统。除了 Java API,Smile 还提供了函数式的 Kotlin API 以及 Scala 与 Clojure API。
    • Smile-NLP-kt——以 Kotlin 扩展函数与接口格式重写了 Smile 的自然语言处理部分的 Scala 隐式内容。
  • Apache Commons Math——一个 Java 通用数学、统计与机器学习库

  • OptaPlanner——一个用于优化规划问题的求解器实用程序

  • Charts——一个正在开发中的科学 JavaFX 图表库

  • CoreNLP——一个自然语言处理工具包

  • Apache Mahout——一个回归、聚类与推荐的分布式框架

  • Weka——一组用于数据挖掘任务的机器学习算法

如果这个列表还不能满足需求,可以在 Thomas Nield 的 Kotlin 数据科学资源摘要中找到更多选项。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Android 中使用 Kotlin 存储图片到数据可以采用以下步骤: 1. 创建一个继承自 RoomDatabase 的抽象类,定义一个用于访问数据的 DAO 接口。 ```kotlin @Database(entities = [ImageEntity::class], version = 1) abstract class MyDatabase : RoomDatabase() { abstract fun imageDao(): ImageDao } ``` 2. 创建一个实体类 ImageEntity,用于表示图片的信息,包括图片的 ID、名称、路径等。 ```kotlin @Entity(tableName = "images") data class ImageEntity( @PrimaryKey(autoGenerate = true) val id: Int, val name: String, val path: String ) ``` 3. 创建一个 DAO 接口 ImageDao,定义用于访问数据的方法,包括插入图片、删除图片、查询所有图片等。 ```kotlin @Dao interface ImageDao { @Insert(onConflict = OnConflictStrategy.REPLACE) fun insert(image: ImageEntity) @Delete fun delete(image: ImageEntity) @Query("SELECT * FROM images") fun getAll(): LiveData<List<ImageEntity>> } ``` 4. 在需要存储图片时,将图片转换成字节数组,并插入到数据中。 ```kotlin val file = File(imagePath) val inputStream = FileInputStream(file) val buffer = ByteArray(file.length().toInt()) inputStream.read(buffer) val imageBytes = Base64.encodeToString(buffer, Base64.NO_WRAP) val imageEntity = ImageEntity(0, imageName, imageBytes) myDatabase.imageDao().insert(imageEntity) ``` 5. 在需要显示图片时,从数据中查询图片信息,并将字节数组转换成 Bitmap。 ```kotlin val imageEntity = myDatabase.imageDao().getById(imageId) val imageBytes = Base64.decode(imageEntity.path, Base64.NO_WRAP) val bitmap = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.size) ``` 注意:存储图片到数据可能会导致数据占用过多空间,建议仅存储图片的路径或 URI,图片本身保存在文件系统中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值