Maschinelles Lernen mit Kotlin: Moderne Bibliotheken und Werkzeuge
Kotlin ist eine statisch typisierte Programmiersprache, die auf der JVM läuft und vollständig mit Java kompatibel ist. Dank seiner prägnanten Syntax, Null-Sicherheit und einem leistungsstarken Ökosystem wird Kotlin zunehmend in Data Science und maschinellem Lernen eingesetzt. In diesem Artikel betrachten wir die wichtigsten Bibliotheken, die es ermöglichen, ML-Aufgaben direkt in Kotlin zu lösen, ohne auf Python zurückgreifen zu müssen.
1. KotlinDL – Bibliothek für Deep Learning von JetBrains
KotlinDL ist die offizielle Bibliothek der Kotlin-Entwickler (JetBrains), die zum Erstellen und Trainieren neuronaler Netze entwickelt wurde. Sie unterstützt sowohl eine High-Level-API (Keras-ähnlich) als auch Low-Level-Operationen mit Tensoren.
Hauptfunktionen:
- Modellerstellung: Sequential, Functional API
- Schichten: Dense, Conv2D, MaxPooling, Dropout, LSTM u. a.
- Optimierer: Adam, SGD, RMSprop
- Verlustfunktionen: CrossEntropy, MSE, MAE
- Laden vortrainierter Modelle (ONNX, TensorFlow SavedModel)
- Arbeit mit Bildern, Text und tabellarischen Daten
Beispiel: Ein einfaches neuronales Netz zur Klassifikation
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("Genauigkeit: $accuracy") }}2. Smile – Universelle Bibliothek für Statistik und ML
Smile (Statistical Machine Intelligence & Learning Engine) ist eine leistungsstarke Java/Kotlin-Bibliothek, die praktisch alle klassischen Algorithmen des maschinellen Lernens abdeckt. Sie enthält Implementierungen von über 200 Algorithmen.
Wichtige Module:
- Klassifikation: SVM, Random Forest, Decision Trees, Naive Bayes
- Regression: Linear, Ridge, LASSO, Gaussian Process
- Clusteranalyse: K-Means, DBSCAN, Hierarchical, GMM
- Dimensionsreduktion: PCA, t-SNE, MDS
- Verarbeitung natürlicher Sprache (NLP): Tokenisierung, Stemming, N-Gramme
- Visualisierung: Diagramme, Scatter Plots, Heatmaps
Beispiel: Lineare Regression mit Smile
import smile.regression.OLSimport smile.data.DataFrameimport smile.data.type.DataTypesimport smile.data.vector.DoubleVector
fun main() { // DataFrame mit Daten erstellen 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-Modell trainieren (gewöhnliche Methode der kleinsten Quadrate) val model = OLS.fit(df, "y", "x") println("Koeffizienten: ${model.coefficients()}") println("Vorhersage für x=6: ${model.predict(doubleArrayOf(6.0))}")}3. Koma – Matrixberechnungen und wissenschaftliche Berechnungen
Koma ist eine Bibliothek für die Arbeit mit mehrdimensionalen Arrays und Matrizen, inspiriert von NumPy aus Python. Sie eignet sich ideal für numerische Berechnungen, Statistik und Datenvorverarbeitung vor ML.
Funktionen:
- Matrizerstellung: zeros, ones, eye, rand
- Operationen: Addition, Multiplikation, Transponierung, inverse Matrix
- Lineare Algebra: SV
Auch in der Bibliothek
Event Bus und das Observer-Pattern in Java: Leitfaden mit Beispielen
cobra/pflag für Go: Vollständige Anleitung mit Beispielen
GuzzleHTTP/Promises für PHP: Komplette Anleitung mit Beispielen
Arbeiten mit ZIP-Archiven in Java: Vollständige Anleitung zu java.util.zip
JSON-Verarbeitung in JavaScript (Node.js): Vollständiger Leitfaden