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/gorgoniaExemplo: 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/golearnExemplo: 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 Também na biblioteca
Rate Limiting em Kotlin: bibliotecas e exemplos práticos
Joi para JavaScript (Node.js): guia completo com exemplos
Geração de PDF em Swift (iOS/macOS): UIGraphicsPDFRenderer, PDFKit e Core Graphics
Processamento JSON em Swift: Codable, JSONSerialization e exemplos práticos