一個通過ML.NET實作自動學習的例子。
一、概述
本篇我們首先通過回歸算法實作一個葡萄酒品質預測的程式,然後通過AutoML的方法再重新實作,通過對比兩種實作方式來學習AutoML的應用。
首先資料集來自于競賽網站kaggle.com的UCI Wine Quality Dataset資料集,通路位址:https://www.kaggle.com/c/uci-wine-quality-dataset/data
該資料集,輸入為一些葡萄酒的化學檢測資料,比如酒精度等,輸出為品酒師的打分,具體字段描述如下:
二、代碼

View Code
關于泊松回歸的算法,我們在進行人臉顔值判斷的那篇文章已經介紹過了,這個程式沒有涉及任何新的知識點,就不重複解釋了,主要目的是和下面的AutoML代碼對比用的。
三、自動學習
我們發現機器學習的大緻流程基本都差不多,如:準備資料-明确特征-選擇算法-訓練等,有時我們存在這樣一個問題:該選擇什麼算法?算法的參數該如何配置?等等。而自動學習就解決了這個問題,架構會多次重複資料選擇、算法選擇、參數調優、評估結果這一過程,通過這個過程找出評估效果最好的模型。
全部代碼如下:

四、代碼分析
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學習筆記系列文章目錄
簽名區:
如果您覺得這篇部落格對您有幫助或啟發,請點選右側【推薦】支援,謝謝!