Машинное обучение на Kotlin: обзор библиотек для Data Science и ML

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Машинное обучение на Kotlin: современные библиотеки и инструменты

Kotlin — это статически типизированный язык программирования, который работает поверх JVM и полностью совместим с Java. Благодаря лаконичному синтаксису, null-безопасности и мощной экосистеме, Kotlin всё активнее используется в Data Science и машинном обучении. В этой статье мы рассмотрим ключевые библиотеки, которые позволяют решать задачи ML непосредственно на Kotlin, без перехода на Python.

1. KotlinDL — библиотека для глубокого обучения от JetBrains

KotlinDL — это официальная библиотека от создателей Kotlin (JetBrains), предназначенная для построения и обучения нейронных сетей. Она поддерживает как высокоуровневый API (Keras-like), так и низкоуровневые операции с тензорами.

Основные возможности:

  • Построение моделей: Sequential, Functional API
  • Слои: Dense, Conv2D, MaxPooling, Dropout, LSTM и др.
  • Оптимизаторы: Adam, SGD, RMSprop
  • Функции потерь: CrossEntropy, MSE, MAE
  • Загрузка предобученных моделей (ONNX, TensorFlow SavedModel)
  • Работа с изображениями, текстом и табличными данными

Пример: простая нейросеть для классификации

import org.jetbrains.kotlinx.dl.api.core.Sequential
import org.jetbrains.kotlinx.dl.api.core.layer.core.Dense
import org.jetbrains.kotlinx.dl.api.core.layer.reshaping.Flatten
import org.jetbrains.kotlinx.dl.api.core.optimizer.Adam
import org.jetbrains.kotlinx.dl.dataset.mnist

fun main() {
    val model = Sequential.of(
        Flatten(inputShape = longArrayOf(28, 28)),
        Dense(128, activation = "relu"),
        Dense(10, activation = "softmax")
    )

    model.use {
        it.compile(optimizer = Adam(), loss = "categoricalCrossEntropy")
        val (train, test) = mnist()
        it.fit(train, epochs = 5, batchSize = 32)
        val accuracy = it.evaluate(test)
        println("Точность: $accuracy")
    }
}

2. Smile — универсальная библиотека для статистики и ML

Smile (Statistical Machine Intelligence & Learning Engine) — это мощная Java/Kotlin библиотека, охватывающая практически все классические алгоритмы машинного обучения. Она включает реализацию более 200 алгоритмов.

Ключевые модули:

  • Классификация: SVM, Random Forest, Decision Trees, Naive Bayes
  • Регрессия: Linear, Ridge, LASSO, Gaussian Process
  • Кластеризация: K-Means, DBSCAN, Hierarchical, GMM
  • Снижение размерности: PCA, t-SNE, MDS
  • Обработка естественного языка (NLP): токенизация, стемминг, N-граммы
  • Визуализация: графики, scatter plots, heatmaps

Пример: линейная регрессия на Smile

import smile.regression.OLS
import smile.data.DataFrame
import smile.data.type.DataTypes
import smile.data.vector.DoubleVector

fun main() {
    // Создаём DataFrame с данными
    val x = doubleArrayOf(1.0, 2.0, 3.0, 4.0, 5.0)
    val y = doubleArrayOf(2.1, 4.2, 6.0, 7.9, 10.1)
    val df = DataFrame.of(DoubleVector.of("x", x), DoubleVector.of("y", y))

    // Обучаем модель OLS (обычный метод наименьших квадратов)
    val model = OLS.fit(df, "y", "x")
    println("Коэффициенты: ${model.coefficients()}")
    println("Предсказание для x=6: ${model.predict(doubleArrayOf(6.0))}")
}

3. Koma — матричные вычисления и научные расчёты

Koma — это библиотека для работы с многомерными массивами и матрицами, вдохновлённая NumPy из Python. Она идеально подходит для численных расчётов, статистики и предобработки данных перед ML.

Возможности:

  • Создание матриц: zeros, ones, eye, rand
  • Операции: сложение, умножение, транспонирование, обратная матрица
  • Линейная алгебра: SVD, собственные значения, QR-разложение
  • Статистика: среднее, дисперсия, корреляция
  • Интеграция с KotlinDL и Smile

Пример: работа с матрицами в Koma

import koma.*                    

Рекомендаций