手机版

简单测试和使用PHP机器学习库

时间:2021-09-04 来源:互联网 编辑:宝哥软件园 浏览:

Php-ml是一个用Php编写的机器学习库。虽然我们知道python或C为机器学习提供了更多的库,但实际上大多数库都略显复杂,这让很多初学者感到绝望。

机器学习库Php-ml拥有机器学习和分类等最基本的算法。我们这个小公司做一些简单的数据分析和预测就够了。在我们的项目中,我们应该追求性价比,而不是过度的效率和精度。有些算法和库看起来非常强大,但是如果我们考虑快速上线,而我们的技术人员没有机器学习的经验,那么复杂的代码和配置会拖累我们的项目。如果我们在做一个简单的机器学习应用,学习复杂的库和算法的学习成本显然有点高,而且项目中存在奇怪的问题。我们能解决他们吗?如果需求发生变化怎么办?相信大家都有过这样的经历:在做的时候,程序突然报错,他们想不出原因。在谷歌或者百度上搜索的时候,只找到一个符合条件的问题,问了五十年前的问题,然后给了零回复。

因此,有必要选择最简单、最高效、最具成本效益的方法。Php-ml不慢(快换成php7),准确率不错。毕竟算法都是一样的,php是基于c的,博主最不喜欢的就是对比python、Java和PHP的性能和适用范围。如果真的想要性能,请用C开发,如果真的想追求适用范围,请用C甚至编译。

首先,我们需要下载这个库来使用它。这个库文件可以从github(https://github.com/PHP-ai/PHP-ml)下载。当然,建议composer下载库并自动配置。

下载后,我们可以看看这个库的文档。这些文件都是简单的小例子。我们可以自己创建一个文件并尝试一下。很容易理解。接下来,让我们用实际数据来测试一下。其中一个数据集是鸢尾雄蕊的数据集,另一个丢失了,不知道是关于什么的。

鸢尾雄蕊数据有三种不同的分类:

未知数据集,小数点标记为逗号,因此在计算时需要对其进行处理:

我们先处理未知的数据集。首先,我们未知数据集的文件名是data.txt,这个数据集可以绘制成x-y折线图。因此,我们首先将原始数据绘制成折线图。因为x轴比较长,我们只需要看清楚它的大致形状:

使用php绘制jpgraph库,代码如下:

?phpinclude_once '。/src/jpgraph . PHP ';包括一次。/src/jpgraph _ line . PHP ';$g=新Graph(1920,1080);//jpgraph绘制操作$ g-SetScale(' text int ');$g-title-Set('数据');//文件处理$file=fopen('data.txt ',' r ');$ label=array();while(!feof($file)){ $data=explode(',fgets($ file));$data[1]=str_replace(“,”,“.”,$ data[1]);//数据处理:数据中的逗号更正为小数点$ labels[(int)$ Data[0]]=(float)$ Data[1];//这里数据是按键值存储在数组中的,方便我们按key} ksort($labels)排序;//键的大小按$x=array()排序;//X轴$y=数组()的表示数据;//y轴表示数据foreach ($标签为$ key=$ value) {array _ push ($ x,$ key);array_push($y,$ value);} $ line plot=new line plot($ y);$ g-xaxis-SetTicklabels($ x);$ LinePlot-set Legender('数据');$ g-Add($ line plot);$ g-Stroke();用这张原图做对比,我们接下来就来学习。我们使用php-ml中的最小平方来学习。我们测试的输出需要存储在一个文件中,这样我们就可以绘制一个比较图。学习代码如下:

?php需要'供应商/autoload . PHP ';使用Phpml \回归\最小平方;使用Phpml \ ModelManager$file=fopen('data.txt ',' r ');$ samples=array();$ label=array();$ I=0;while(!feof($file)){ $data=explode(',fgets($ file));$ samples[$ I][0]=(int)$ data[0];$data[1]=str_replace(“,”,“.”,$ data[1]);$ labels[$ I]=(float)$ data[1];$ I;} fc lose($ file);$ revolution=new least squares();$回归-训练($样本,$标签);//这个A数组是根据原始数据处理后的X值给出的,用于测试。$a=[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,29,30,31,37,40,41,45,48,53,55,57,60,61,108,124];for($ I=0;$i计数($ a);$ I){ file _ put _ contents(' put put . txt ',($ revolution-predict([$ a[$ I]]))。\n ',FILE _ APPEND);//通过追加的方式将数据保存在文件中,我们将读出文件中存储的数据,绘制一个图形,先粘贴最终的渲染:

代码如下:

?phpinclude_once '。/src/jpgraph . PHP ';包括一次。/src/jpgraph _ line . PHP ';$g=新Graph(1920,1080);$ g-SetScale(' text int ');$g-title-Set('数据');$file=fopen('putput.txt ',' r ');$ y=array();$ I=0;while(!feof($ file)){ $ y[$ I]=(float)(fgets($ file));$ I;} $x=[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,29,30,31,37,40,41,45,48,53,55,57,60,61,108,124];$linePlot=新的line plot($ y);$ g-xaxis-SetTicklabels($ x);$ LinePlot-set Legender('数据');$ g-Add($ line plot);$ g-Stroke();可以发现,图形的出入比较大,尤其是锯齿状图形较多的部分。然而,这毕竟是40组数据,我们可以看到大致的图形趋势是一致的。在做这种学习时,当数据量较低时,一般库的准确率很低。为了获得更高的精度,需要大量的数据,并且需要10,000多条数据。如果不满足这个数据要求,我们使用任何库都是没有用的。因此,在机器学习的实践中,真正难的不是精度低、配置复杂等技术问题,而是数据量不足或质量太低(一组数据中无用数据太多)。在进行机器学习之前,还需要对数据进行预处理。

接下来,我们测试雄蕊数据。总共有三类。由于我们下载了csv数据,所以可以使用php-ml提供的操作csv文件的官方方法。这是一个分类问题,所以我们选择库提供的SVC算法进行分类。我们将Iris.csv命名为雄蕊数据的文件名,代码如下:

?PHP require ' vendor/autoload . PHP ';使用Phpml \分类\ SVC使用Phpml \ SupportVectorMachine \ Kernel;使用Phpml \ Dataset \ CsvDataset$ dataset=new CsvDataset(' Iris . CSV ',4,false);$分类器=新的SVC(Kernel:LINEAR,$ cost=1000);$分类器-train($dataset-getSamples(),$ dataset-getTargets());echo $分类器-predict([$argv[1],$argv[2],$argv[3],$ argv[4]]);//$argv是命令行参数。使用命令行调试这个程序容易吗?只用了12行代码就完成了。接下来,让我们测试一下。根据上面贴的图,当我们输入5 3.3 1.4 0.2时,输出应该是Iris-setosa。我们来看看:

看,至少我们输入一个原始数据,得到正确的结果。但是,我们输入的原始数据集中没有的数据呢?让我们测试两组:

根据之前贴出的两张图片的数据,我们输入的数据在数据集中并不存在,但根据我们的初步观察,分类是合理的。

因此,这个机器学习库对大多数人来说已经足够了。鄙视这个库的人和大谈业绩的人,基本都不是大牛。真正的大牛一直忙于赚钱,或者做学术研究等等。与其夸夸其谈,不如掌握算法,了解真相和奥秘。当然,这个库不推荐给大项目,只推荐小项目或者个别项目。

Jpgraph只依赖GD库,下载引用后就可以使用了,大量的代码都致力于绘制图形和初始数据处理。学习代码并不复杂,因为库的包装非常好。需要所有代码或测试数据集的小伙伴可以留言或私信等。我提供完整的代码并解压缩以供使用

以上php机器学习库php-ml的简单测试和使用方法,是边肖分享的全部内容。希望能给大家一个参考,支持我们。

版权声明:简单测试和使用PHP机器学习库是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。

相关文章推荐