
R語(yǔ)言初學(xué)者必須要知道的事兒
2017年1月24日晚8點(diǎn)半,樂(lè)逗游戲挖掘團(tuán)隊(duì)負(fù)責(zé)人、資深R語(yǔ)言用戶(hù)謝佳標(biāo)帶來(lái)了主題為“數(shù)據(jù)分析利器:R語(yǔ)言快速入門(mén)”的Chat交流。以下是主持人孫莫默整理的實(shí)錄,記錄了謝佳標(biāo)與讀者之間交流的精彩問(wèn)答。
答:常用的數(shù)據(jù)分析工具有很多,包括大家平時(shí)一直在用的excel,這就是個(gè)不錯(cuò)的分析工具,我們可以實(shí)現(xiàn)常用的數(shù)據(jù)分析、繪圖功能。但是涉及到復(fù)雜的模型時(shí),excel就顯得很吃力,此時(shí)就需要運(yùn)用專(zhuān)業(yè)的數(shù)據(jù)分析挖掘工具,比如spss、sas、R、Python等等。
下面給大家看一個(gè)2013年的分析工具排名,最近幾年R和python的熱度有增無(wú)減:
因?yàn)?a href='/map/r/' style='color:#000;font-size:inherit;'>R語(yǔ)言是開(kāi)源的,所以很多互聯(lián)網(wǎng)企業(yè)在用,還有一些通迅行業(yè)的咨詢(xún)公司,不過(guò)上手還是需要長(zhǎng)期的學(xué)習(xí);SPSS界面友好些,不過(guò)企業(yè)用正版也要很大一些數(shù),不過(guò)一般是市場(chǎng)研究用的比較多,如果你會(huì)用SPSS編程其實(shí)功能還是比較強(qiáng)大的,建議如果想先練手可以學(xué)這個(gè),上手快;SAS一般是金融企業(yè),特別是銀行業(yè)和醫(yī)學(xué)統(tǒng)計(jì)用,銀行業(yè)人員有一些是用SAS做統(tǒng)計(jì),一般是銀行業(yè)內(nèi)部人做的,另一種是給銀行業(yè)做數(shù)據(jù)挖掘的公司,不過(guò)正版一年也要上百萬(wàn),不是土豪也用不起,聽(tīng)說(shuō)支付寶都不用,而是用R語(yǔ)言,而且SAS學(xué)習(xí)沒(méi)人指導(dǎo)很難學(xué);所以看小伙伴的選擇,想在傳統(tǒng)或者咨詢(xún)公司做的SPSS比較合適,想去金融特別是銀行業(yè)SAS不錯(cuò),想進(jìn)互聯(lián)網(wǎng)公司學(xué)R語(yǔ)言可能是比較明智。我們互聯(lián)網(wǎng)、游戲公司很多數(shù)據(jù)分析師都是使用R語(yǔ)言和Python進(jìn)行分析挖掘工作。
另外,R語(yǔ)言也可以跟Python結(jié)合,也能與其他專(zhuān)業(yè)的挖掘工具接觸集成,比如下圖:
可以利用R語(yǔ)言調(diào)出rattle,幫助對(duì)代碼不熟悉的新手利用圖形化界面快速完成數(shù)據(jù)分析工作。右上角這個(gè)工具是非常不錯(cuò)的工具,大家如果感興趣可以通過(guò)install.packages("rattle")在R內(nèi)安裝此包,然后利用:library(rattle);rattle()命令就可以調(diào)出那個(gè)界面,由于R的極大靈活性和擴(kuò)展性,也使得R是近幾年數(shù)據(jù)分析師的首選工具。
答:Python和R是統(tǒng)計(jì)學(xué)中兩種最流行的的編程語(yǔ)言,R的功能性主要是統(tǒng)計(jì)學(xué)家在開(kāi)發(fā)時(shí)考慮的(R具有強(qiáng)大的可視化功能),而Python因?yàn)橐子诶斫獾恼Z(yǔ)法被大家所接受。
起初R主要是在學(xué)術(shù)和研究使用,但近來(lái)企業(yè)界發(fā)現(xiàn)R也很不錯(cuò),這使得R成為企業(yè)中使用的全球發(fā)展最快的統(tǒng)計(jì)語(yǔ)言之一。如果有了解過(guò)中國(guó)R語(yǔ)言會(huì)議的讀者應(yīng)該知道,這幾年參加R會(huì)的人數(shù)越來(lái)越多,有不少是來(lái)自企業(yè)界。我在演講后都有很多企業(yè)界的數(shù)據(jù)分析師與我交流,都對(duì)R在企業(yè)中的實(shí)戰(zhàn)很感興趣。如果大家對(duì)R語(yǔ)言運(yùn)用在實(shí)際工作中感興趣,可以查詢(xún)R會(huì)的一些資料。
R的主要優(yōu)勢(shì)是它有一個(gè)龐大的社區(qū),通過(guò)郵件列表,用戶(hù)貢獻(xiàn)的文檔和一個(gè)非常活躍的堆棧溢出組提供支持。還有CRAN鏡像,一個(gè)用戶(hù)可以很簡(jiǎn)單地創(chuàng)造的一個(gè)包含R包的知識(shí)庫(kù)。這些包有R里面的函數(shù)和數(shù)據(jù),各地的鏡像都是R網(wǎng)站的備份文件,完全一樣,用戶(hù)可以選擇離你最近的鏡像訪問(wèn)最新的技術(shù)和功能,而無(wú)需從頭開(kāi)發(fā)。
所以我們數(shù)據(jù)分析師如果選擇R語(yǔ)言,是為了讓自己更專(zhuān)注數(shù)據(jù),不是花太多時(shí)間去想想怎么實(shí)現(xiàn)某種算法,因?yàn)檫@些都是有現(xiàn)成的包。如果現(xiàn)成的算法不能滿足你的分析需求,甚至我們可以通過(guò)修改源碼來(lái)完成你的數(shù)據(jù)工作。
接下來(lái),我們從數(shù)據(jù)科學(xué)行業(yè)的表現(xiàn)來(lái)對(duì)比下R和Python。如果你們看一下最近的民意調(diào)查,在數(shù)據(jù)分析的編程語(yǔ)言方面,R是明顯的贏家。但也有越來(lái)越多的人從研發(fā)轉(zhuǎn)向Python。此外,有越來(lái)越多的公司使用這兩種語(yǔ)言來(lái)進(jìn)行組合。如果你打算從事數(shù)據(jù)行業(yè),你用好學(xué)會(huì)這兩種語(yǔ)言。招聘趨勢(shì)顯示這兩個(gè)技能的需求日益增加,而工資遠(yuǎn)高于平均水平。
我們來(lái)看下R的優(yōu)缺點(diǎn)。
優(yōu)點(diǎn)是:
R的缺點(diǎn)就是基于內(nèi)存,運(yùn)算比較緩慢,但是這幾年計(jì)算機(jī)性能的提升和很多擴(kuò)展包的出現(xiàn),很好地解決了這個(gè)問(wèn)題。例如跟RHadoop、sparkR等包,還有與數(shù)據(jù)庫(kù)的鏈接也實(shí)現(xiàn)了R能專(zhuān)心做數(shù)據(jù)分析和建模、可視化的工作。R語(yǔ)言的書(shū)好像也是不溫不火,一直長(zhǎng)銷(xiāo)。
以上是R的優(yōu)缺點(diǎn),接下來(lái)我們簡(jiǎn)單了解下Python方面的優(yōu)缺點(diǎn)。
Python的在數(shù)據(jù)分析方面的第一個(gè)優(yōu)點(diǎn)是:IPython Notebook。IPython Notebook使我們更容易使用Python進(jìn)行數(shù)據(jù)工作,你可以輕松地與同事共享Notebook,而無(wú)需他們安裝任何東西。這大大減少了組織代碼,輸出和注釋文件的開(kāi)銷(xiāo)??梢曰ǜ嗟臅r(shí)間做實(shí)際的工作。
第二點(diǎn)是Python是通用語(yǔ)言。Python語(yǔ)言容易、直觀,在學(xué)習(xí)上會(huì)比較簡(jiǎn)單,它可以加快你寫(xiě)一個(gè)程序的速度。此外,Python測(cè)試框架是一個(gè)內(nèi)置的,這樣可以保證你的代碼是可重復(fù)使用和可靠的。
第三點(diǎn)是Python是一個(gè)多用途的語(yǔ)言,這也是廣受程序員喜愛(ài)的原因之一。Python把不同背景的人集合在一起。作為一種常見(jiàn)的、容易理解,大部分程序員都懂的編程語(yǔ)言,可以很容易地和統(tǒng)計(jì)學(xué)家溝通,你可以使用一個(gè)簡(jiǎn)單的工具就把你每一個(gè)工作伙伴都整合起來(lái)。
Python的主要缺點(diǎn)之一是可視化方面??梢暬沁x擇數(shù)據(jù)分析軟件的一個(gè)重要的標(biāo)準(zhǔn)。雖然Python有一些不錯(cuò)的可視化庫(kù),如Seaborn,Bokeh和Pygal。但相比于R,呈現(xiàn)的結(jié)果并不總是那么順眼。這幾年P(guān)ython一直在數(shù)據(jù)分析方面一直在趕超R語(yǔ)言,但是還不夠。
對(duì)于我們數(shù)據(jù)分析人員,該如何選擇R和Python。下面給幾點(diǎn)建議:
所以工具的選擇跟你做事情的目的有直接的關(guān)系,如果你是想快速實(shí)現(xiàn)數(shù)據(jù)分析和模型,做一些分析專(zhuān)項(xiàng)和可視化時(shí),可以考慮使用R。如果是為了想實(shí)現(xiàn)數(shù)據(jù)弗恩系平臺(tái)開(kāi)發(fā),可以考慮工程應(yīng)用能力較強(qiáng)的Python。一般讀數(shù)學(xué)和統(tǒng)計(jì)學(xué)的童靴偏好R,計(jì)算機(jī)出生的童靴偏好Python。如果有時(shí)間,最好兩個(gè)都會(huì)。我們團(tuán)隊(duì)在工作中也是兩種工具都有使用。
答:R是一個(gè)跨平臺(tái)的工具,可以完美在windows、unix和Mac上運(yùn)行。我們?cè)趙in上也是可以實(shí)現(xiàn)整個(gè)數(shù)據(jù)分析流程工作。
比如說(shuō)利用RODBC包鏈接公司環(huán)境中的數(shù)據(jù)庫(kù),從數(shù)據(jù)庫(kù)中直接讀入或進(jìn)行數(shù)據(jù)查詢(xún)匯總,并將部分基礎(chǔ)數(shù)據(jù)處理的統(tǒng)計(jì)工作交給數(shù)據(jù)庫(kù),然后R執(zhí)行數(shù)據(jù)分析和挖掘的工作,完成后并將結(jié)果返回給數(shù)據(jù)庫(kù),或者利用與java、c++等語(yǔ)言的結(jié)合直接進(jìn)行結(jié)果利用,也可以結(jié)合html、php進(jìn)行數(shù)據(jù)模型和結(jié)果可視化。
對(duì)于數(shù)據(jù)分析師來(lái)說(shuō),如果對(duì)其他語(yǔ)言不熟,我們也可以利用shiny包實(shí)現(xiàn)快速開(kāi)發(fā)數(shù)據(jù)分析平臺(tái)原型的目的。接下來(lái),我們重點(diǎn)聊聊數(shù)據(jù)分析之前的數(shù)據(jù)采集和數(shù)據(jù)分析結(jié)果之后的展示環(huán)節(jié),尤其側(cè)重聊下R與數(shù)據(jù)庫(kù)的鏈接和快速開(kāi)發(fā)web平臺(tái)。
很多傳統(tǒng)企業(yè)現(xiàn)在都還是用oracle、mysql進(jìn)行數(shù)據(jù)存儲(chǔ)。所以我們先以R與MYSQL的鏈接為例進(jìn)行解釋這部分的知識(shí)。在R中通過(guò)RODBC包訪問(wèn)一個(gè)數(shù)據(jù)庫(kù)也許是最流行的方式。這種方式允許R連接到任意一種擁有ODBC驅(qū)動(dòng)的數(shù)據(jù)庫(kù),其實(shí)幾乎就是市面上的所有數(shù)據(jù)庫(kù)。大家要留意的一點(diǎn)就是,你的R位數(shù)必須與數(shù)據(jù)庫(kù)的位數(shù)一致。這點(diǎn)千萬(wàn)別忽視。
由于服務(wù)器上的MySQL是32位,計(jì)算機(jī)系統(tǒng)是64位,所以需要在C:\Windows\SysWOW64文件夾下找到odbcad32.exe,雙擊打開(kāi)ODBC數(shù)據(jù)源管理器界面。這個(gè)32位的ODBC數(shù)據(jù)源管理器界面存放的地方大家可以先記下。
如果你們的mysql是32位,就需要在C盤(pán)的那個(gè)文件夾找到它,雙擊打開(kāi)界面如圖:
點(diǎn)擊添加,選擇MySQL ODBC驅(qū)動(dòng),點(diǎn)擊完成之后彈出一個(gè)數(shù)據(jù)庫(kù)配置窗口。
此處需要說(shuō)明一下,如果你們?cè)隍?qū)動(dòng)中沒(méi)有找到關(guān)于mysql驅(qū)動(dòng),就需要先下載個(gè)mysql odbc驅(qū)動(dòng)進(jìn)行安裝即可。
大家選中mysql驅(qū)動(dòng)以后的界面如上,我們可以填寫(xiě)你的DSN名稱(chēng)(這個(gè)可以隨意),然后是ip地址和端口、mysql的登錄賬號(hào)和密碼,都填寫(xiě)完畢后,點(diǎn)擊test進(jìn)行測(cè)試。
如果出現(xiàn)鏈接成功的提示,說(shuō)明你們的ODBC數(shù)據(jù)源管理器已經(jīng)設(shè)置成功了。接下來(lái),我們就要回到R中進(jìn)行后面的操作。在32位的R中利用install.packages(“RODBC”)命令進(jìn)行RODBC包的安裝。大家要留意,我們要利用32位的R來(lái)安裝RODBC包。這也是我在文章中為什么建議大家同時(shí)安裝兩個(gè)位數(shù)的R軟件的原因。如我計(jì)算機(jī)的截圖,i386是32位的 x64是64位的。
我們RStuido一般是關(guān)聯(lián)64位的,也可以自己進(jìn)行修改,在options里面進(jìn)行設(shè)置。
這個(gè)是RStudio進(jìn)行設(shè)置的截圖。
進(jìn)去后,點(diǎn)擊change。
此處可以修改關(guān)聯(lián)的R。
繼續(xù)回來(lái)我們的問(wèn)題。RODBC包安裝好后,我們就可以實(shí)現(xiàn)R與MYSQL的鏈接了。包下載安裝好后,就可以利用包中的odbcConnect(dsn, uid = "", pwd ="", ...)函數(shù)進(jìn)行數(shù)據(jù)庫(kù)連接,并繼續(xù)數(shù)據(jù)的傳輸及分析工作。
這個(gè)是本機(jī)mysql的一些信息,daniel是剛才ODBC數(shù)據(jù)源管理器里面設(shè)置的DSN,root是mysql的登錄賬號(hào),123456是登錄密碼。如果你們能看到數(shù)據(jù)庫(kù)信息,說(shuō)明已經(jīng)連通了。
我們先嘗試如果將R的數(shù)據(jù)插入到數(shù)據(jù)庫(kù)中??梢允褂胹qlSave(channel,dat,tablename=NULL,append=FALSE)命令將R中的數(shù)據(jù)框?qū)懭牖蚋?append=TRUE)到MySQL數(shù)據(jù)庫(kù)的某個(gè)表中。比如我們想把R自帶的mtcars數(shù)據(jù)寫(xiě)入到MySQL中,在數(shù)據(jù)庫(kù)中生成新表mydata。
大家看到了,我們?cè)贛YSQL已經(jīng)新生成一個(gè)表mydata?,F(xiàn)在,嘗試將數(shù)據(jù)庫(kù)中的數(shù)據(jù)傳入到R中??梢岳胹qlFetch(channel, sqtable, ..., colnames = FALSE, rownames = TRUE)命令讀取MySQL數(shù)據(jù)庫(kù)中的mydata表到一個(gè)數(shù)據(jù)框中。
以上截圖sqlFetch中的第一個(gè)參數(shù)是剛才建立的鏈接channel,第二個(gè)參數(shù)是數(shù)據(jù)庫(kù)中存在的表mydata。我們運(yùn)行命令后就將mysql中的mydata表全部讀取到R中。有時(shí)候,我們并不想將原始表讀入到R中,只想利用數(shù)據(jù)庫(kù)中表的一些問(wèn)題:可以利用sqlQuery(channel, query, errors = TRUE, ..., rows_at_time)命令向mysql數(shù)據(jù)庫(kù)提交一個(gè)查詢(xún)并返回結(jié)果。比如相對(duì)mydata表,統(tǒng)計(jì)按照vs和am進(jìn)行分組,統(tǒng)計(jì)mpg的平均組,執(zhí)行以下代碼可以完成該操作。
以上是在win中實(shí)現(xiàn)R與數(shù)據(jù)庫(kù)的鏈接。接下來(lái),給大家快速過(guò)一下shiny包快速開(kāi)發(fā)web app應(yīng)用的過(guò)程。
Shiny是R中的一種Web開(kāi)發(fā)框架,使得R的使用者不必太了解CSS、JS,只需要了解一些HTML的知識(shí)就可以快速完成Web開(kāi)發(fā),且Shiny包集成了Bootstrap、jQuery、Ajax等特性,極大解放了作為統(tǒng)計(jì)語(yǔ)言的R的生產(chǎn)力。使得非傳統(tǒng)程序員的R使用者不必依賴(lài)于前端、后端工程師就可以自己依照業(yè)務(wù)完成一些簡(jiǎn)單的數(shù)據(jù)可視化工作,快速驗(yàn)證想法的可靠性。
Shiny應(yīng)用包含兩個(gè)基本的組成部分:一個(gè)是用戶(hù)界面腳本(a user-interface script),另一個(gè)是服務(wù)器腳本(a server script)。
用戶(hù)界面(ui)腳本控制應(yīng)用的布局與外表;服務(wù)器(server)腳本包含構(gòu)建應(yīng)用所需要的一些重要指示。shiny包也自帶了一些app應(yīng)用例子幫助新手快速上手,比如我們想看一個(gè)交互直方圖。執(zhí)行以下代碼:
if(!require(shiny) install.packages(“shiny”) runExample(“01_hello”)
執(zhí)行命令會(huì)得到一個(gè)web app應(yīng)用界面:
以上截圖就是一個(gè)網(wǎng)頁(yè),我們可以拖動(dòng)滑動(dòng)條,直方圖會(huì)立即發(fā)生變化。我們只需要在服務(wù)器上進(jìn)行部署就可以實(shí)現(xiàn)網(wǎng)頁(yè)共享,一個(gè)數(shù)據(jù)分析平臺(tái)的應(yīng)用就開(kāi)發(fā)完成了。
以上是關(guān)于在win下做數(shù)據(jù)分析的一些經(jīng)驗(yàn)分享。
答:R語(yǔ)言可以跟很多語(yǔ)言、工具實(shí)現(xiàn)完美集成。比如C++、Java這些底層編程語(yǔ)言,也能與PHP、JS、html等前端展示語(yǔ)言進(jìn)行很好地結(jié)合,直接將R的結(jié)果進(jìn)行展示。比如前面提到的shiny包的ui.R其實(shí)就是承擔(dān)了客戶(hù)端的html頁(yè)面設(shè)計(jì)工作,我們也可以直接在ui.R直接編寫(xiě)html腳本來(lái)實(shí)現(xiàn)自定義的網(wǎng)頁(yè)布局。比如大家剛剛看到的前端的展示,其實(shí)可以u(píng)i.R完全用html來(lái)寫(xiě)。
大家如果對(duì)各種工具集成感興趣,可以看看張丹的那本《R的極客理想-——工具篇》,對(duì)于一位偏數(shù)據(jù)開(kāi)發(fā)的童鞋會(huì)有很大的啟發(fā)。
答:嗯,對(duì)于新手,我個(gè)人建議還是一步一個(gè)腳印,打好基礎(chǔ)。做數(shù)據(jù)分析師沒(méi)有捷徑,只能一步一個(gè)腳印,循序漸進(jìn)。但是有一些標(biāo)準(zhǔn)的流程可以參考,你平時(shí)的工作就有個(gè)方向,知道針對(duì)什么業(yè)務(wù)用什么方法實(shí)現(xiàn)。 給大家分享一個(gè)通用的行業(yè)流程。 跨行業(yè)的數(shù)據(jù)挖掘標(biāo)準(zhǔn)流程CRISP-DM方法論,是一種業(yè)界認(rèn)可的用于指導(dǎo)數(shù)據(jù)挖掘工作的方法。按照CRISP-DM方法論,一個(gè)數(shù)據(jù)分析的完整流程包括6個(gè)階段:分別是業(yè)務(wù)理解、數(shù)據(jù)理解、數(shù)據(jù)準(zhǔn)備、建立模型、模型評(píng)估和模型發(fā)布。這6個(gè)階段的順序并不是固定不變的,在不同的業(yè)務(wù)場(chǎng)景中,可以有不同的流轉(zhuǎn)方向。
拿我所在游戲行業(yè)的數(shù)據(jù)來(lái)說(shuō),我總結(jié)了以下幾點(diǎn):
業(yè)務(wù)理解: 該階段的核心內(nèi)容包括正確理解業(yè)務(wù)背景和業(yè)務(wù)需求,同時(shí)能把業(yè)務(wù)需求有效轉(zhuǎn)化成合理的分析需求,并設(shè)計(jì)指標(biāo)體系和擬定實(shí)施計(jì)劃。
數(shù)據(jù)理解:該階段從數(shù)據(jù)收集開(kāi)始,并對(duì)可用的數(shù)據(jù)進(jìn)行數(shù)據(jù)探索和評(píng)估,識(shí)別數(shù)據(jù)質(zhì)量問(wèn)題,發(fā)現(xiàn)數(shù)據(jù)不同屬性間的關(guān)系。
數(shù)據(jù)準(zhǔn)備:這個(gè)階段屬于數(shù)據(jù)清洗和轉(zhuǎn)換工作,包含數(shù)據(jù)缺失值和異常值的處理,保證建模前的數(shù)據(jù)質(zhì)量;數(shù)據(jù)的重組、轉(zhuǎn)換以及衍生等處理,比如對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理、對(duì)某些指標(biāo)進(jìn)行分箱操作以便達(dá)到建模需求。
建立模型:該環(huán)節(jié)是游戲數(shù)據(jù)分析流程中技術(shù)含量最高的階段,數(shù)據(jù)分析師應(yīng)該根據(jù)項(xiàng)目需求和數(shù)據(jù)特點(diǎn)選擇適合的算法,并使用專(zhuān)業(yè)的數(shù)據(jù)挖掘工具建立模型。
然后是模型評(píng)估和發(fā)布,評(píng)估這幾年常用的是混淆矩陣和ROC曲線,還有多重交叉驗(yàn)證。
以上方法論對(duì)于一個(gè)初學(xué)者我覺(jué)得是非常重要的,你們需要知道你現(xiàn)在做的事情是屬于哪個(gè)階段,才能選擇相應(yīng)的工具和方法去實(shí)現(xiàn)。如果大家對(duì)數(shù)據(jù)分析整個(gè)流程感興趣,可以關(guān)注我今年初將要出版的新書(shū)《R語(yǔ)言游戲數(shù)據(jù)分析》,這本書(shū)會(huì)詳細(xì)介紹了各種階段的知識(shí)和技巧。
這篇文章 總結(jié)的很到位,大家可以看看。
以上是個(gè)人的一些建議,希望學(xué)任何東西都是多看多想多練,這次才能培養(yǎng)自己的分析思維。
答:很多時(shí)候,大家安裝包時(shí)會(huì)出現(xiàn)無(wú)法安裝的情況,此時(shí)我們可以進(jìn)行另外一種安裝方式,就是可以下載壓縮包進(jìn)行本地安裝。cran上的安裝包可以直接去官網(wǎng)下載,如下截圖。
大家可以看到,側(cè)邊欄有個(gè)叫Packages的菜單,我們點(diǎn)擊即可進(jìn)入cran所有包的頁(yè)面。此時(shí)也是提供了windows、linux和mac不同系統(tǒng)的壓縮包下載。如果大家用的是win,請(qǐng)下載后綴為zip的文件。下載后,我們就可以實(shí)現(xiàn)本地安裝,以RStudio為例。
點(diǎn)擊install 彈窗如下。
默認(rèn)是在線安裝,我們改為zip的本地安裝即可。選中你需要安裝的壓縮包,然后點(diǎn)擊Install就可以完成包的本地安裝。不過(guò),有一點(diǎn)需要注意的地方就是,此種安裝方式會(huì)造成依賴(lài)包不能一并進(jìn)行安裝。所以如果進(jìn)行本地安裝時(shí)留意一下包所依賴(lài)的其他包。此外,我們有很多處于開(kāi)發(fā)狀態(tài)包放在github上面。此時(shí)不能用install.packages()命令進(jìn)行安裝,需要利用install_github()命令進(jìn)行安裝。
該命令在devtools包中,故需要先install.packages(“devtools”)進(jìn)行devtools包的安裝。包安裝完后,就可以利用library或require命令進(jìn)行包的加載,就可以利用包實(shí)現(xiàn)很多擴(kuò)展功能了。如果是RStuido,也可以直接點(diǎn)擊包名前面的小框√即可完成包的加載。
包的安裝時(shí)很講技巧的,今天就先簡(jiǎn)單分享到這里。比如rCharts、recharts等交互包就是在github上,大家有興趣可以嘗試下載安裝。
答:有多個(gè)包可以實(shí)現(xiàn)EXCEL數(shù)據(jù)的導(dǎo)入,不過(guò)最簡(jiǎn)單的方式是將其轉(zhuǎn)化為csv再通過(guò)read.table或read.csv命令導(dǎo)入。給大家介紹幾個(gè)專(zhuān)門(mén)導(dǎo)入excel數(shù)據(jù)的包。
例如,RODBC包中的odbcConnectExcel2007函數(shù)、xlsx包中的read.xlsx函數(shù)、XLConnect包中的loadworkbook和readWorksheet函數(shù)訪問(wèn)Excel2007文件。其中,RODBC、xlsx、XLConnect包都需要依賴(lài)于rJava包,也需要依賴(lài)于計(jì)算機(jī)的jre環(huán)境才行。
相對(duì)來(lái)說(shuō)比較麻煩,給大家簡(jiǎn)單解釋下。
先看看我們計(jì)算機(jī)的jre環(huán)境,先調(diào)出cmd窗口,輸入java - version查看java版本。如下圖所示。
大家可以看到,我這邊的裝好的是1.8 64位的java,此時(shí)需要利用64位的R來(lái)安裝那幾個(gè)擴(kuò)展包來(lái)進(jìn)行excel的讀取。以下給大家演示下這幾個(gè)包的加載。
大家看到的截圖,是利用64位的R可以將這兩個(gè)包加載到R中,接下來(lái)就可以完成excel數(shù)據(jù)的導(dǎo)入了。
大家如果以后遇到此錯(cuò)誤,就說(shuō)明你的rJava位數(shù)與本機(jī)的jre位數(shù)不一樣。
這些包的安裝比較麻煩,如果真要從excel中導(dǎo)入數(shù)據(jù)到R中,給大家介紹一個(gè)不需要依賴(lài)java環(huán)境的包:readxl包。直接通過(guò)install.packages("readxl")進(jìn)行安裝,然后read_excel函數(shù)進(jìn)行excel數(shù)據(jù)的讀取,具體大家有時(shí)間可以去嘗試下,我就不進(jìn)行案例演示了。
答:算法模型一般分為兩種:有監(jiān)督模型、無(wú)監(jiān)督模型。比如我們常聽(tīng)到的聚類(lèi)分析、關(guān)聯(lián)規(guī)則就是非常出名的無(wú)監(jiān)督模型。聚類(lèi)分析用在用戶(hù)分群業(yè)務(wù)領(lǐng)域,在R中可以利用kmeans函數(shù)實(shí)現(xiàn)K均值聚類(lèi),通過(guò)hclust實(shí)現(xiàn)層次聚類(lèi)。例如無(wú)監(jiān)督模型中的關(guān)聯(lián)規(guī)則,R實(shí)現(xiàn)是非常方便的。我們利用arules包實(shí)現(xiàn)apriori算法,利用arulesViz包對(duì)規(guī)則進(jìn)行可視化。這個(gè)也是我覺(jué)得R強(qiáng)大之一,可以把枯燥的模型結(jié)果進(jìn)行可視化展示,讓你的分析結(jié)果更具體更形象。
舉一個(gè)道具銷(xiāo)售的例子來(lái)說(shuō)明,假如說(shuō)我們數(shù)據(jù)庫(kù)有這樣的數(shù)據(jù)。
第一列是用戶(hù)id、第二列是道具名稱(chēng)、第三列是購(gòu)買(mǎi)數(shù)量。關(guān)聯(lián)關(guān)系,我們想從這堆數(shù)據(jù)里面發(fā)現(xiàn)一些購(gòu)買(mǎi)偏好和道具的關(guān)聯(lián)慣性。 首先是數(shù)據(jù)重組:
然后是數(shù)據(jù)轉(zhuǎn)換:
可以看到,實(shí)現(xiàn)了數(shù)據(jù)轉(zhuǎn)換,為建模做好了準(zhǔn)備,現(xiàn)在就可以建模和查看結(jié)果了。
rules <- apriori(data_class,parameter=list(support=0.005,confidence=0.1,target="rules"))
此行就是建模代碼,R只需要一行命令就可以完成關(guān)聯(lián)規(guī)則建模的工作。
這個(gè)是關(guān)聯(lián)規(guī)則的結(jié)果,我們也可以進(jìn)行可視化。
通過(guò)arulesViz包的plot函數(shù)實(shí)現(xiàn)的。以上就是無(wú)監(jiān)督模型的一些介紹。
接下來(lái),我們簡(jiǎn)單聊下有監(jiān)督模型。經(jīng)典的線性回歸、Logitic回歸、決策樹(shù)、樸素貝葉斯、KNN近鄰分類(lèi),還有這幾年非常流行的袋裝、隨機(jī)森林、神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)等等,這些都屬于有監(jiān)督模型,R都有相應(yīng)的包可以實(shí)現(xiàn),非常簡(jiǎn)單。決策樹(shù)文章中已經(jīng)分享過(guò),我們就簡(jiǎn)單來(lái)了解下隨機(jī)森林的R實(shí)現(xiàn)吧。
使用隨機(jī)森林和袋裝的目的是:實(shí)際中,只使用單一模型決定一組數(shù)據(jù)的分類(lèi)常常并不可行,因?yàn)閷?duì)數(shù)據(jù)分類(lèi)描述比較清晰的一個(gè)模型也許異常復(fù)雜,只使用一種準(zhǔn)則建立的模型很難避免不出現(xiàn)過(guò)度擬合。因而,一個(gè)更好的方法是采用投票方法從這些分類(lèi)器的結(jié)果中選擇最優(yōu)的模型,換句話說(shuō),如果我們對(duì)不同算法的預(yù)測(cè)結(jié)果取平均,相比只使用一個(gè)分類(lèi)器,可能會(huì)得到更好的分類(lèi)模型。
R的randomForest包中的randomForest函數(shù)實(shí)現(xiàn)隨機(jī)森林算法,并提供了importance和varImpPlot兩個(gè)函數(shù)用來(lái)評(píng)估每個(gè)屬性的重要性,其中importance函數(shù)將列表展示模型中的每個(gè)屬性的重要性,而varImpPlot函數(shù)則可以通過(guò)繪制平均精確率下降及平均基尼下降曲線實(shí)現(xiàn)屬性重要性的可視化。
數(shù)據(jù)分析咨詢(xún)請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實(shí)戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無(wú)論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢(xún)效率:打破 “拆分必慢” 的認(rèn)知誤區(qū) 在 MySQL 數(shù)據(jù)庫(kù)管理中,“大表” 始終是性能優(yōu)化繞不開(kāi)的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫(kù)表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動(dòng)態(tài)隨機(jī)一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開(kāi)始提取前,需先判斷 TIF 文件的類(lèi)型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價(jià)值的專(zhuān)業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫(kù)表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實(shí)戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫(kù))處理 Excel 數(shù)據(jù)時(shí),“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗(yàn)與 t 檢驗(yàn):差異、適用場(chǎng)景與實(shí)踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)領(lǐng)域,假設(shè)檢驗(yàn)是驗(yàn)證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專(zhuān)業(yè)操盤(pán)手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計(jì)劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計(jì)劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對(duì)象的 text 與 content:區(qū)別、場(chǎng)景與實(shí)踐指南 在 Python 進(jìn)行 HTTP 網(wǎng)絡(luò)請(qǐng)求開(kāi)發(fā)時(shí)(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價(jià)值的核心操盤(pán)手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫(kù)表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請(qǐng)求工具對(duì)比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請(qǐng)求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)的科學(xué)計(jì)數(shù)法問(wèn)題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)時(shí)的科學(xué)計(jì)數(shù)法問(wèn)題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價(jià)值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運(yùn)營(yíng)問(wèn)題、提升執(zhí)行效率的核心手段,其價(jià)值 ...
2025-09-12用 SQL 驗(yàn)證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實(shí)戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過(guò)程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計(jì)” 與 “用戶(hù)體驗(yàn) ...
2025-09-11塔吉特百貨孕婦營(yíng)銷(xiāo)案例:數(shù)據(jù)驅(qū)動(dòng)下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見(jiàn)頂” 的當(dāng)下,精準(zhǔn)營(yíng)銷(xiāo)成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價(jià)值 在數(shù)據(jù)驅(qū)動(dòng)決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類(lèi)分析:從操作實(shí)踐到業(yè)務(wù)價(jià)值挖掘 在數(shù)據(jù)分析場(chǎng)景中,聚類(lèi)分析作為 “無(wú)監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計(jì)模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價(jià)值導(dǎo)向 統(tǒng)計(jì)模型作為數(shù)據(jù)分析的核心工具,并非簡(jiǎn)單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10