
在 PHP 中进行机器学习并不像在 Python 中那么流行,但借助 PHP-ML(PHP Machine Learning)库,仍然可以完成许多常见的机器学习任务,如分类、聚类、回归等。
🤖 一、什么是 PHP-ML?
PHP-ML 是一个基于对象的 PHP 机器学习库,提供了分类器、回归器、聚类算法、数据预处理和模型持久化等功能。
GitHub 地址:https://github.com/php-ai/php-ml
📦 二、安装 PHP-ML
使用 Composer 安装:
composer require php-ai/php-ml
🧪 三、基础分类示例:鸢尾花分类(Iris)
use Phpml\Classification\KNearestNeighbors;
// 训练数据(特征值)
$samples = [
[5.1, 3.5, 1.4, 0.2],
[4.9, 3.0, 1.4, 0.2],
[6.2, 3.4, 5.4, 2.3],
[5.9, 3.0, 5.1, 1.8]
];
// 标签(分类)
$labels = ['setosa', 'setosa', 'virginica', 'virginica'];
// 创建分类器
$classifier = new KNearestNeighbors();
$classifier->train($samples, $labels);
// 预测
$predicted = $classifier->predict([5.8, 2.7, 5.1, 1.9]);
echo "预测结果: " . $predicted; // 输出 virginica
🧠 四、支持的算法概览
分类器(Classification)
KNearestNeighbors
SVC
(基于 Support Vector Machine)DecisionTree
NaiveBayes
RandomForest
回归(Regression)
SVR
LeastSquares
聚类(Clustering)
KMeans
🧹 五、数据预处理模块
1. 标准化
use Phpml\Preprocessing\StandardScaler;
$scaler = new StandardScaler();
$scaler->fit($samples);
$scaler->transform($samples);
2. 特征提取(文本向量化)
use Phpml\FeatureExtraction\TokenCountVectorizer;
use Phpml\Tokenization\WhitespaceTokenizer;
$vectorizer = new TokenCountVectorizer(new WhitespaceTokenizer());
$samples = ['PHP is great', 'PHP for machine learning'];
$vectorizer->fit($samples);
$vectorizer->transform($samples); // 输出词频向量
💾 六、模型保存与加载(持久化)
use Phpml\ModelManager;
// 保存模型
$modelManager = new ModelManager();
$modelManager->saveToFile($classifier, 'model.knn');
// 加载模型
$classifier = $modelManager->restoreFromFile('model.knn');
🎯 七、适合用 PHP-ML 的场景
场景 | 说明 |
---|---|
简单文本分类 | 如垃圾邮件识别、评论分类等 |
图像或数字分类(小规模) | 小规模图像特征分类 |
推荐系统原型 | 基于 KNN 的用户推荐 |
教学或演示 | 在 Web 环境中嵌入 ML 学习流程 |
🚫 不推荐使用 PHP-ML 的场景
- 需要 GPU 加速或大规模训练
- 深度学习(建议使用 TensorFlow / PyTorch)
- 需要大量科学计算和矩阵操作的复杂模型
📌 总结:PHP-ML 的优劣势
优点 | 缺点 |
---|---|
安装简单,API直观 | 训练速度慢,不支持复杂神经网络结构 |
可嵌入现有 PHP 项目 | 算法实现相对基础,文档较少 |
适合中小型数据集原型 | 不适合大数据或高性能模型训练 |