iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 29
0
Data Technology

Microsoft R Solution系列 第 29

Day29 – R Last Mile to Web Part4 Azure Machine Learning Studio Plot 下篇

被上篇搞到快瘋了, Google了半天, 沒看到有人討論這個問題, 只好自己來亂試了, 之前在Web Service主頁面, 有一個BATCH EXECUTION如下, 還沒試過, 先來看看這個Batch能做甚麼事? 所以一樣點選Test
https://ithelp.ithome.com.tw/upload/images/20180116/201033339TgtXKtjsn.png

之後導到測試頁面, 選擇之前建立好的Storage account, 按下test
https://ithelp.ithome.com.tw/upload/images/20180116/20103333pbRy8UObLE.png

執行完畢後, 可以點選output1, 下載csv檔
https://ithelp.ithome.com.tw/upload/images/20180116/20103333n40oKygtxv.png

打下載後的csv, 打開來看一下
https://ithelp.ithome.com.tw/upload/images/20180116/20103333SIByh9Ng3Y.png

由上述的csv可以發現, 一樣是類似JSON格式, 一樣有Base64的字串, 所以BATCH EXECUTION應該是把所有的結果, 寫成一個csv回傳, 再來看一下Sample Code如下
https://ithelp.ithome.com.tw/upload/images/20180116/20103333S1dJz7yRLy.png

看完程式碼, 最後產生的csv, 其實會被放到Azure的Storage上, 所以如果要存取, 必須要有Storage的account, key與container名稱
https://ithelp.ithome.com.tw/upload/images/20180116/20103333IVshphBC6R.png

所以到Azure Portal查看上述必要資訊如下
https://ithelp.ithome.com.tw/upload/images/20180116/20103333bjZyQOS6fN.png

然後找到Containers, 新增一個Container
https://ithelp.ithome.com.tw/upload/images/20180116/20103333uGJQebpyNY.png

接著在Visual Studio新增一個Console專案如下
https://ithelp.ithome.com.tw/upload/images/20180116/20103333eBJRMezkmb.png

然後要存取Azure Machine Learning與Storage服務, 需要安裝Microsoft.AspNet.WebApi.Client與WindowsAzure.Storage等套件, Microsoft.AspNet.WebApi.Client上篇已經介紹過, 不再贅述, 所以在NuGet搜尋WindowsAzure.Storage, 安裝如下
https://ithelp.ithome.com.tw/upload/images/20180116/20103333oUlYlrCN8d.png

然後在Program.cs, 加入底下紅框namespace的引用
https://ithelp.ithome.com.tw/upload/images/20180116/20103333BC2yESzC66.png

接下來把Sample Code貼過來, 修改一下存取Storage與API Key資訊
https://ithelp.ithome.com.tw/upload/images/20180116/20103333bTfoO5rpVZ.png

另外修改ProcessResults內的程式碼, 將csv存到本地端, 解析csv內的JSON, 將Base64的文字轉成圖片後存檔
https://ithelp.ithome.com.tw/upload/images/20180116/20103333IVzG8rdZQg.png

將程式跑起來看看如下
https://ithelp.ithome.com.tw/upload/images/20180116/20103333TUCH3nUyvl.png

接著檢查一下檔案有沒有正確產生? 最重要的是看一下圖檔是不是對的?
https://ithelp.ithome.com.tw/upload/images/20180116/20103333K6ETReQoAh.png

終於搞出來了, R繪圖正確顯示, 所以要能正確取得R繪圖, 必須得用BATCH EXECUTION, 到此真相大白/images/emoticon/emoticon02.gif, 可以把程式碼貼到ASP.NET Web Form試試, 不過在Web Form我們直接用Image控制項直接去接Base64的字串, 所以修改ProcessResults內的程式碼如下
https://ithelp.ithome.com.tw/upload/images/20180116/20103333hDgF6BAHkj.png

最後把Web Form跑起來看一下
https://ithelp.ithome.com.tw/upload/images/20180116/201033331NXBGFkIQa.png

總算可以正確顯示了, 燒腦了共三天, 本來想說今天弄不出來就要放棄, 還好最後有試出來, 參加鐵人賽真的要有庫存, 不然遇到太多大魔王的話, 一下子就爆了/images/emoticon/emoticon70.gif

後記: 實務上真的不要透過Azure Machine Learning來產生R 繪圖, 原因是程式碼很多, 還有就是速度比R Service或是R.NET還要慢, 畢竟BATCH EXECUTION的設計是針對批次使用, 而不是單次呼叫, 所以倒不如先用RStudio或是RTVS先產生好圖檔, 放到網站目錄下, 直接引用, 比較省事


上一篇
Day28 – R Last Mile to Web Part4 Azure Machine Learning Studio Plot 上篇
下一篇
Day30 – R Last Mile to Web Part5 Azure Machine Learning Studio Predict
系列文
Microsoft R Solution30

尚未有邦友留言

立即登入留言