php-ml_GitHub - qieangel2013/phpml: 基于PHP-ML库实现机器学习

这篇博客介绍了如何使用PHP-ML库实现机器学习,包括分类学习(SVM、KNN、NaiveBayes),关联性规则学习(Apriori)和回归预测学习(LeastSquares、SVR)。通过实例展示了在不同场景下的应用,如身高体重数据的性别预测和股票价格预测。
摘要由CSDN通过智能技术生成

phpml

基于PHP-ML库实现机器学习

基于语言学习

基于语言学习,根据语言编码实现学习

分类学习

require_once 'vendor/autoload.php';

use Phpml\Classification\SVC;

use Phpml\SupportVectorMachine\Kernel;

/*

在模式识别领域中,最近邻居法(k-Nearest Neighbors algorithm,KNN算法,又译K-近邻算法)是一种用于分类和回归的非参数统计方法。

k-NN分类

输入:包含特征空间中的 k 个最接近的训练样本。

输出:一个分类族群。

k-NN回归

输入:包含特征空间中的 k 个最接近的训练样本。

输出:该对象的属性值。该值是其 k 个最近邻居的值的平均值。

*/

use Phpml\Classification\KNearestNeighbors;

/*

基于应用贝叶斯定理(naive)强劲的独立假设之间的特性

*/

use Phpml\Classification\NaiveBayes;

/*

说一个班级里面有三个男生(男生1、男生2,男生3),三个女生(女生1、女生2,女生3),其中

男生1 身高:176cm 体重:70kg;

男生2 身高:180cm 体重:80kg;

男生2 身高:186cm 体重:86kg;

女生1 身高:161cm 体重:45kg;

女生2 身高:163cm 体重:47kg;

女生3 身高:165cm 体重:49kg;

如果我们将男生定义为1,女生定义为-1(这里定义数值无所谓,你可以定义男生8,女生6,只要是数值就行)

*/

/*将上面的数据放入$samples数组里

*/

$samples = [[176, 70], [180, 80], [161, 45], [163, 47], [186, 86], [165, 49]];

/*

在labels中存入男女生类别标签(1、-1)

*/

$labels = [1, 1, -1, -1, 1, -1];

/*

我们现在采用libsvm来支持分类

下面我们采用线性分类

*/

$classifier = new SVC(Kernel::LINEAR, $cost = 1000);

/* 对其进行训练 */

$classifier->train($samples, $labels);

/*

下面我们采用近邻算法来实现机器学习分类

*/

$classifier = new KNearestNeighbors();

$classifier->train($samples, $labels);

/*

下面我们采用贝叶斯来分类器实现机器学习分类

*/

$classifier = new NaiveBayes();

$classifier->train($samples, $labels);

/* 预测 */

echo $classifier->predict([190, 85]);

// return 1 代表男生

print_r($classifier->predict([[152, 44], [176, 78]]));

// return [-1, 1] 代表女生、男生

exit;

关联性规则学习

require_once 'vendor/autoload.php';

use Phpml\Association\Apriori;

/*

一个电商网站 统计6位用户购买习惯

A用户喜欢购买 衣服,鞋子, 辣条

B用户喜欢购买 辣条, 面条, 席子

C用户喜欢购买 衣服,席子, 面条

D用户喜欢购买 衣服,面条,鞋子

E用户喜欢购买 衣服, 面条, 辣条

F用户喜欢购买 衣服, 鞋子, 辣条

*/

/*将上面的数据放入$samples数组里

*/

$samples = [['衣服', '鞋子', '辣条'], ['辣条', '面条', '席子'], ['衣服','席子', '面条'], ['衣服','面条','鞋子'],['衣服', '面条', '辣条'],['衣服', '鞋子', '辣条']];

$labels = [];

/*

参数

support支持度

confidence 自信度

*/

$associator = new Apriori($support = 0.5, $confidence = 0.5);

/* 对其进行训练 */

$associator->train($samples, $labels);

/*

假设又有一位G用户,他购买了衣服,

电商网站想要通过他购买的衣服给她推荐别的产品

以便他购买更多的商品

系统会根据以往用户的训练数据推断出G用户可能需要的商品

*/

print_r($associator->predict(['衣服']));

//return Array ( [0] => Array ( [0] => 鞋子 ) [1] => Array ( [0] => 辣条 ) [2] => Array ( [0] => 面条 ) )

/*

总结:这种算法根据一些行为来推断下一个行为

*/

回归预测学习

require_once 'vendor/autoload.php';

use Phpml\Regression\LeastSquares;

use Phpml\Regression\SVR;

/*

我们现在对一支股票进行预测

张氏股从2010年开始

2010年单股价123.5$

2011年单股价124.5$

2012年单股价134.5$

2013年单股价144$

2014年单股价144.7$

2015年单股价154.5$

2016年单股价184.5$

我们根据每年的股价涨势计算出

2010年 涨1.1%

2011年 涨1.2%

2012年 涨2.1%

2013年 涨3.1%

2014年 涨3.3%

2015年 涨4.1%

2016年 涨5.1%

*/

/*将上面的数据放入$samples数组里

*/

$samples = [[2010], [2011], [2012], [2013], [2014], [2015],[2016]];

/*

在labels中存入每年的股价涨势

*/

$labels = [1.1, 1.2, 2.1, 3.1, 3.3, 4.1,5.1];

/*

下面我们采用最小二乘法逼近线性模型进行预测

*/

$regression = new LeastSquares();

/*

下面我们采用libsvm的向量回归进行预测

*/

$regression = new SVR(Kernel::LINEAR);

/* 对其进行训练 */

$regression->train($samples, $labels);

/*

如果我们想知道2017年张氏股的涨势是什么样的,我们用最小二乘法逼近线性模型来进行预测

*/

print_r($regression->predict([2017]));

// return 5.53667

/*

我们预测的结果是涨势5.53%

该实例采用回归的最小二乘法算法和向量回归来进行预测的

*/

项目地址

github:https://github.com/qieangel2013/phpml

码云:https://gitee.com/qieangel2013/phpml

pw.jpg

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值