C# (.NET) में मशीन लर्निंग: डेवलपर्स के लिए लाइब्रेरीज़ की समीक्षा
हालाँकि Python मशीन लर्निंग का राजा बना हुआ है, .NET इकोसिस्टम एंटरप्राइज़ एप्लिकेशन, वेब सर्विसेज़ और डेस्कटॉप सॉल्यूशंस में ML मॉडल को इंटीग्रेट करने के लिए परिपक्व और शक्तिशाली टूल प्रदान करता है। इस लेख में हम C# के लिए तीन प्रमुख लाइब्रेरीज़: ML.NET, Accord.NET और TensorFlow.NET पर चर्चा करेंगे। आप जानेंगे कि अपने काम के लिए कौन सी लाइब्रेरी चुनें, और कोड उदाहरण भी देखेंगे।
1. ML.NET — Microsoft की नेटिव लाइब्रेरी
ML.NET एक क्रॉस-प्लेटफ़ॉर्म ओपन-सोर्स लाइब्रेरी है जो विशेष रूप से .NET के लिए विकसित की गई है। यह Python पर जाए बिना मशीन लर्निंग मॉडल बनाने, ट्रेन करने और डिप्लॉय करने की सुविधा देती है। यह क्लासिफिकेशन, रिग्रेशन, क्लस्टरिंग, रैंकिंग, एनोमली डिटेक्शन और यहाँ तक कि रेकमेंडेशन सिस्टम को भी सपोर्ट करती है।
मुख्य विशेषताएँ:
- बिल्ट-इन डेटा ट्रांसफ़ॉर्मर (नॉर्मलाइज़ेशन, one-hot एन्कोडिंग, टेक्स्ट और इमेज से फीचर निकालना)।
- AutoML — एल्गोरिदम और हाइपरपैरामीटर का ऑटोमैटिक चयन।
- क्रॉस-प्लेटफ़ॉर्म उपयोग के लिए मॉडल को ONNX में एक्सपोर्ट करना।
- TensorFlow और ONNX Runtime के ज़रिए GPU सपोर्ट।
उदाहरण: टेक्स्ट सेंटीमेंट का बाइनरी क्लासिफिकेशन
using Microsoft.ML;
using Microsoft.ML.Data;
public class SentimentData
{
public string Text { get; set; }
public bool Label { get; set; }
}
public class SentimentPrediction
{
public bool PredictedLabel { get; set; }
public float Probability { get; set; }
}
var context = new MLContext();
var data = context.Data.LoadFromTextFile<SentimentData>("data.csv", separatorChar: ',');
var pipeline = context.Transforms.Text.FeaturizeText("Features", nameof(SentimentData.Text))
.Append(context.BinaryClassification.Trainers.SdcaLogisticRegression());
var model = pipeline.Fit(data);
var engine = context.Model.CreatePredictionEngine<SentimentData, SentimentPrediction>(model);
var prediction = engine.Predict(new SentimentData { Text = "This product is amazing!" });
Console.WriteLine($"Prediction: {prediction.PredictedLabel}, Probability: {prediction.Probability}");
कब उपयोग करें: जब आपका एप्लिकेशन पहले से .NET पर हो और आपको बिना बाहरी डिपेंडेंसी के ML को सहजता से इंटीग्रेट करना हो।
2. Accord.NET — वैज्ञानिक गणनाओं के लिए क्लासिक लाइब्रेरी
Accord.NET सिग्नल प्रोसेसिंग, सांख्यिकी और मशीन लर्निंग के लिए फ्रेमवर्क का एक सेट है। इसमें 50 से अधिक एल्गोरिदम शामिल हैं: लीनियर रिग्रेशन से लेकर डीप न्यूरल नेटवर्क तक। ML.NET के आने से पहले इस लाइब्रेरी का व्यापक रूप से उपयोग किया जाता था और यह अब भी उन कार्यों के लिए लोकप्रिय है जिनमें बारीक ट्यूनिंग की आवश्यकता होती है।
मुख्य विशेषताएँ:
- लचीले मॉडल: SVM, Random Forest, K-Means, Hidden Markov Models।
- इमेज और ऑडियो प्रोसेसिंग के बिल्ट-इन तरीके (फ़िल्टर, एज डिटेक्टर, FFT)।
- कर्नेल मेथड और प्रोबेबिलिस्टिक मॉडल का सपोर्ट।
- उन्नत गणितीय संचालन के लिए Math.NET Numerics के साथ इंटीग्रेशन।
उदाहरण: आइरिस क्लासिफिकेशन के लिए SVM ट्रेनिंग
using Accord.MachineLearning.VectorMachines;
using Accord.MachineLearning.VectorMachines.Learning;
using Accord.Statistics.Kernels;
// डेटा लोड करना (क्लासिक आइरिस डेटासेट)
double[][] inputs = // ... फीचर मैट्रिक्स (4 कॉलम)
int[] outputs = // ... क्लास लेबल (0,1,2)
var teacher = new MulticlassSupportVectorLearning<Gaussian>()
{
Learner = (param) => new SequentialMinimalOptimization<Gaussian>()
{
Complexity = 100,
Tolerance = 1e-5
}
};
var machine = teacher.Learn(inputs, outputs);
int[] predicted = machine.Decide(inputs);
double error = new ZeroOneLoss(outputs).Loss(predicted);
Console.WriteLine($"त्रुटि: {error:P}");
कब उपयोग करें: रिसर्च कार्यों, इमेज/सिग्नल प्रोसेसिंग और