99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀R語(yǔ)言初學(xué)者必須要知道的事兒
R語(yǔ)言初學(xué)者必須要知道的事兒
2017-02-16
收藏

R語(yǔ)言初學(xué)者必須要知道的事兒

2017年1月24日晚8點(diǎn)半,樂(lè)逗游戲挖掘團(tuán)隊(duì)負(fù)責(zé)人、資深R語(yǔ)言用戶謝佳標(biāo)帶來(lái)了主題為“數(shù)據(jù)分析利器:R語(yǔ)言快速入門(mén)”的Chat交流。以下是主持人孫莫默整理的實(shí)錄,記錄了謝佳標(biāo)與讀者之間交流的精彩問(wèn)答。

問(wèn):常用的數(shù)據(jù)分析工具有哪些?為什么選擇R語(yǔ)言作為分析工具?

答:常用的數(shù)據(jù)分析工具有很多,包括大家平時(shí)一直在用的excel,這就是個(gè)不錯(cuò)的分析工具,我們可以實(shí)現(xiàn)常用的數(shù)據(jù)分析、繪圖功能。但是涉及到復(fù)雜的模型時(shí),excel就顯得很吃力,此時(shí)就需要運(yù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è)的咨詢公司,不過(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)或者咨詢公司做的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é)合,也能與其他專業(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ù)分析師的首選工具。

問(wèn):R語(yǔ)言與Python的對(duì)比??jī)?yōu)勢(shì)劣勢(shì)?

答: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í)際工作中感興趣,可以查詢R會(huì)的一些資料。

R的主要優(yōu)勢(shì)是它有一個(gè)龐大的社區(qū),通過(guò)郵件列表,用戶貢獻(xiàn)的文檔和一個(gè)非?;钴S的堆棧溢出組提供支持。還有CRAN鏡像,一個(gè)用戶可以很簡(jiǎn)單地創(chuàng)造的一個(gè)包含R包的知識(shí)庫(kù)。這些包有R里面的函數(shù)和數(shù)據(jù),各地的鏡像都是R網(wǎng)站的備份文件,完全一樣,用戶可以選擇離你最近的鏡像訪問(wèn)最新的技術(shù)和功能,而無(wú)需從頭開(kāi)發(fā)。

所以我們數(shù)據(jù)分析師如果選擇R語(yǔ)言,是為了讓自己更專注數(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)是:

  1. 可視化能力強(qiáng)??梢暬ǔW屛覀兏行У乩斫鈹?shù)字本身,R和可視化是絕配。一些必看的可視化軟件包是ggplot2,ggvis,googleVis和rCharts。
  2. 完善的生態(tài)系統(tǒng)。R具有活躍的社區(qū)和一個(gè)豐富的生態(tài)系統(tǒng)。R包在CRAN,Bioconductor的和Github上。您可以通過(guò)Rdocumentation搜索所有的R包。
  3. 用于數(shù)據(jù)科學(xué)。R由統(tǒng)計(jì)學(xué)家開(kāi)發(fā),他們可以通過(guò)R代碼和包交流想法和概念,你不一定需要有計(jì)算機(jī)背景。此外企業(yè)界也越來(lái)越接受R。最先進(jìn)的算法一般在R中都能找到相應(yīng)的包實(shí)現(xià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能專心做數(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)之一是可視化方面。可視化是選擇數(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)建議:

  1. 你想解決什么問(wèn)題?
  2. 什么是你的領(lǐng)域中常用的工具?
  3. 其他可用工具是什么以及如何做這些涉及到的常用工具?

所以工具的選擇跟你做事情的目的有直接的關(guān)系,如果你是想快速實(shí)現(xiàn)數(shù)據(jù)分析和模型,做一些分析專項(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ì)在工作中也是兩種工具都有使用。

問(wèn):我的主要工作平臺(tái)是win,想要愉快地使用R,完整的工具鏈及配置是怎樣的?

答: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ù)查詢匯總,并將部分基礎(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名稱(這個(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ù)中。可以使用sqlSave(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è)查詢并返回結(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使用者不必依賴于前端、后端工程師就可以自己依照業(yè)務(wù)完成一些簡(jiǎn)單的數(shù)據(jù)可視化工作,快速驗(yàn)證想法的可靠性。

Shiny應(yīng)用包含兩個(gè)基本的組成部分:一個(gè)是用戶界面腳本(a user-interface script),另一個(gè)是服務(wù)器腳本(a server script)。

用戶界面(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)分享。

問(wèn):除了Java,R還可以把展示結(jié)果輸出到什么語(yǔ)言中呢?

答: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)了客戶端的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ā)。

問(wèn):之前沒(méi)有接觸過(guò)R語(yǔ)言這塊,但是明年可能要了解使用數(shù)據(jù)分析這塊,可以推薦下可以循序漸進(jìn)的學(xué)習(xí)流程嗎?

答:嗯,對(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)選擇適合的算法,并使用專業(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)自己的分析思維。

問(wèn):擴(kuò)展包的安裝除了在線安裝,還有其他方式嗎?如果有些包不在cran上,通過(guò)什么命令進(jìn)行安裝?

答:很多時(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ì)造成依賴包不能一并進(jìn)行安裝。所以如果進(jìn)行本地安裝時(shí)留意一下包所依賴的其他包。此外,我們有很多處于開(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上,大家有興趣可以嘗試下載安裝。

問(wèn):如何將excel數(shù)據(jù)導(dǎo)入到R中?

答:有多個(gè)包可以實(shí)現(xiàn)EXCEL數(shù)據(jù)的導(dǎo)入,不過(guò)最簡(jiǎn)單的方式是將其轉(zhuǎn)化為csv再通過(guò)read.table或read.csv命令導(dǎo)入。給大家介紹幾個(gè)專門(mén)導(dǎo)入excel數(shù)據(jù)的包。

例如,RODBC包中的odbcConnectExcel2007函數(shù)、xlsx包中的read.xlsx函數(shù)、XLConnect包中的loadworkbook和readWorksheet函數(shù)訪問(wèn)Excel2007文件。其中,RODBC、xlsx、XLConnect包都需要依賴于rJava包,也需要依賴于計(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è)不需要依賴java環(huán)境的包:readxl包。直接通過(guò)install.packages("readxl")進(jìn)行安裝,然后read_excel函數(shù)進(jìn)行excel數(shù)據(jù)的讀取,具體大家有時(shí)間可以去嘗試下,我就不進(jìn)行案例演示了。

問(wèn):R語(yǔ)言能創(chuàng)建哪些數(shù)據(jù)挖掘模型?如何對(duì)模型效果進(jìn)行評(píng)估?

答:算法模型一般分為兩種:有監(jiān)督模型、無(wú)監(jiān)督模型。比如我們常聽(tīng)到的聚類分析、關(guān)聯(lián)規(guī)則就是非常出名的無(wú)監(jiān)督模型。聚類分析用在用戶分群業(yè)務(wù)領(lǐng)域,在R中可以利用kmeans函數(shù)實(shí)現(xiàn)K均值聚類,通過(guò)hclust實(shí)現(xiàn)層次聚類。例如無(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ù)。

第一列是用戶id、第二列是道具名稱、第三列是購(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近鄰分類,還有這幾年非常流行的袋裝、隨機(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ù)的分類常常并不可行,因?yàn)閷?duì)數(shù)據(jù)分類描述比較清晰的一個(gè)模型也許異常復(fù)雜,只使用一種準(zhǔn)則建立的模型很難避免不出現(xiàn)過(guò)度擬合。因而,一個(gè)更好的方法是采用投票方法從這些分類器的結(jié)果中選擇最優(yōu)的模型,換句話說(shuō),如果我們對(duì)不同算法的預(yù)測(cè)結(jié)果取平均,相比只使用一個(gè)分類器,可能會(huì)得到更好的分類模型。

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ù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }