مقدمة: لماذا C# للتعلم الآلي؟
يرتبط عالم التعلم الآلي (ML) تقليديًا بلغة Python. ومع ذلك، تقدم بيئة C# ومنصة .NET بدائل قوية، خاصة للمطورين الذين يعملون بالفعل في هذه البيئة. إذا كنت على دراية بـ C# وترغب في تطبيق مهاراتك في مجال التعلم الآلي، فهذه المقالة لك.
سنستعرض المكتبات الرئيسية، نقاط القوة والضعف في C# في سياق التعلم الآلي، بالإضافة إلى تقديم أمثلة عملية للكود. ستتعرف على متى يمكن أن يكون C# الخيار الأفضل، ومتى يجب عليك اللجوء إلى Python.
المكتبات الرئيسية لـ C# للتعلم الآلي
تتطور بيئة .NET بنشاط نحو التعلم الآلي. فيما يلي ثلاث أدوات رئيسية يجب أن يعرفها كل مبتدئ.
1. ML.NET — المكتبة الأصلية من Microsoft
ML.NET هي مكتبة تعلم آلي مفتوحة المصدر ومجانية ومتعددة المنصات لـ .NET. تتيح لك إضافة التعلم الآلي إلى التطبيقات دون الحاجة إلى مغادرة بيئة C#.
الإمكانيات الرئيسية:
- التصنيف (مثل تحديد البريد العشوائي في الرسائل)
- الانحدار (التنبؤ بالأسعار)
- التجميع (تقسيم العملاء)
- الترتيب والتوصيات
- اكتشاف الحالات الشاذة
- العمل مع الصور (التعلم بالنقل)
مثال: نموذج بسيط لتصنيف المشاعر في النص.
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", "Text") .Append(context.BinaryClassification.Trainers.SdcaLogisticRegression());var model = pipeline.Fit(data);var predictionEngine = context.Model.CreatePredictionEngine<SentimentData, SentimentPrediction>(model);var prediction = predictionEngine.Predict(new SentimentData { Text = "C# للتعلم الآلي — رائع!" });Console.WriteLine($"المشاعر: {(prediction.PredictedLabel ? "إيجابية" : "سلبية")}");2. TensorFlow.NET — جسر إلى TensorFlow
TensorFlow.NET (TF.NET) يوفر روابط لإطار عمل Google الشهير TensorFlow. يتيح لك ذلك استخدام جميع إمكانيات TensorFlow (الشبكات العصبية، التعلم العميق) من C#.
المزايا:
- الوصول إلى النماذج الجاهزة (مثل التعرف على الصور)
- إمكانية الضبط الدقيق (fine-tuning)
- أداء عالٍ على GPU
مثال: تحميل نموذج مُدرَّب مسبقًا لتصنيف الصور.
using Tensorflow;using static Tensorflow.Binding;
// تحميل نموذج Inception (بافتراض وجود ملفات النموذج في المجلد)var graph = new Graph().as_default();graph.Import("inception_v3.pb");
var session = new Session(graph);var tensor = ImageUtil.CreateTensorFromImageFile("cat.jpg");var output = session.run(outputs: graph.OperationByName("output"), inputs: graph.OperationByName("input"), inputTensors: new[] { tensor });Console.WriteLine($"الفئة المتوقعة: {output[0].argmax()}");3. Accord.NET ومجموعة SciSharp
Accord.NET هي مكتبة أقدم ولكنها لا تزال مفيدة، وتوفر مجموعة واسعة من الخوارزميات (SVM، الشبكات العصبية، الإحصاء). SciSharp هو مجتمع يقوم بنقل مكتبات Python الشهيرة (NumPy، Pandas، Scikit-learn) إلى C#.
للمطور المبتدئ، نوصي بالبدء بـ ML.NET، لأنه الأكثر تكاملاً مع بيئة .NET ويتمتع بدعم ممتاز.