天天看點

機器學習架構ML.NET學習筆記【9】自動學習

一個通過ML.NET實作自動學習的例子。

一、概述

本篇我們首先通過回歸算法實作一個葡萄酒品質預測的程式,然後通過AutoML的方法再重新實作,通過對比兩種實作方式來學習AutoML的應用。

首先資料集來自于競賽網站kaggle.com的UCI Wine Quality Dataset資料集,通路位址:https://www.kaggle.com/c/uci-wine-quality-dataset/data

 該資料集,輸入為一些葡萄酒的化學檢測資料,比如酒精度等,輸出為品酒師的打分,具體字段描述如下:

   

二、代碼

機器學習架構ML.NET學習筆記【9】自動學習
機器學習架構ML.NET學習筆記【9】自動學習

View Code

 關于泊松回歸的算法,我們在進行人臉顔值判斷的那篇文章已經介紹過了,這個程式沒有涉及任何新的知識點,就不重複解釋了,主要目的是和下面的AutoML代碼對比用的。 

三、自動學習

我們發現機器學習的大緻流程基本都差不多,如:準備資料-明确特征-選擇算法-訓練等,有時我們存在這樣一個問題:該選擇什麼算法?算法的參數該如何配置?等等。而自動學習就解決了這個問題,架構會多次重複資料選擇、算法選擇、參數調優、評估結果這一過程,通過這個過程找出評估效果最好的模型。

全部代碼如下:

機器學習架構ML.NET學習筆記【9】自動學習
機器學習架構ML.NET學習筆記【9】自動學習

四、代碼分析

1、自動學習過程

  ExperimentTime 是允許的試驗時間,progressHandler是一個報告程式,當每完成一種學習,系統就會調用一次報告事件。

 調試結果如下:

學習結束後我們通過Debugger.PrintTopModels列印出所有模型資料: 

 其中CreateRow代碼功能用于排版。調試結果如下:

根據結果可以看到,一些算法被重複試驗,但在使用同一個算法時其配置參數并不一樣,如阙值、深度等。

2、擷取最優模型

 擷取最佳模型後,其評估和儲存的過程和之前代碼一緻。用測試資料評估結果:

看結果識别率約70%左右,這種結果是沒有辦法用于生産的,問題應該是我們沒有找到決定葡萄酒品質的關鍵特征。

五、小結

到這篇文章為止,《ML.NET學習筆記系列》就結束了。學習過程中涉及的原始代碼主要來源于:https://github.com/dotnet/machinelearning-samples 。

該工程中還有一些其他算法應用的例子,包括:聚類、矩陣分解、異常檢測,其大體流程基本都差不多,有了我們這個系列的學習基礎有興趣的朋友可以自己研究一下。

六、資源擷取 

源碼下載下傳位址:https://github.com/seabluescn/Study_ML.NET

回歸工程名稱:Regression_WineQuality

AutoML工程名稱:Regression_WineQuality_AutoML

點選檢視機器學習架構ML.NET學習筆記系列文章目錄

簽名區:

如果您覺得這篇部落格對您有幫助或啟發,請點選右側【推薦】支援,謝謝!

繼續閱讀