Maschinelles Lernen mit Go: Bibliotheken für Golang (ML, neuronale Netze, NLP)

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Maschinelles Lernen mit Go: Überblick über Bibliotheken für Golang



Obwohl Python der König des maschinellen Lernens bleibt, wird Go (Golang) zunehmend für Produktionssysteme, Microservices und hochlastige Anwendungen eingesetzt, bei denen Geschwindigkeit, Parallelität und einfache Bereitstellung wichtig sind. In diesem Artikel betrachten wir die wichtigsten Bibliotheken für maschinelles Lernen mit Go, ihre Funktionen, Codebeispiele und Anwendungsszenarien.



Warum Go für ML?

Go versucht nicht, Python in der Forschungsarbeit zu ersetzen. Seine Stärken liegen in der Integration mit der Infrastruktur, dem geringen Speicherverbrauch, der integrierten Unterstützung für Nebenläufigkeit (Goroutinen) und der Kompilierung in eine einzelne Binärdatei. Es ist die ideale Wahl für:

  • Vorhersagedienste (Inference) auf Basis trainierter Modelle
  • Echtzeitverarbeitung von Streaming-Daten
  • Aufbau von Datenpipelines mit hohem Durchsatz


1. Gorgonia — Framework für neuronale Netze

Gorgonia ist das Go-Äquivalent zu TensorFlow und PyTorch. Es ermöglicht die Erstellung und das Training neuronaler Netze mit automatischer Differenzierung.



Installation:

go get gorgonia.org/gorgonia


Beispiel: Einfache logistische Regression

package main

import ( "fmt" "gorgonia.org/gorgonia" "gorgonia.org/tensor")

func main() { g := gorgonia.NewGraph()

// Eingabedaten (Matrix 4x2) x := gorgonia.NewMatrix(g, tensor.Float64, gorgonia.WithShape(4, 2), gorgonia.WithName("x")) // Gewichte w := gorgonia.NewMatrix(g, tensor.Float64, gorgonia.WithShape(2, 1), gorgonia.WithName("w")) // Bias b := gorgonia.NewScalar(g, tensor.Float64, gorgonia.WithName("b"))

// Lineare Schicht: y = x*w + b xw, _ := gorgonia.Mul(x, w) y, _ := gorgonia.Add(xw, b)

// Aktivierungsfunktion (Sigmoid) activated, _ := gorgonia.Sigmoid(y)

machine := gorgonia.NewTapeMachine(g) // Daten füllen gorgonia.Let(x, tensor.New(tensor.WithBacking([]float64{1,2,3,4,5,6,7,8}), tensor.WithShape(4,2))) gorgonia.Let(w, tensor.New(tensor.WithBacking([]float64{0.5, -0.2}), tensor.WithShape(2,1))) gorgonia.Let(b, 0.1)

if err := machine.RunAll(); err != nil { fmt.Println(err) }

fmt.Printf("Ergebnis: %v", activated.Value())}


2. GoLearn — Klassische ML-Algorithmen

GoLearn (golearn) ist eine Bibliothek mit Implementierungen von KNN, Entscheidungsbäumen, Random Forest, linearer Regression und Clustering. Die API erinnert an sklearn.



Installation:

go get -u github.com/sjwhitworth/golearn


Beispiel: K-nächste Nachbarn (KNN)

package main

import ( "fmt" "github.com/sjwhitworth/golearn/base" "github.com/sjwhitworth/golearn/evaluation" "github.com/sjwhitworth/golearn/knn")

func main() { // Daten laden (CSV) rawData, err := base.ParseCSVToInstances("iris.csv", true) if err != nil { panic(err) }

// KNN mit k=3 und euklidischer Metrik erstellen cls := knn.NewKnnClassifier("euclidean", 3)

// Aufteilung in Trainings-/Testdaten trainData, testData := base.InstancesTrainTestSplit(rawData, 0.67)

// Training cls.Fit(trainData)

// Vorhersage predictions, err := cls.Predict(testData) if err != nil { panic(err) }

// Genauigkeit bewerten accuracy, err := evaluation.GetAccuracy(testData, predictions) fmt.Printf("Genauigkeit: %.2f%%", accuracy*100)}


3. Goml — Leichte Modelle für schnelle Integration

Goml bietet einfache Implementierungen von linearer und logistischer Regression, Naive Bayes und neuronalen Netzen mit minimalem Code.



package main

import ( "fmt" "github.com/cdipaolo/goml/base" "github.com/cdipaolo/goml/text")

func main() { // Daten für Textklassifikation

Empfehlungen