PHP機器學習庫php ml的簡單測試和使用

2021-09-20 16:35:08 字數 3348 閱讀 8517

iris花蕊部分資料,有三種不同的分類:

不知名資料集,小數點被打成了逗號,所以計算時還需要處理一下:

我們先處理不知名資料集。首先,我們的不知名資料集的檔名為data.txt。而這個資料集剛好可以先繪製成x-y折線圖。所以,我們先將原資料繪製成乙個折線圖。由於x軸比較長,所以我們只需要看清楚它大致的形狀即可:

繪製採用了php的jpgraph庫,**如下:

1 <?php  2 include_once './src/jpgraph.php'; 3 include_once './src/jpgraph_line.php'; 4  5 $g = new graph(1920,1080);//jpgraph的繪製操作 6 $g->setscale("textint"); 7 $g->title->set('data'); 8  9 //檔案的處理10 $file = fopen('data.txt','r');11 $labels = array();12 while(!feof($file))  

17 18 ksort($labels);//按鍵的大小排序19 20 $x = array();//x軸的表示資料21 $y = array();//y軸的表示資料22 foreach($labels as $key=>$value)26 27 28 $lineplot = new lineplot($y);29 $g->xaxis->setticklabels($x);  

30 $lineplot->setlegend('data');31 $g->add($lineplot);32 $g->stroke();

在有了這個原圖做對比,我們接下來進行學習。我們採用php-ml中的leastsquars來進行學習。我們測試的輸出需要存入檔案,方便我們可以畫乙個對比圖。學習**如下:

1 <?php  2     require 'vendor/autoload.php'; 3  4     use phpml\regression\leastsquares; 5     use phpml\modelmanager; 6  7     $file = fopen('data.txt','r'); 8     $samples = array(); 9     $labels = array();10     $i = 0;11     while(!feof($file))   

之後,我們將存入檔案的資料讀出來,繪製乙個圖形,先貼最後的效果圖:

可以發現,圖形出入還是比較大的,尤其是在圖形鋸齒比較多的部分。不過,這畢竟是40組資料,我們可以看出,大概的圖形趨勢是吻合的。一般的庫在做這種學習時,資料量低的情況下,準確度都非常低。要達到比較高的精度,需要大量的資料,萬條以上的資料量是必要的。如果達不到這個資料要求,那我們使用任何庫都是徒勞的。所以,機器學習的實踐中,真正難的不在精度低、配置複雜等技術問題,而是資料量不夠,或者質量太低(一組資料中無用的資料太多)。在做機器學習之前,對資料的預先處理也是必要的。

1 <?php  2 require 'vendor/autoload.php'; 3  4 use phpml\classification\svc; 5 use phpml\supportvectormachine\kernel; 6 use phpml\dataset\csvdataset; 7  8 $dataset = new csvdataset('iris.csv' , 4, false); 9 $classifier = new svc(kernel::linear,$cost = 1000);10 $classifier->train($dataset->getsamples(),$dataset->gettargets());11 12 echo $classifier->predict([$ar**[1],$ar**[2],$ar**[3],$ar**[4]]);//$ar**是命令列引數,除錯這種程式使用命令列較方便
是不是很簡單?短短12行**就搞定了。接下來,我們來測試一下。根據我們上面貼出的圖,當我們輸入5  3.3  1.4  0.2的時候,輸出應該是iris-setosa。我們看一下:

看,至少我們輸入乙個原來就有的資料,得到了正確的結果。但是,我們輸入原資料集中沒有的資料呢?我們來測試兩組:

由我們之前貼出的兩張圖的資料看,我們輸入的資料在資料集中並不存在,但分類按照我們初步的觀察來看,是合理的。

所以,這個機器學習庫對於大多數的人來說,都是夠用的。而大多數鄙視這個庫鄙視那個庫,大談效能的人,基本上也不是什麼大牛。真正的大牛已經忙著撈錢去了,或者正在做學術研究等等。我們更多的應該是掌握演算法,了解其中的道理和玄機,而不是夸夸其談。當然,這個庫並不建議用在大型專案上,只推薦小型專案或者個人專案等。

極簡機器學習入門

機器學習是人工智慧的子集。人工智慧是最早出現的,也是最大 最外側的矩形 其次是機器學習,稍晚一點 最內側,是深度學習,當今人工智慧大 的核心驅動。人工智慧可以分為強人工智慧和弱人工智慧。機器學習是一種實現人工智慧的方法。機器學習最基本的做法,是使用演算法來解析資料 從中學習,然後對真實世界中的事件做...

機器學習 Keras 簡例

安裝 pip install keraskeras 有兩個 backend,也就是 keras 基於什麼東西來做運算 keras 的兩個 backend,乙個是 theano,乙個是 tensorflow 每次當我們 import keras 的時候,就會看到螢幕顯示當前使用的 backend im...

機器學習庫

一 前提 在pthon下做機器學習,需要科學計算包和繪相簿的支援,科學計算則是numpy或scipy,似乎numpy更流行些。畫圖工具包則必定為matplotlib。這些 都是開源 免費使用的,選擇這些庫主要的原因是做線性代數中的矩陣計算極為便利,而且效率比自己開發高的多 二 機器學習庫 1 sci...