前缀
前几年已经想在 PHP 语言的领域上,增加【机器学习】以及【人工智能】的一些 lib 或者开源库。但当时,发现PHP还是不太适合做这个事情几个原因:
php cli 运行不是很稳定,当时可能出现各种异常然后就没有然后,程序上处理非常非常仔细。一个参数一个函数的调用有问题,就会导致程序崩溃,崩溃!
当时对php 有一些局限性的思维,只认为它是简单单线程运行。处理速度上不可能有什么突破。【吐槽:只是个人观点而已,大家不用介怀】
【机器学习】没有并行运算框架的基础设施上完全是单机运算只能是试验性意义,不能进行小中型规模应用。当时,并行运算框架以及平台也是 PHP 语言的一个过不了的坑。。。。。。不过,当成熟 swoole 出现的情况下,我知道并行运算框架的出现不再是虚幻的楼阁。【吐槽:只是个人猜测,大家不用介怀】
基于以上三点,就没有再继续深究往这个方向去想了。
这几天突然想看看,PHP在【机器学习】领域上是否有所突破?真的出现了 PHP-ML 这样的Lib 了,而且看上去也实现了很多不同类型的算法。说到这里立马尝尝鲜吧!
在Yii 框架的基础上,PHP-ML 安装
1. compase 安装
个人感觉不喜欢。。。不知道它内部干了一些什么操作。这个事情真的不能强求,人比较古老感觉composer安装有一种不可控以及不踏实感觉。
2. 下载源码安装
2.2. 在 vendor目录下,新建一个文件夹 【php-ai】 -- 【php-ml】,将下载包所有文件复制过去。
2.3. 在 vendor/composer 文件中,autoload_psr4.php 添加下面内容:
return array(
'Phpml\\' => array($vendorDir . '/php-ai/php-ml/src'),
);
2.4. 在 vendor/composer 文件中, autoload_static.php 添加下面内容:
public static $prefixLengthsPsr4 = array (
.......
'P' =>
array (
'Phpml\\' => 6,
),
......
);
public static $prefixDirsPsr4 = array (
.......
'Phpml\\' =>
array (
0 => __DIR__ . '/..' . '/php-ai/php-ml/src',
),
.......
);
到这里安装已经完毕,反正我认为这样是比较方便的。主要问题是不用等。
在Yii2 上开始编写Hello World 的测试代码
1. 在Yii2 高级模板下 console/controller 添加 下面文件 PhpMlTestController.php
namespace console\controllers;
use yii;
use yii\console\Controller;
use Phpml\Classification\KNearestNeighbors;
use Phpml\Regression\LeastSquares;
class PhpMlTestController extends Controller
{
public function actionIndexTest()
{
# 定义样本数据集
$samples = [[12],[14],[17],[19],[22],[28]];
$target = [3.1,3.2,3.5,3.7,4.1,5];
# 实列化最小二乘法类
$regression = new LeastSquares();
# 训练样本
$regression->train($samples,$target);
# 预测
$res = $regression->predict([35]);
echo $res;
}
}
2. 手动运行 yii php-ml-test/index-test, 直接出结果!5.7318725099602