Aprendizaje automático en Kotlin: bibliotecas y herramientas modernas
Kotlin es un lenguaje de programación de tipado estático que funciona sobre la JVM y es totalmente compatible con Java. Gracias a su sintaxis concisa, seguridad contra nulos y su potente ecosistema, Kotlin se utiliza cada vez más en Data Science y aprendizaje automático. En este artículo, revisaremos las bibliotecas clave que permiten resolver problemas de ML directamente en Kotlin, sin necesidad de cambiar a Python.
1. KotlinDL — biblioteca de aprendizaje profundo de JetBrains
KotlinDL es la biblioteca oficial de los creadores de Kotlin (JetBrains), diseñada para construir y entrenar redes neuronales. Soporta tanto una API de alto nivel (similar a Keras) como operaciones de bajo nivel con tensores.
Características principales:
- Construcción de modelos: Sequential, Functional API
- Capas: Dense, Conv2D, MaxPooling, Dropout, LSTM, etc.
- Optimizadores: Adam, SGD, RMSprop
- Funciones de pérdida: CrossEntropy, MSE, MAE
- Carga de modelos preentrenados (ONNX, TensorFlow SavedModel)
- Trabajo con imágenes, texto y datos tabulares
Ejemplo: red neuronal simple para clasificación
import org.jetbrains.kotlinx.dl.api.core.Sequentialimport org.jetbrains.kotlinx.dl.api.core.layer.core.Denseimport org.jetbrains.kotlinx.dl.api.core.layer.reshaping.Flattenimport org.jetbrains.kotlinx.dl.api.core.optimizer.Adamimport 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("Precisión: $accuracy") }}2. Smile — biblioteca universal para estadística y ML
Smile (Statistical Machine Intelligence & Learning Engine) es una potente biblioteca de Java/Kotlin que cubre prácticamente todos los algoritmos clásicos de aprendizaje automático. Incluye la implementación de más de 200 algoritmos.
Módulos clave:
- Clasificación: SVM, Random Forest, Decision Trees, Naive Bayes
- Regresión: Linear, Ridge, LASSO, Gaussian Process
- Agrupamiento: K-Means, DBSCAN, Hierarchical, GMM
- Reducción de dimensionalidad: PCA, t-SNE, MDS
- Procesamiento de lenguaje natural (NLP): tokenización, stemming, N-gramas
- Visualización: gráficos, scatter plots, mapas de calor
Ejemplo: regresión lineal con Smile
import smile.regression.OLSimport smile.data.DataFrameimport smile.data.type.DataTypesimport smile.data.vector.DoubleVector
fun main() { // Creamos un DataFrame con datos 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))
// Entrenamos el modelo OLS (mínimos cuadrados ordinarios) val model = OLS.fit(df, "y", "x") println("Coeficientes: ${model.coefficients()}") println("Predicción para x=6: ${model.predict(doubleArrayOf(6.0))}")}3. Koma — cálculos matriciales y científicos
Koma es una biblioteca para trabajar con arreglos multidimensionales y matrices, inspirada en NumPy de Python. Es ideal para cálculos numéricos, estadística y preprocesamiento de datos antes de ML.
Características:
- Creación de matrices: zeros, ones, eye, rand
- Operaciones: suma, multiplicación, transposición, matriz inversa
- Álgebra lineal: SVD
También en la biblioteca
Remeda para TypeScript: guía completa con ejemplos prácticos
GraphQL Java: Guía completa de la biblioteca para crear API en Java
Cliente Redis para C++: conexión, instalación y ejemplos