用PHP实现机器学习(php-ml)
概要:简要叙述所要讨论的内容。
我觉得现在对于机器学习已经成为了司空见惯的感觉,
之前稍微接触过一点点,但是……
-
- 【初心者向け】MacでDockerを使ってTensorFlowを試す(Jupyter Notebook)
- 【初心者向け】MacでDockerを使ってTensorFlowの画像認識を試す
虽然只是简单地运行了示例样本,大致了解了其运行方式,但我觉得很难将其应用于实际产品中。
原因是我不懂Python,也不会写!(笑),这是一个很大的障碍。
所以我决定在我平时熟悉的PHP中寻找是否有机器学习的解决方案,并尝试了一个看起来很不错的选项。
准备好了
使用composer安装软件包。
$ sudo composer require php-ai/php-ml
以上 .
样本代码
本文中包含了很多示例代码,下面挑选一些来介绍。
K-邻近算法
k近傍法被认为是几乎所有机器学习算法中最简单的一种。一个对象的分类是通过其附近对象群的投票来决定的(也就是说,在最近的k个对象群中,将最常见的类别分配给该对象)。
-
- k近傍法
- K最近傍分類器
运行示例代码
require_once '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'
多元线性回归
“複合”這個詞用於線性回歸表示使用了兩個以上的樣本參數來預測目標。
- 最小二乗線形回帰
样本代码
require_once 'vendor/autoload.php';
use Phpml\Regression\LeastSquares;
$samples = [[73676, 1996],
[77006, 1998],
[10565, 2000],
[146088, 1995],
[15000, 2001],
[65940, 2000],
[9300, 2000],
[93739, 1996],
[153260, 1994],
[17764, 2002],
[57000, 1998],
[15000, 2000]];
$targets = [2000,
2750,
15500,
960,
4400,
8800,
7100,
2550,
1025,
5900,
4600,
4400];
$regression = new LeastSquares();
$regression->train($samples, $targets);
echo $regression->predict([60000, 1996]);
// return 4094.82
皮尔逊相关性
在衡量两个概率变量之间线性关系的强弱时使用的指标。
通常,简单地提到相关系数即指皮尔逊积矩相关系数。
-
- 相関係数
- 統計値
示例代码
require_once 'vendor/autoload.php';
use Phpml\Math\Statistic\Correlation;
$x = [43, 21, 25, 42, 57, 59];
$y = [99, 65, 79, 75, 87, 82];
Correlation::pearson($x, $y);
// return 0.549
触动
我认为从导入到运行示例代码相当容易使用。如果对PHP熟悉的人可以通过示例代码将学习的数据反映到某种产品中,从而实施机器学习,这可能可行。我确实意识到平时习惯的代码与之有所不同。哈哈
虽然我也在其他资料上看到过,但如果会Python的话,我认为最好使用Python。(TensorFlow,Chainer,Keras等等)
正如这里所说的,我觉得Python正变得越来越受欢迎,所以或许现在是该学习的时候了。(Python成为2017年的霸权语言)
以下是一些可供參考的資料。
-
- php-ml
-
- PHP-ML – PHPのための機械学習ライブラリ
- PHP-MLを使用して気軽に機械学習にトライしてみる