在 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)

回归(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 项目算法实现相对基础,文档较少
适合中小型数据集原型不适合大数据或高性能模型训练