俗話說的好,準確度不夠,資料前處理來湊,每一種分類的模型或演算法都有其特殊的優缺點,有些訓練很快但是預測很慢。因此我們可以一些技巧來讓機器學習的準確度與速度上升達到1+1大於二的效果,也就是pipline,把前處理整合到模型當中。
pipline就是串接前處理與機器學習的模型,因此可以作出一套end-to-end了模型訓練,適合用於解決一個系統性的問題。
請參考文件,我們先前處理(Normalizer)然後再作NN,我們把他們結合再一起。
use Phpml\Classification\SVC; use Phpml\Pipeline;
use Phpml\Preprocessing\Imputer;
use Phpml\Preprocessing\Normalizer;
use Phpml\Preprocessing\Imputer\Strategy\MostFrequentStrategy;
$transformers = [ new Normalizer()];
$estimator = new SVC(); $samples = [ [1, -1, 2], [2, 0, null], [null, 1, -1], ];
$targets = [ 4, 1, 4, ];
$pipeline = new Pipeline($transformers, $estimator); // 將正規化與SVR串接。
$pipeline->train($samples, $targets);
$predicted = $pipeline->predict([[0, 0, 0]]);
不要小看只是前處理與機器學習整合,整合在一起後,如果一直需要執行,省下的時間非常可觀,尤其如果前處理跟機器學習間有人工部分。