2020年7月23日 星期四

使用R進行探索式資料分析之初探(3)_資料視覺化的探索

曾經有一位專家說過  與其他任何設備相比簡單的圖形為資料分析師帶來了更多的資訊

不好意思!是誰說還真的忘記  首先開啟並按裝該有的套件  開啟Rstudio




當然您也可以輸入指令進行安裝 

安裝完成後載入套件




資料欄位的說明可輸入?mpg  出現下圖

對於資料科學而言欄位是很重要的資訊  對於我們了解該資料集是第一步重要資訊

在學習的過程中發現有很多不同的名詞  對於資料科學的人變量或變數  對於統計的人

會說變項  對於學MIS會說欄位  其實都是說同一件事就是欄位  當初被這些名詞

搞得霧煞煞.......


完成上述  讓我們來發覺引擎的大小在高速公路上是否耗油  一般人直覺會說會!

但這是個人的感覺  我們用資料科學的圖形來說話

輸入˙ggplot(data=mpg)+
                     geom_point(mapping = aes(x=displ,hwy)))  

出現下圖


從上圖可以看到答案是引擎的大小在高速公路行駛的確是耗油 displ為引擎cc數  hwy為高速公路

每加淪行駛的英哩數  從散點圖可以看到引擎數愈大行駛的英里數愈少  其中引擎6000cc每加侖

只能跑15英里  而引擎2000cc每加侖可跑到32英里  兩者之間相差17英里。

我們再提出第二個假設  汽車的汽缸數多寡在高速公路行駛上是否會影響油耗

輸入:ggplot(data=mpg)+
                 geom_point(mapping = aes(x=cyl,y=hwy))

出現下圖

從上圖中我們可發現mpg資料集的汽缸數四種類型,分別有4汽缸、5汽缸、6汽缸、8汽缸

從4汽缸來看每加侖最低可跑到20英里  而8汽缸每加侖最低只能跑到3英里  從圖形來看

汽缸數多寡會影響油耗的表現

當然我們可提出更多的假設來進行探索  而上述我們只是單純用散點圖集黑色圓點作呈現

若我們將顏色對應到資料集中其他變項中  是否會有更多的發現

因此我們以第一個範例引擎大小行駛高速公路上是否會耗油例子  將車子的類型對應到顏色

輸入ggplot(data=mpg)+
            geom_point(mapping = aes(x=displ,y=hwy,color=class))


我們可以看到車子類型的變項名稱為class包括雙人車、皮卡、suv等等

藉由顏色對應更進一步了解車的類型、引擎大小、高速公路行駛的油耗

當然也可做進一步的變化使用size來對應,會以實心圓圈表示  圓圈愈大表示資料愈大

輸入ggplot(data=mpg)+
                 geom_point(mapping = aes(x=displ,y=hwy,size=class))





從上圖可以了解美國車子哪類型車子使用較多  以SUV及皮卡車子的種類較多人使用

在執行中會出現一句警告size不建議使用離散變量

上述我們以三個變量進行對資料的探索  那我們可已使用五個變量進行探索嗎?

答案是可以!在ggplot稱為構面  facet_wrap

輸入ggplot(data = mpg)+
               geom_point(mapping = aes(x=displ,y=hwy,color=class))+
               facet_wrap(drv~cyl)


上圖中可以發現我們使用了五個變量對車子的引擎大小(displ)、高速公路油耗(hwy)、類型

(class)、汽缸數(cyl)、車子的驅動方式(drv)來探索  更清楚每種油耗的表現

在構面facet_warp參數中有看到~(蟲字號),當初我以為他是從drv變量到cyl間的所有變數

進行計算,結果查了許多資料才發現  ~  是分為兩個變數的意思  那為什麼不使用逗號區隔

關於這各問題就要問套件開發者,為甚麼提到這個問題因為這個蟲字號困擾我很久。

當然我也可以變化一下

輸入:ggplot(data = mpg)+
                    geom_point(mapping = aes(x=displ,y=hwy))+
                    facet_wrap(~class,nrow = 2)


在上面程式碼中發現~class代表的意思為前面沒有變量,目前只有一個變量,那可不可以寫成

class~可以試一下,規定蟲字號在前變量在後(對於一個變量而言);nrow=2為使用2行作呈現

對於facet_warp構面而言可以加入資料集所有的變量,對於mpg在facet_warp我加入四個變量

大家可以試一下。

最後,上述是R圖形繪製語法很簡單,在未來繪製R困難的圖形,都是由上述語法

作為基礎延伸而來,若上述未能了解後面對R圖形繪製會感到很挫折,這是我小小心得

可能有些大神並不怎麼認為,後面在分享更進一步ggplot的曲線圖形,對於資料探索更視覺化。

使用R進行探索式資料分析之初探(1)_引言

  老實說以前沒聽過R  是上了課教授開了大數據的課程  才知道R是甚麼東西

但是在學習R的過程中  從懵懂到囫圇吞棗的學習  隱約了解R是甚麼東西

而在內心裡總是有種不踏實的感覺  對於琳瑯滿目的領域包跨機器學習、

文字探勘、影像辨識、神經網路都嘗試過  但是我懂了嗎?答案是我並不懂

但在這囫圇吞棗的過程還是有些收穫  發現就是對資料掌握和探索是最基本

當然也就是EDA探索式資料分析  不論你是要用文字探勘、機器學習等

都需要進行探索資料進行分析  發現變相之間的關係及有趣的議題才進行模式的運算

得到你要答案及主題 ,而探索式資料分析包含兩大項圖形及變量;甚麼是探索是分析ㄋ?

探索式資料分析 (Exploratory Data Analysis) 的主要精神是運用視覺化、基本的統計等工具,反覆的探索資料特性,獲取資料所包含的資訊、結構和特點,因為在進行複雜或嚴謹的分析之前,必須要對資料有更多認識,才能訂定對的資料分析方向。(資料來源:曾意儒 _資料科學與R語言)。

學者Garrett Grolemund在R for Data Science一書中提到EDA不是具有嚴格規則的正式過程。最重要的是,EDA是一種心態。在EDA的初始階段,您應該隨時調查您遇到的每個想法。這些想法中的一些會付諸實踐,而另一些則是死胡同。隨著探索的繼續,您將置身於一些特別富有成效的領域中,這些領域最終會寫出來並與他人交流。

EDA是任何數據分析的重要組成部分,即使問題很簡單,因為您始終需要調查數據的品質。數據清理只是EDA的一種應用:您會問有關您的數據是否符合您的期望的問題。要進行數據清理,您將需要部署EDA的所有工具:可視化,轉換和建模。

上述國內外學者發現進入資料科學領域中的基礎為EDA即為探索是分析,不論未來要學習機器學習、資料探勘、類神經網路等都要了解你的資料集品質、變數等各項關係的了解,才可進行後續建模及各項應用,而探索式分析對資料集的了解最快的方式即為視覺化以及變數與變數之間的關係,就像學者Garrett Grolemund指出EDA是一種心態。而講到心態就抽象了對於寫程式的工程師就痛苦了,在程式的世界不就是0與1嗎?是的!這也是本次參加鐵人賽想要表達的理念。

能寫出上述的心得是走過很多冤望路才發現,當然也不是多了不起;記得在學習R的過程中教授就先講基本指令再到資料結構 再到資料清理,當然這些東西都很重要,但在吸收上就是不好,還記得一次交作業以政府公開資料平台中資料集為範例進行分析,使用中發現該資料集之議題,光是將資料載入及清理就花了2/3時間,對於探索資料的時間就更本不夠,更不用說對R指令的了解及操作  想當然爾作業成績並不理想。

讓我想感觸最深的是最近碩士論文先行嘗試模擬基本資料分析,用SAS統計軟體輕鬆愉快但使用R時我竟然不知如何下手,就很簡單問題男生與女生受測長條圖,竟然不知道怎麼做讓我有很深的挫折感,難道之前所花的時間都是無效的嗎?

所以重新思考改變學習方法,並了解資料科學到底是甚麼後才發現EDA是資料科學的基礎,而培養對資料的洞悉能力,沒有別的方法就是多練,所以本次會使用大量的範例,初期會採用R內建的資料集,因為前面提到拿外面的資料光載入及資料整理就需花大量的時間及模索,對於資料的洞悉能力以及R的語法掌握並沒有幫助。

第二階段會以實際資料為主例如購物網站的消費分析、政府公開資料平台、論文中問卷等務實資料來發掘這些資料的分析。

第三階段再做資料分析都以自己電腦為主也就是單機,但資料分析的結果需要與人溝通說明,讓其他人知道你的分析結果,而R有一個套件就是Shiny將結果形成互動式的呈現,以現今主流程式來說就是Web系統。

而本次你需要準備以下必備工具
  1. 一台筆電或PC(好像在說廢話!)
  2. 連上網路(又是廢話!)
  3. 安裝R的核心及R Studio可參考網址:https://www.dotblogs.com.tw/michael80321/2014/12/15/147656
蠻簡單的!不須太多的東西,而我的開發平台R核心為R x64 3.5.2  開發介面使用Rstudio,因為你們的版本比較新,有時會我的code在你們較新的核心運作會出不來(機率蠻小的),但不能排除所以可以在每篇文章下方留言告知,我會盡力排除。

在套件部分R的套件是很多的,會配合每篇文章來安裝相關套件,在R的程式基本語法我不會提到,因我讓我回想到每次教授講R的基本操作時,周公都叫我趕快登入,每次上課都在跟周公搏鬥,很苦啊.........所以基本操作可參閱下列網址(R的基本操作很簡單,簡單到讓你很想睡)
https://joe11051105.gitbooks.io/r_basic/content/


後續將學習的過程心得予以分享  有些不足之處或不對的地方  請各位同號能不吝指正及交流,希望自己能完成30天的堅持。





2020年7月21日 星期二

VSCode介面撰寫R 最後我認輸了!

最近論文告一段落  把遺忘已久的R  拿起來練一練

當然都使用RStudio作為寫R的IDE  今天想想為什麼不用VSCODE來寫

今天就把VSCODE打開  上網找了一下  把一些配置設定

雖然可以動了但是有很多符號  RStudio都有快速鍵  例如<-  %>%雖然就兩個快速鍵

就讓我不想用VSCODE  當然還有將R整合到.NET中的RTV忘記名字了

但看了一些網站和影片  總讓我覺得光設定就很複雜  但之前用Phyon還蠻簡單

所以我認輸了!老實一點用RStudio  當然努力一點也可以將設定設好

但是我想程式的邏輯和語法比較重要  至於IDE應該是其次吧!

想著想著就作罷了!

昨天看到IT幫幫忙的鐵人三項  在九月一號開始報名  我想報名自我挑戰項目

一天PO一篇文為期30天  我想將最近學R的心得每日一篇PO到文章上

這一逼迫我將R有規律地整理  而離目前還有兩個月  可已先將預備的文章心得整理至部落格中

到參賽的哪一天就有文章和素材下去PO了  最近在R的dplyr需要花多點時間理解  沒有想像中的簡單

當然很多東西都是熟能生巧  所以最近要做兩件事期一:持續研究dplyr;其二整理以前的文章

PO至部落格中  至於題目要再想一下

2020年7月19日 星期日

對馬戰魂_的啟示(1)

這一款遊戲的邏輯跟一些3A大作沒有甚麼不同

一樣有主線及支線配合劇情推進度  增加技能點數  在路上蒐集一些物資

正面戰鬥及暗殺跟刺客教條一樣  當然網路上都怎麼說

但是網路上很多遊戲也都差不多都是這樣  全境封鎖、去年初的一款射擊遊戲忘記名字了

湯姆克蘭西(絕境)  都是同樣的邏輯只不過世界觀的設定不同以及所描述的事情不同

所以也就很少再買遊戲  就把以前遊戲拿起來玩就好了  這次會買衝著PS4最後大作

以及預告的唯美畫面而買  玩了兩天雖說沒破關    但我覺得真的有用心

在網路上都有很多人講起這款遊戲的優缺點  但我只是一個玩家的心態談我的看法

首先操作部分讓我滿意的地方  因隨著劇情的需要必須跟隨NPC一起去某個地方

這個設定在任何遊戲都有  而對馬給我跟隨NPC的感覺只要操作將蘑菇頭往前推就好

而且走的速度也可隨個人的喜好調整速度  不用一邊慢走還要聽NPC廢話  

在自由度上比一些遊戲還要好  雖然並沒有甚麼特別  但想想玩了三四個小時  

這個小設定你會覺得很貼心  

第二、無止盡的收集素材
  
跟一般遊戲一樣對馬也需要收集素材  但我在玩很多遊戲  路過經過就一堆素材

有時不檢好像很對不起自己的良心  在奔跑時就受不了就折返  但要製作還是少素材

所以在玩了三四個小時後  對我而言根本就是一個精神折磨  這麼多年了所有的3A都是如此

也沒看到哪一家遊戲有改進  但對馬在路上還是會有素材但沒有像其他遊戲  讓你受到精神折磨

對馬的蒐集素材的設計讓你不會感到厭煩  所有的素材的種類不會繁雜  素材因特性出現在ㄧ些地方

所以有這兩個設計元素  讓你長時間的遊玩不會感到繁複

第三、無止盡支線任務

幾乎所有的3A大作都有支線對馬也不例外  但幾乎遊戲的支線做到很想吐  對!作業感很重

就以去年初的絕境支線任務就做到想吐  遊戲到一半還問我的體驗如何  直接點其它選項秒回想吐

而對馬支線任務以我感覺  當我覺到有點開始厭煩時  就剛好滿足劇情所需及技能所需

並切換到另一個故事主線場景  並且每一個支線的故事很飽滿  會讓你覺得是個武士

第四、考驗反應力的戰鬥系統

當然這點跟個人喜好有關係  對馬沒有像仁王、隻狼、魔物獵人怎麼考驗玩家操控的反應力

但也沒像刺客打鬥哪麼簡單(以前的版本)奧的賽就不會  對馬應該介於兩者之間

若是看到雜兵就一路殺到後面  在對馬中就吃癟了  但雖說沒哪麼考驗反應力  

但在戰鬥還是讓你有緊張及刺激  並且招式真的是酷  約玩4~6個小時就能掌握他的戰都系統

這是這兩天玩的心得  還有很多想法  但要打很多字有點累  並且才玩兩天  所以心得

還會將我的想法及心得撰寫出來

2020年7月10日 星期五

回覆表終於修正完成

不容易啊!足足修了21天  昨天一天都沒動  晚上找彥仔喝酒

今天中午睡醒  刷牙洗臉後  把論文卡關的抽樣架構寫完

其實發現好像也沒那麼難....  但前天怎麼看腦袋都很脹

今天似乎又撥雲見日  正在寫時....我的指導教授突然在群組出現

大家有甚麼問題嗎?    唉.....今天晚上把寫好的  LINE給他

看他有甚麼指導的地方   也算將口委的意見修正  讓論文往前進一步

後面就看我的指導教授  有甚麼意見就修正  雖然感覺後面有點模糊不清

但就是如此吧!

2020年7月8日 星期三

抽樣架構_口委回覆

說來禪愧口試完了至今21天  今天剛才發現沒了解口委的意思

最近這幾個禮拜一直在修口委給我的意見  今天修了差不多

也修的雞血鴨毛  看了很多文獻  不斷的補充說明 

在修的過程中真的很多東西都不知道  雖然看了很多學長姊的論文

但也照著學長姐的架構下去寫  但就被口委嘴  心想學長姊都可以過  為什麼我就不能

舉例來說抽樣架構  我看了老師指導的學生也沒寫到抽樣架構  樣本數量  施測對象

等描述  ㄟ它們就能過.....我就被嘴.....這也算了  我其他地方也有很多不足之處

但我也很好奇  我每週也定時交我的論文進度  為什麼老師就不跟我說  這也有有兩個月

跟我說一下我就下去改了  難道他真的認為我會自己知道  當然我也不是要他手把手教我

就講個兩句話我就下去改了  唉!去年跟老師的關係搞得太僵了吧!  想來想去也就這個原因

他怕念我我又不舒服吧!  至到口試後才發現有這麼多問題  早說.....為什麼不早說!

害我6/15日交付提案的每一個晚上都改到不知改甚麼東西?  還以為自己很厲害  

今天論文口試的東西改了差不多  開始寫回覆表

才發現有一題抽樣的架構  ㄟ翻了論文似乎很難回答該題  上網找了一下  才知道口委的意思

一了解所有的問題就浮出來  原來讀了碩士兩年  抽樣架構根本不知道  隨機取樣  非隨機取樣

兩類中又有不同的方法  看了半天自己都不知道選哪樣  選非隨機取樣的立意取樣

似乎誤差太大無法表現出母體  好吧!採隨機取樣的集群抽樣  

而集群抽樣的說明:群間同質性要高,群內異質性也要高 TM寫甚麼?在寫外星文嗎?

開始谷哥大神上身不斷了解這個專有名詞  累了!  追求知識過程是要付出的...........

無現金支付的反思!

  **購物經歷** - 作者花費大量時間尋找立燈,最終在IKEA購買了一個649元的立燈 - 在IKEA附近停車場遇到只接受無現金支付的情況,被迫註冊並使用Line Pay **無現金支付的觀察** - 作者認為Line Pay作為前端介面,有助於提高停車場付費效率 - 作者預...