iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 21
1
自我挑戰組

使用R進行探索式資料分析之初探系列 第 21

R互動式網頁Shiny之雜談

  • 分享至 

  • xImage
  •  

在以前對互動式這個名詞的感覺,停留在電玩以及PS4才是我認知的互動式的感覺,而網頁也有互動式但在個人的感覺,都是功能為什麼要稱互動式?隨著年紀漸長寫程式的經驗也愈多,看的書籍也相對的多,對網頁互動式的認知也愈來愈清晰,相對我將PS4的遊戲互動降到1/10000就是網頁的互動了!也沒錯!在一些分析的資料PO到網頁上,可讓使用者輸入或拖動拉桿的數值來觀看不同的結果,讓你的分析結果更讓其他人了解,就可稱之為互動式的結果。

相對在R的世界將你的分析結果PO到網頁上呈現就是套件Shiny,翻成中文叫閃亮,那Shiny這個套件跟一般的Web程式有何不同ㄋ?一般的MIS系統都是因應組織單位任務不同所開發出來,所以會有完整的業務流程,並可快速進行業務資料回溯(就是查詢),而使用的語言目前在台灣就是.NET、JAVA、Javascript、PHP,相對這些應用程式都會配合資料庫進行操作。

而R並不是為上述MIS系統而生,若你要用R寫出MIS系統也不是不可以,只是很痛苦而已,所以R就跟他當初的定位一樣就是在資料科學的領域上做分析、預測、統計檢定....等等,Shiny將這些結果以互動式網頁將你的分析結果或預測結果做呈現,而這種呈現會跟你在寫MIS系統的成就很不一樣(我個人感覺)。

最近附近的朋友或同學都在跟我爭論用Python還是R,這種問題就是很早以前要用JAVA還是.NET是一樣,在早期工程師一般都支持JAVA剩至為了支持還集體辭職,到了現在還不是喜歡用.NET繼續用,喜歡用JAVA也繼續用,兩方也不在爭論那一種語言比較好,彼此也互相承認兩種語言的優點,是啊!現在的RPython不是跟以前一樣,若是就是硬要區分也可以,可區分兩部分

一、學習包袱

若是你已經對MIS系統開發有一定程度或是公司的開發皆以MIS系統為主,所以你對.NET、JAVA、PHP有一定程度的了解,我會建議學習R,因為工程師的青春是有限的學習某一種語言都需要花時間的,而R就是為了巨量資料而來,而R的學習曲線也不高,所以兩者加起來Web及大數據R兩者都會,相對競爭力提高並且兩者互不衝突。

若是你剛進入程式的領域對我會建議你學Python,因為Python對於Web和大數據都很支援,對於建立領域應用的觀念都是很好的程式工具,並且也很新潮對你找工作也有幫助。

二、專注於資料科學領域

這一部分就是要看兩套語言的能力了,其實對於一般資料分析(EDA)兩者軟體不分伯仲,但網路上有人說大量資料還是用Python比較好,我個人覺得這是一個假議題,就像我的資料探勘的老師說,資料要多大才能稱之為大?以我這次參加鐵人找題目做實驗,跑一個10萬和20-30萬筆資料也是嚇嚇叫,跑統計圖也沒讓我等,注意我的筆電i5 CPU低電壓 8GB 內建顯卡,所以說當資料大到某一個程度時,不論是Python還是R都要用專業伺服器跑,要不然每所大學都有大數據實驗中心是假的嗎?但兩套語言還是有不一樣的,說明如下

R對於統計、統計檢定、機器學習、資料探勘等是較為強大。

Python對於深度學習、類神經網路、Web是較為強大的。

所以你的職業是專注那一部份就很重要了,當然網路上有人說兩套都學,因為你在做預測模型時會用到統計檢定,看你的模型的準確性,而R的統計檢定真的很簡單,因為他就是做統計出身的語言,當然你要用Python進行統計檢定也可以,那就自行寫程式,而R就一行就搞定,所以這部分就看大家的需求而定了。

當然我並不是要爭論兩套語言誰比較好,並說服大家選邊站,只是最近在學校及朋友都有討論到這話題,在討論中雙方都進入二元論中,就是有你沒有我,有我沒有你,甚至連我都進入這個二元論中,這也難怪!當你努力學習某一種語言時,被人否定時當然會不舒服,相對他人也是如此....所以寫這篇文章畢竟開卷有益,學習東西都是好事,每種語言只要符合你的需求都是好語言。

在第一篇中的引言有講到第二階段會以實際案例為主,到了上一篇也就告一段落,所以進入第三階段就是R 的 Shiny套件,所以這一篇也算是第三階段的引言,所以後續都會以Shiny套件為主,當然我也會以自身的經驗為主,一開始不會用很炫的案例,因為當初在學習Shiny就被這些酷炫的範例給迷惑,結果自己要從無到有不知道如何建立,甚至閱讀其他人的程式碼也很辛苦,所以會以基礎到實際。

下一篇見!


上一篇
老媽說最近蒜頭很貴_用R了解一下
下一篇
R互動式網頁_基本功
系列文
使用R進行探索式資料分析之初探30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言