يعد التعلم الآلي مجالًا واسعًا ومثيرًا، ويحظى باهتمام المتخصصين في العديد من المجالات. لسوء الحظ، بالنسبة للمبرمجين والمتحمسين لـ C++، يبدو أن هناك نقصًا في الدعم في مجال التعلم الآلي. لملء هذا الفراغ وإعطاء C++ موطئ قدم حقيقي في مجال تعلم الآلة، تم إنشاء هذه المكتبة. الهدف من هذه المكتبة هو أن تكون بمثابة مفترق طرق بين المطورين ذوي المستوى المنخفض ومهندسي التعلم الآلي.
ابدأ بتنزيل ملفات الرأس الخاصة بمكتبة ML++. يمكنك القيام بذلك عن طريق استنساخ المستودع واستخراج دليل MLPP بداخله:
git clone https://github.com/novak-99/MLPP
بعد ذلك، قم بتنفيذ البرنامج النصي shell "buildSO.sh":
sudo ./buildSO.sh
بعد القيام بذلك، احتفظ بملفات مصدر ML++ في دليل محلي وقم بتضمينها بهذه الطريقة:
# include " MLPP/Stat/Stat.hpp " // Including the ML++ statistics module.
int main (){
...
}
أخيرًا، بعد الانتهاء من إنشاء المشروع، قم بتجميعه باستخدام g++:
g++ main.cpp /usr/local/lib/MLPP.so --std=c++17
يرجى ملاحظة أن ML++ يستخدم نوع البيانات std::vector<double>
لمحاكاة المتجهات، ونوع البيانات std::vector<std::vector<double>>
لمحاكاة المصفوفات.
ابدأ بتضمين ملف الرأس المعني الذي تختاره.
# include " MLPP/LinReg/LinReg.hpp "
بعد ذلك، قم بإنشاء كائن من الفئة. لا تنس تمرير مجموعة الإدخال ومجموعة الإخراج كمعلمات.
LinReg model (inputSet, outputSet);
وبعد ذلك، اتصل بالمحسن الذي ترغب في استخدامه. بالنسبة للمحسنات التكرارية، مثل النسب المتدرج، قم بتضمين معدل التعلم ورقم العصر وما إذا كان سيتم استخدام لوحة واجهة المستخدم أم لا.
model.gradientDescent( 0.001 , 1000 , 0 );
عظيم، أنت الآن جاهز للاختبار! لاختبار مثيل اختبار فردي، استخدم الوظيفة التالية:
model.modelTest(testSetInstance);
سيعيد هذا التنبؤ المفرد للنموذج لهذا المثال.
لاختبار مجموعة اختبار كاملة، استخدم الوظيفة التالية:
model.modelSetTest(testSet);
ستكون النتيجة تنبؤات النموذج لمجموعة البيانات بأكملها.
ML++، مثل معظم أطر العمل، ديناميكية ومتغيرة باستمرار. وهذا مهم بشكل خاص في عالم تعلم الآلة، حيث يتم تطوير خوارزميات وتقنيات جديدة يومًا بعد يوم. فيما يلي بعض الأشياء التي يتم تطويرها حاليًا لـ ML++:
- الشبكات العصبية التلافيفية
- حبات SVMs
- دعم الانحدار المتجه
لقد ساعدتني العديد من المواد المختلفة في طريق إنشاء ML++، وأود أن أشيد بالعديد منها هنا. كانت هذه المقالة التي كتبها TutorialsPoint مفيدة جدًا عند محاولة تطبيق محدد المصفوفة، وكانت هذه المقالة التي كتبها GeeksForGeeks مفيدة جدًا عند محاولة أخذ المصفوفة المجاورة والمعكوسة.