hyncica / php8-ml
PHP-ML - PHP的机器学习库
Requires
- php: ^7.2 || ^8.0
Requires (Dev)
- phpbench/phpbench: ^1.0.0
- phpstan/phpstan: ^0.12
- phpstan/phpstan-phpunit: ^0.12
- phpstan/phpstan-strict-rules: ^0.12
- phpunit/phpunit: ^8.0
- symplify/easy-coding-standard: ^9.4
Replaces
- php-ai/php-ml: v0.9.0
This package is auto-updated.
Last update: 2024-09-27 14:19:17 UTC
README
</a>
这是PHP-ML库(https://gitlab.com/php-ai/php-ml)的移植版本,使其能够在PHP 8上运行。原始库由Arkadiusz Kondas (@ArkadiuszKondas)创建。
此移植由Michal Hynčica创建。
移植注意事项
移植过程中完成
- 修复了在创建
Phpml\Classification\Ensemble\Bagging时创建Phpml\Classification\DecisionTree实例的错误 - 在
SetTest::testToArray()中修复了预期结果,以反映PHP 8中引入的稳定排序。 - composer.json中所需的
phpbench/phpbench版本已更改为^1.0.0,以便可以在PHP 8上安装。目前phpbench不可用。它的配置需要更多工作。 - 所需的
symplify/easy-coding-standards版本已提高到^9.4。已将配置转换为较新版本。
失败的测试
当前的测试DecisionStumpTest::testPredictSingleSample失败。这是由于PHP 8中引入了稳定排序。问题在于Phpml\Classification\Classifier\OneVsRest::predictSample方法。对于非二值决策树,此方法为所有分类器获取概率。它使用arsort()对标签按其概率进行排序,然后返回第一个标签作为最可能的输出。
在测试用例中,概率如下所示
[
'0' => 0.0,
'1' => 1.0,
'2' => 1.0,
];
在引入稳定排序之前,具有相同值的元素的顺序没有明确定义,并且由于某种幸运,逆排序数组看起来像这样
[
'2' => 1.0,
'1' => 1.0,
'0' => 0.0,
];
但是,随着稳定排序的引入,逆排序数组看起来像这样
[
'1' => 1.0,
'2' => 1.0,
'0' => 0.0,
];
这就是结果与测试中预期的不同的原因。
安装
目前此库正在开发过程中,但您可以使用Composer安装它
composer require hyncica/php8-ml
其余内容为原始README.md文件的内容。
PHP-ML需要PHP >= 7.2。
简单的分类示例
require_once __DIR__ . '/vendor/autoload.php';
use Phpml\Classification\KNearestNeighbors;
$samples = [[1, 3], [1, 4], [2, 4], [3, 1], [4, 1], [4, 2]];
$labels = ['a', 'a', 'a', 'b', 'b', 'b'];
$classifier = new KNearestNeighbors();
$classifier->train($samples, $labels);
echo $classifier->predict([3, 2]);
// return 'b'
奖项
文档
要了解如何使用PHP-ML,请参阅文档。
示例
示例脚本可在单独的存储库中找到 php-ai/php-ml-examples。
数据集
公共数据集可在单独的存储库中找到 php-ai/php-ml-datasets。
功能
- 关联规则学习
- 分类
- SVC
- k-Nearest Neighbors
- 朴素贝叶斯
- 决策树(CART)
- 集成算法
- Bagging(Bootstrap Aggregating)
- 随机森林
- AdaBoost
- 线性
- Adaline
- 决策树桩
- 感知器
- 逻辑回归
- 回归
- 聚类
- 度量
- 工作流程
- 管道
- 特征联合
- 神经网络
- 交叉验证
- 特征选择
- 预处理
- 特征提取
- 降维
- PCA(主成分分析)
- 核PCA
- LDA(线性判别分析)
- 数据集
- 模型管理
- 数学
贡献
更多关于贡献的信息,请参阅 CONTRIBUTING.md。
许可协议
PHP-ML 在 MIT 许可协议下发布。有关详细信息,请参阅捆绑的 LICENSE 文件。
作者
Arkadiusz Kondas (@ArkadiuszKondas)
