Go में मशीन लर्निंग: Golang के लिए लाइब्रेरी की समीक्षा
हालांकि Python मशीन लर्निंग का राजा बना हुआ है, Go (Golang) का उपयोग प्रोडक्शन सिस्टम, माइक्रोसर्विसेज और हाई-लोड एप्लिकेशन में तेजी से बढ़ रहा है, जहां गति, समानांतरता और डिप्लॉयमेंट में आसानी महत्वपूर्ण है। इस लेख में, हम Go पर मशीन लर्निंग के लिए प्रमुख लाइब्रेरी, उनकी क्षमताएं, कोड उदाहरण और उपयोग के परिदृश्यों पर चर्चा करेंगे।
ML के लिए Go क्यों?
Go का उद्देश्य शोध कार्य में Python को बदलना नहीं है। इसकी ताकत इंफ्रास्ट्रक्चर के साथ एकीकरण, कम मेमोरी खपत, अंतर्निहित कंकरेंसी सपोर्ट (goroutines) और एक बाइनरी में कंपाइलेशन है। यह निम्नलिखित के लिए आदर्श विकल्प है:
- प्रशिक्षित मॉडल पर आधारित भविष्यवाणी (inference) सेवाएं
- रीयल-टाइम स्ट्रीमिंग डेटा प्रोसेसिंग
- उच्च थ्रूपुट वाले डेटा पाइपलाइन बनाना
1. Gorgonia — न्यूरल नेटवर्क के लिए फ्रेमवर्क
Gorgonia Go पर TensorFlow और PyTorch का विकल्प है। यह ऑटोमैटिक डिफरेंशिएशन के साथ न्यूरल नेटवर्क बनाने और प्रशिक्षित करने की सुविधा देता है।
इंस्टॉलेशन:
go get gorgonia.org/gorgonia
उदाहरण: सरल लॉजिस्टिक रिग्रेशन
package main
import (
"fmt"
"gorgonia.org/gorgonia"
"gorgonia.org/tensor"
)
func main() {
g := gorgonia.NewGraph()
// इनपुट डेटा (4x2 मैट्रिक्स)
x := gorgonia.NewMatrix(g, tensor.Float64, gorgonia.WithShape(4, 2), gorgonia.WithName("x"))
// वेट
w := gorgonia.NewMatrix(g, tensor.Float64, gorgonia.WithShape(2, 1), gorgonia.WithName("w"))
// बायस
b := gorgonia.NewScalar(g, tensor.Float64, gorgonia.WithName("b"))
// लीनियर लेयर: y = x*w + b
xw, _ := gorgonia.Mul(x, w)
y, _ := gorgonia.Add(xw, b)
// एक्टिवेशन फंक्शन (सिग्मॉइड)
activated, _ := gorgonia.Sigmoid(y)
machine := gorgonia.NewTapeMachine(g)
// डेटा भरना
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("परिणाम: %v\n", activated.Value())
}
2. GoLearn — क्लासिकल ML एल्गोरिदम
GoLearn (golearn) एक लाइब्रेरी है जिसमें KNN, डिसीजन ट्री, रैंडम फॉरेस्ट, लीनियर रिग्रेशन और क्लस्टरिंग शामिल हैं। इसका API sklearn जैसा है।
इंस्टॉलेशन:
go get -u github.com/sjwhitworth/golearn
उदाहरण: K-निकटतम पड़ोसी (KNN)
package main
import (
"fmt"
"github.com/sjwhitworth/golearn/base"
"github.com/sjwhitworth/golearn/evaluation"
"github.com/sjwhitworth/golearn/knn"
)
func main() {
// डेटा लोड करना (CSV)
rawData, err := base.ParseCSVToInstances("iris.csv", true)
if err != nil {
panic(err)
}
// KNN बनाना k=3 और यूक्लिडियन मेट्रिक के साथ
cls := knn.NewKnnClassifier("euclidean", 3)
// train/test में विभाजन
trainData, testData := base.InstancesTrainTestSplit(rawData, 0.67)
// प्रशिक्षण
cls.Fit(trainData)
// भविष्यवाणी
predictions, err := cls.Predict(testData)
if err != nil {
panic(err)
}
// सटीकता का मूल्यांकन
accuracy, err := evaluation.GetAccuracy(testData, predictions)
fmt.Printf("सटीकता: %.2f%%\n", accuracy*100)
}
3. Goml — तेज एकीकरण के लिए हल्के मॉडल
Goml न्यूनतम कोड के साथ लीनियर और लॉजिस्टिक रिग्रेशन, नेव बेज़ और न्यूरल नेटवर्क के सरल कार्यान्वयन प्रदान करता है।
package main
import (
"fmt"
"github.com/cdipaolo/goml/base"
"github.com/cdipaolo/goml/text"
)
func main() {
// टेक्स्ट वर्गीकरण के लिए डेटा
X := [][]float64{
{1, 0, 1, 0},
{0, 1, 0, 1},
{1, 1, 0, 0},
}
Y := []float64{0, पुस्तकालय में भी
Java WebSocket लाइब्रेरीज़: रियल-टाइम कार्यान्वयन के लिए संपूर्ण गाइड
Go (Golang) में JSON प्रोसेसिंग: encoding/json और विकल्प
Go (Golang) में CSV के साथ कार्य: encoding/csv के लिए पूर्ण गाइड
TypeScript में YAML के साथ काम करें: पार्सिंग, जनरेशन और वैलिडेशन