Kotlin for Machine Learning: Capabilities and Limitations — Part 2

Online Python Trainer for Beginners

Learn Python easily without overwhelming theory. Solve practical tasks with automatic checking, get hints in Russian, and write code directly in your browser — no installation required.

Start Course

Kotlin для машинного обучения: возможности и ограничения — часть 2



В первой части мы разобрали базовые концепции использования Kotlin в Data Science. Сегодня, в части 2, мы углубимся в практические аспекты: рассмотрим библиотеки, работу с нейросетями и типичные ошибки. Этот материал будет полезен как для тех, кто изучает Kotlin для начинающих, так и для опытных разработчиков, желающих расширить горизонты программирования на JVM.



Ключевые библиотеки Kotlin для машинного обучения



Экосистема Kotlin активно развивается. Вот три главных инструмента, которые стоит освоить в рамках обучения ML на Kotlin:



1. KotlinDL (Deep Learning)

Библиотека от JetBrains для создания нейросетей. Она полностью написана на Kotlin и не требует переключения на Python.

import org.jetbrains.kotlinx.dl.api.core.Sequentialimport org.jetbrains.kotlinx.dl.api.core.layer.*import org.jetbrains.kotlinx.dl.dataset.*

fun main() { val model = Sequential.of( Dense(128, activation = "relu"), Dropout(0.2f), Dense(10, activation = "softmax") ) model.compile(loss = "categorical_crossentropy", optimizer = "adam") println("Модель создана. Готов к обучению!")}


2. Smile (Statistical Machine Intelligence & Learning Engine)

Универсальная библиотека для классического ML: регрессия, кластеризация, SVM. Идеально подходит для программирования на Kotlin без излишней абстракции.

import smile.classification.RandomForestimport smile.data.*

fun trainRandomForest(data: DataFrame) { val forest = RandomForest.fit(data, "target") println("Точность: ${forest.accuracy()}")}


3. Krangl (Data Wrangling)

Библиотека для работы с табличными данными, аналог pandas. Она делает Kotlin для начинающих более доступным в задачах предобработки.

import krangl.*

fun cleanData() { val df = DataFrame.fromCSV("data.csv") df.filter { it["age"] gt 18 } .groupBy("city") .summarize("avg_salary") { it["salary"].mean() } .print()}


Ограничения Kotlin в ML: что нужно знать



Несмотря на прогресс, Kotlin для машинного обучения имеет ряд ограничений, которые важно учитывать в обучении и реальных проектах:



  • Меньше сообщество — найти готовые решения сложнее, чем для Python.
  • Ограниченная поддержка GPU — KotlinDL использует TensorFlow Java, что медленнее нативных Python-биндингов.
  • Отсутствие mature-решений для NLP — библиотеки вроде Hugging Face пока не портированы.
  • Сложность с визуализацией — нет аналогов matplotlib с такой же гибкостью.


Практический пример: предсказание цен на жилье



Давайте объединим полученные знания. Напишем полный пайплайн на Kotlin с использованием Smile и Krangl. Это отличный пример программирования для реальной задачи.



import krangl.*import smile.regression.LinearRegression

fun main() { // 1. Загрузка данных val rawData = DataFrame.fromCSV("housing.csv") // 2. Предобработка val cleanData = rawData.dropNA() .filter { it["medv"] gt 5 } .mutate("rooms_sq") { it["rooms"] map { it.toDouble() * it.toDouble() } } // 3. Подготовка матрицы признаков val features = cleanData.select("rooms", "age", "rooms_sq").toMatrix() val target = cleanData["medv"].toDoubleArray() // 4. Обучение val model = LinearRegression.fit(features, target) // 5. Оценка val predictions = model.predict(features) val mse = target.zip(predictions) { a, b -> (a - b) * (a - b) }.average() println("MSE: $mse")}

Blogs

Book Recommendations