C# للتعلم الآلي: الإمكانيات والقيود

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة: لماذا C# في عالم التعلم الآلي؟

يرتبط عالم التعلم الآلي (ML) ارتباطاً وثيقاً بـ Python و R و Julia. ومع ذلك، كثيراً ما يتساءل المطورون الذين يستخدمون C# ومنصة .NET: هل يمكن استخدام اللغة المألوفة لبناء أنظمة ذكية؟ الإجابة هي نعم، ولكن مع تحفظات. C# ليس الخيار السائد في مجال Data Science، لكن نظام .NET البيئي يقدم أدوات قوية مثل ML.NET و TensorFlow.NET والتكامل مع ONNX. في هذه المقالة، سنستعرض الإمكانيات التي يوفرها C# للتعلم الآلي، وأين يكون استخدامه مبرراً، وأين يكون من الأفضل اللجوء إلى Python.



إمكانيات C# للتعلم الآلي

1. ML.NET — إطار عمل أصلي من Microsoft

ML.NET هو إطار عمل مفتوح المصدر للتعلم الآلي ومتعدد المنصات، تم تطويره خصيصاً لنظام .NET البيئي. يتيح دمج نماذج ML في تطبيقات C# و F# دون الحاجة لتعلم Python. يدعم ML.NET:

  • التصنيف والانحدار (مثل تحليل المشاعر، التنبؤ بالأسعار).
  • التجميع والترتيب.
  • أنظمة التوصية واكتشاف الحالات الشاذة.
  • معالجة الصور (عبر التكامل مع TensorFlow).

مثال على تدريب نموذج بسيط لتصنيف المشاعر النصية:

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; }}

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 = "هذا منتج رائع!" });Console.WriteLine(prediction.PredictedLabel); // True (مشاعر إيجابية)

يناسب ML.NET بشكل ممتاز دمج ML في تطبيقات .NET المؤسسية مثل CRM و ERP وخدمات الويب على ASP.NET Core.



2. التكامل مع TensorFlow و ONNX

يمكن لـ C# العمل مع النماذج المدربة مسبقاً من عالم Python عبر صيغ TensorFlow و ONNX. يتيح ذلك استخدام الشبكات العصبية القوية (مثل ResNet و BERT) مباشرة في تطبيقات .NET.

مثال على تحميل نموذج ONNX للتعرف على الصور:

using Microsoft.ML.OnnxRuntime;using Microsoft.ML.OnnxRuntime.Tensors;

var session = new InferenceSession("model.onnx");var input = new DenseTensor<float>(new float[1 * 3 * 224 * 224], new[] { 1, 3, 224, 224 });var inputs = new List<NamedOnnxValue>{ NamedOnnxValue.CreateFromTensor("input", input)};using var results = session.Run(inputs);var output = results.First().AsTensor<float>();Console.WriteLine($"Predicted class index: {output.ArgMax()}");

بهذه الطريقة، يمكنك تدريب النماذج في Python ونشرها في بيئة الإنتاج باستخدام C#.



3. الأداء وسلامة الأنواع

C# هي لغة مترجمة مع ترجمة JIT (أو AOT عبر Native AOT). توفر:

  • أداء عالياً — للمهام التي تهم فيها سرعة تنفيذ الاستدلال (مثل الأنظمة في الوقت الفعلي).
  • كتابة صارمة للأنواع — أخطاء أقل في وقت التشغيل، وهو أمر حاسم لحلول ML المؤسسية.
  • التزامن وتعدد الخيوط — دعم مدمج لـ async/await ومكتبة Task Parallel Library (TPL) لمعالجة البيانات الكبيرة.


4. أدوات Data Science في Visual Studio

متاحة لـ C#:

المدونات

توصيات الكتب