Machine Learning em Go: bibliotecas para Golang (ML, redes neurais, PLN)

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Machine Learning em Go: visão geral das bibliotecas para Golang



Embora o Python continue sendo o rei do machine learning, Go (Golang) está sendo cada vez mais usado para sistemas de produção, microsserviços e aplicações de alta carga, onde velocidade, paralelismo e simplicidade de implantação são importantes. Neste artigo, vamos analisar as principais bibliotecas para machine learning em Go, seus recursos, exemplos de código e cenários de uso.



Por que Go para ML?

Go não tenta substituir o Python no trabalho de pesquisa. Seus pontos fortes são a integração com a infraestrutura, baixo consumo de memória, suporte nativo a concorrência (goroutines) e compilação em um único binário. É a escolha ideal para:

  • Serviços de previsão (inferência) baseados em modelos treinados
  • Processamento de dados em fluxo em tempo real
  • Construção de pipelines de dados com alta taxa de transferência


1. Gorgonia — framework para redes neurais

Gorgonia é o equivalente ao TensorFlow e PyTorch em Go. Permite criar e treinar redes neurais com diferenciação automática.



Instalação:

go get gorgonia.org/gorgonia


Exemplo: regressão logística simples

package main

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

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

// Dados de entrada (matriz 4x2) x := gorgonia.NewMatrix(g, tensor.Float64, gorgonia.WithShape(4, 2), gorgonia.WithName("x")) // Pesos w := gorgonia.NewMatrix(g, tensor.Float64, gorgonia.WithShape(2, 1), gorgonia.WithName("w")) // Viés b := gorgonia.NewScalar(g, tensor.Float64, gorgonia.WithName("b"))

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

// Função de ativação (sigmoide) activated, _ := gorgonia.Sigmoid(y)

machine := gorgonia.NewTapeMachine(g) // Preenchimento dos dados 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("Resultado: %v", activated.Value())}


2. GoLearn — algoritmos clássicos de ML

GoLearn (golearn) — biblioteca com implementação de KNN, árvores de decisão, floresta aleatória, regressão linear e clusterização. A API lembra o sklearn.



Instalação:

go get -u github.com/sjwhitworth/golearn


Exemplo: K-vizinhos mais próximos (KNN)

package main

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

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

// Criação do KNN com k=3 e métrica euclidiana cls := knn.NewKnnClassifier("euclidean", 3)

// Divisão em treino/teste trainData, testData := base.InstancesTrainTestSplit(rawData, 0.67)

// Treinamento cls.Fit(trainData)

// Predição predictions, err := cls.Predict(testData) if err != nil { panic(err) }

// Avaliação da acurácia accuracy, err := evaluation.GetAccuracy(testData, predictions) fmt.Printf("Acurácia: %.2f%%", accuracy*100)}


3. Goml — modelos leves para integração rápida

Goml fornece implementações simples de regressão linear e logística, Naive Bayes e redes neurais com código mínimo.



package main

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

func main() { // Dados para classificação de texto

Recommendations