Apprentissage automatique en Go : bibliothèques pour Golang (ML, réseaux de neurones, NLP)

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Apprentissage automatique en Go : revue des bibliothèques pour Golang



Bien que Python reste le roi de l'apprentissage automatique, Go (Golang) est de plus en plus utilisé pour les systèmes de production, les microservices et les applications à forte charge où la vitesse, le parallélisme et la simplicité de déploiement sont importants. Dans cet article, nous passerons en revue les bibliothèques clés pour l'apprentissage automatique en Go, leurs fonctionnalités, des exemples de code et des scénarios d'utilisation.



Pourquoi Go pour le ML ?

Go ne cherche pas à remplacer Python dans le travail de recherche. Ses points forts sont l'intégration avec l'infrastructure, une faible consommation de mémoire, la prise en charge intégrée de la concurrence (goroutines) et la compilation en un seul binaire. C'est un choix idéal pour :

  • Les services de prédiction (inférence) basés sur des modèles entraînés
  • Le traitement de données en flux en temps réel
  • La construction de pipelines de données à haut débit


1. Gorgonia — framework pour réseaux de neurones

Gorgonia est l'équivalent de TensorFlow et PyTorch en Go. Il permet de créer et d'entraîner des réseaux de neurones avec différenciation automatique.



Installation :

go get gorgonia.org/gorgonia


Exemple : régression logistique simple

package main

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

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

// Données d'entrée (matrice 4x2) x := gorgonia.NewMatrix(g, tensor.Float64, gorgonia.WithShape(4, 2), gorgonia.WithName("x")) // Poids w := gorgonia.NewMatrix(g, tensor.Float64, gorgonia.WithShape(2, 1), gorgonia.WithName("w")) // Biais b := gorgonia.NewScalar(g, tensor.Float64, gorgonia.WithName("b"))

// Couche linéaire : y = x*w + b xw, _ := gorgonia.Mul(x, w) y, _ := gorgonia.Add(xw, b)

// Fonction d'activation (sigmoïde) activated, _ := gorgonia.Sigmoid(y)

machine := gorgonia.NewTapeMachine(g) // Remplissage des données 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("Résultat : %v", activated.Value())}


2. GoLearn — algorithmes ML classiques

GoLearn (golearn) est une bibliothèque implémentant KNN, les arbres de décision, la forêt aléatoire, la régression linéaire et le clustering. L'API rappelle sklearn.



Installation :

go get -u github.com/sjwhitworth/golearn


Exemple : K-plus proches voisins (KNN)

package main

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

func main() { // Chargement des données (CSV) rawData, err := base.ParseCSVToInstances("iris.csv", true) if err != nil { panic(err) }

// Création du KNN avec k=3 et métrique euclidienne cls := knn.NewKnnClassifier("euclidean", 3)

// Division en train/test trainData, testData := base.InstancesTrainTestSplit(rawData, 0.67)

// Entraînement cls.Fit(trainData)

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

// Évaluation de la précision accuracy, err := evaluation.GetAccuracy(testData, predictions) fmt.Printf("Précision : %.2f%%", accuracy*100)}


3. Goml — modèles légers pour une intégration rapide

Goml fournit des implémentations simples de régression linéaire et logistique, de Naive Bayes et de réseaux de neurones avec un minimum de code.



package main

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

func main() { // Données pour la classification de texte

Recommendations