التعلم الآلي في PHP: حقيقة أم حل وسط؟
تقليديًا، يرتبط التعلم الآلي (ML) بلغات مثل Python أو R أو Julia. ومع ذلك، فإن PHP، كونها واحدة من أكثر اللغات شيوعًا لتطوير الويب، تمتلك أيضًا نظامًا بيئيًا من المكتبات لتعلم الآلة. استخدام PHP للتعلم الآلي هو حل وسط: ستخسر في الأداء وعدد النماذج الجاهزة مقارنة بـ Python، لكنك ستحصل على تكامل سلس مع تطبيقات الويب، ومكدس تقني موحد، والقدرة على تنفيذ خوارزميات تعلم آلي بسيطة بسرعة دون تشغيل خدمات مصغرة.
في هذه المقالة، سنستعرض المكتبات الرئيسية للتعلم الآلي في PHP، وإمكانياتها، وأمثلة على استخدامها.
1. PHP-ML (PHP Machine Learning)
PHP-ML هي المكتبة الأكثر شيوعًا لتعلم الآلة في PHP. لا تتطلب تبعيات خارجية وهي مكتوبة بالكامل بلغة PHP. تنفذ الخوارزميات الكلاسيكية: التصنيف، الانحدار، التجميع، تقليل الأبعاد، ومقاييس التقييم.
الإمكانيات:
- التصنيف: Naive Bayes، SVM، k-Nearest Neighbors، Decision Tree
- الانحدار: Linear Regression، SVR
- التجميع: k-Means، DBSCAN
- المعالجة المسبقة للبيانات: التطبيع، التوحيد القياسي
- المقاييس: accuracy، precision، recall، F1-score
مثال: تصنيف زهور القزحية (Iris)
require_once __DIR__ . '/vendor/autoload.php';
use Phpml\\Classification\\KNearestNeighbors;use Phpml\\Dataset\\Demo\\IrisDataset;
$dataset = new IrisDataset();$samples = $dataset->getSamples();$labels = $dataset->getTargets();
$classifier = new KNearestNeighbors(3);$classifier->train($samples, $labels);
// توقع لمثال جديد (طول الكأس، عرض الكأس، طول البتلة، عرض البتلة)$newSample = [5.1, 3.5, 1.4, 0.2];$predicted = $classifier->predict($newSample);
echo "الفئة المتوقعة: " . $predicted; // 'Iris-setosa'2. Rubix ML
Rubix ML هي مكتبة أكثر حداثة وقوة. على عكس PHP-ML، فهي تدعم الشبكات العصبية، وتعزيز التدرج، وطرق التجميع، والعمل مع مجموعات البيانات الكبيرة من خلال المولدات (lazy evaluation).
الميزات:
- الشبكات العصبية (Multilayer Perceptron، CNN عبر التحويل)
- التجميعات: Random Forest، Gradient Boosted Trees
- خطوط أنابيب معالجة البيانات (pipelines)
- دعم السمات الفئوية و One-Hot Encoding
- تصدير النماذج بتنسيق PHP المتسلسل
مثال: الانحدار الخطي مع خط أنابيب
require_once __DIR__ . '/vendor/autoload.php';
use Rubix\\ML\\Datasets\\Labeled;use Rubix\\ML\\Regressors\\Ridge;use Rubix\\ML\\Transformers\\NumericStringConverter;use Rubix\\ML\\Transformers\\MinMaxNormalizer;use Rubix\\ML\\Pipeline;
// إنشاء مجموعة بيانات$samples = [[1], [2], [3], [4], [5]];$labels = [1.5, 2.8, 4.1, 5.9, 7.2];
$dataset = new Labeled($samples, $labels);
// إنشاء خط أنابيب$estimator = new Pipeline([ new NumericStringConverter(), new MinMaxNormalizer(),], new Ridge(1.0));
$estimator->train($dataset);
// توقع$prediction = $estimator->predict([[6]]);echo "القيمة المتوقعة: " . $prediction[0]; // ~8.33. Keras PHP (TensorFlow PHP Binding)
للعمل مع الشبكات العصبية العميقة في PHP، يمكن استخدام Keras PHP - وهي غلاف لمكتبة Keras/TensorFlow بلغة Python. في الواقع، هو جسر يشغل نصوص Python من PHP. ليس حلاً خالصًا بلغة PHP، لكنه يسمح باستخدام كامل قوة TensorFlow.
مثال: تحميل نموذج مدرب مسبقًا
use KerasPHP\\Keras;
$keras = new Keras();
// تحميل النموذج من ملف .h5$model = $keras->load_model('/path/to/model.h5');
// تحضير البيانات (مصفوفة)$input = [[0.5, 0.2, 0.1]];
// توقع$result =