成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python與R的爭鋒:大數(shù)據(jù)初學(xué)者該怎樣選?

huashiou / 2437人閱讀

摘要:進(jìn)行時序分析的時常用模型,其中指的是差分項,和分別代表自回歸項和移動平均項。構(gòu)建模型使用最多的就是模塊,該模塊可以用來進(jìn)行時間序列的差分,建模和模型的檢驗。的思想是把數(shù)據(jù)分解成三個成分平均水平,趨勢,周期性。

在當(dāng)下,人工智能的浪潮席卷而來。從AlphaGo、無人駕駛技術(shù)、人臉識別、語音對話,到商城推薦系統(tǒng),金融業(yè)的風(fēng)控,量化運(yùn)營、用戶洞察、企業(yè)征信、智能投顧等,人工智能的應(yīng)用廣泛滲透到各行各業(yè),也讓數(shù)據(jù)科學(xué)家們供不應(yīng)求。Python和R作為機(jī)器學(xué)習(xí)的主流語言,受到了越來越多的關(guān)注。數(shù)據(jù)學(xué)習(xí)領(lǐng)域的新兵們經(jīng)常不清楚如何在二者之間做出抉擇,本文就語言特性與使用場景為大家對比剖析。

一.Python和R的概念與特性

Python是一種面向?qū)ο?、解釋型免費(fèi)開源高級語言。它功能強(qiáng)大,有活躍的社區(qū)支持和各式各樣的類庫,同時具備簡潔、易讀以及可擴(kuò)展等優(yōu)點,在近幾年成為高人氣的編程語言。

Python的優(yōu)勢:

1、Python的使用場景非常多,不僅和R一樣可以用于統(tǒng)計分析,更廣泛應(yīng)用于系統(tǒng)編程、圖形處理、文本處理、數(shù)據(jù)庫編程、網(wǎng)絡(luò)編程、Web編程、網(wǎng)絡(luò)爬蟲等,非常適合那些想深入鉆研數(shù)據(jù)分析或者應(yīng)用統(tǒng)計技術(shù)的程序員。

2、目前主流的大數(shù)據(jù)和機(jī)器學(xué)習(xí)框架對Python都提供了很好的支持,比如Hadoop、Spark、Tensorflow;同時,Python也有著強(qiáng)大的社區(qū)支持,特別是近年來隨著人工智能的興起,越來越多的開發(fā)者活躍在Python的社區(qū)中。

3、Python作為一種膠水語言,能夠和其他語言連結(jié)在一起,比如你的統(tǒng)計分析部分可以用R語言寫,然后封裝為Python可以調(diào)用的擴(kuò)展類庫。

R語言是一種用來進(jìn)行數(shù)據(jù)探索、統(tǒng)計分析和作圖的解釋型語言,但更像一種數(shù)學(xué)計算的環(huán)境。它模塊豐富,為數(shù)學(xué)計算提供了極為方便的編程方式,特別是針對矩陣的計算。

R語言的優(yōu)勢:

1、R語言擁有許多優(yōu)雅直觀的圖表,常見的數(shù)據(jù)可視化的工具包有:

· 交互式圖表rCharts、Plotly,交互時序圖dygraphs,交互樹狀圖TreeMap

· ggplot2-一個基于圖形語法的繪圖系統(tǒng)

· lattice-R語言格子圖形

· rbokeh-針對Bokeh的R語言接口

· RGL-使用了OpenGL的3D可視化

· Shiny-用于創(chuàng)建交互式應(yīng)用和可視化的框架

· visNetwork-交互式網(wǎng)絡(luò)可視化

散點圖

時序圖

詞云圖

2、擁有大量專門面向統(tǒng)計人員的實用功能和豐富的數(shù)學(xué)工具包。自帶base一R的基礎(chǔ)模塊、mle一極大似然估計模塊、ts一時間序列分析模塊、mva一多元統(tǒng)計分析模塊、survival一生存分析模塊等,同時用戶可以靈活使用數(shù)組和矩陣的操作運(yùn)算符,及一系列連貫而又完整的數(shù)據(jù)分析中間工具。

3、語言簡潔上手快,不需要明確定義變量類型。比如下面簡簡單單三行代碼,就能定義一元線性回歸,是不是很酷炫:

x <- 1:10
y <- x+rnorm(10, 0, 1)
fit <- lm(y ~ x)

同時,R語言對向量化的支持程度高,通過向量化運(yùn)算,數(shù)據(jù)在計算過程中前后不依賴,是一種高度并行計算的實現(xiàn),也避免了許多循環(huán)結(jié)構(gòu)的使用。

當(dāng)然了,相比于Python它也存在著一些劣勢。比如內(nèi)存管理問題,在大樣本的回歸中,如使用不當(dāng)就會出現(xiàn)內(nèi)存不足的情況,但目前spark也提供了對R的支持,開發(fā)者可以使用sparkR進(jìn)行大數(shù)據(jù)的計算處理。

二.Python和R在文本信息挖掘和時序分析方面的區(qū)別

Python和R都有非常強(qiáng)大的代碼庫,Python有PyPi,R有CRAN。但兩者方向不同,Python使用的范圍更加廣泛,涉及到方方面面;R更專注統(tǒng)計方面,但在數(shù)據(jù)量大時運(yùn)行速度很慢。下面我針對數(shù)據(jù)分析中的兩種使用場景來比較Python和R:

1. 文本信息挖掘:

文本信息挖掘的應(yīng)用非常廣泛,例如根據(jù)網(wǎng)購評價、社交網(wǎng)站的推文或者新聞進(jìn)行情感極性分析等。這里我們用例子分析比較一下。

Python有良好的程序包幫助我們進(jìn)行分析。比如NLTK,以及專門針對中文的SnowNLP,包含了中文分詞、詞性標(biāo)注、情感分析,文本分類、TextRank、TF-IDF等模塊。

在用Python做情感極性分析時,首先需要將句子分解為單詞,這里我們可以使用Python中jieba分詞,使用起來也非常簡單:

word=jieba.cut(m,cut_all=False)

然后操作特征提取,可以利用NLTK中的stopwords先去除停用詞。如果有需要,可以對文本進(jìn)行向量化處理,這里我們可以采用Bag of Words,選擇TF-IDF進(jìn)行基于權(quán)重的向量轉(zhuǎn)化,也可以使用Word2Vec進(jìn)行基于相似度的轉(zhuǎn)化。接下來,使用sklearn包中的pca進(jìn)行降維:

pca=PCA(n_components=1)

newData=pca.fit_transform(data)

除了pca,還可以選擇使用互信息或者信息熵等其他方法。

之后,我們進(jìn)行分類算法模型訓(xùn)練和模型評估,可以使用樸素貝葉斯(NaiveBayes),決策樹(Decision Tree)等NLTK 自帶的機(jī)器學(xué)習(xí)方法。

使用R進(jìn)行情感極性分析

首先需要對數(shù)據(jù)進(jìn)行預(yù)處理,安裝Rwordseg/rJava(其中有不少坑)兩個包;

進(jìn)行數(shù)據(jù)清理清除掉沒用的符號后,進(jìn)行分詞:Rwordseg中的segmentCN方法可以對中文進(jìn)行分詞。當(dāng)然,也可以使用jiebaR;

接下來構(gòu)建單詞-文檔-標(biāo)簽數(shù)據(jù)集,去除停用詞;

創(chuàng)建文檔-詞項矩陣,可以選擇TermDocumentMatrix,使用weightTfIdf方法得到tf-idf矩陣;

最后用e1071包中的貝葉斯方法進(jìn)行文本分類,或者可以用RTextTools包中的其他機(jī)器學(xué)習(xí)算法來完成分類,其中包含九種算法:BAGGING(ipred:bagging):bagging集成分類

BOOSTING (caTools:LogitBoost):Logit Boosting 集成分類

GLMNET(glmnet:glmnet):基于最大似然的廣義線性回歸

MAXENT(maxent:maxent):最大熵模型

NNET(nnet:nnet) :神經(jīng)網(wǎng)絡(luò)

RF(randomForest:randomForest):隨機(jī)森林

SLDA(ipred:slda):scaled 線性判別分析

SVM(e1071:svm) :支持向量機(jī)

TREE (tree:tree):遞歸分類樹

2.時序分析:

時間序列分析是根據(jù)系統(tǒng)觀察得到的時間序列數(shù)據(jù),通過曲線擬合和參數(shù)估計來建立數(shù)學(xué)模型的理論和方法,通常用于金融領(lǐng)域、氣象預(yù)測、市場分析領(lǐng)域等。R語言擁有許多程序包可用于處理規(guī)則和不規(guī)則時間序列,因而更有優(yōu)勢。

Python進(jìn)行時序分析的時常用ARIMA(p,d,q)模型,其中d指的是差分項,p和q分別代表自回歸項和移動平均項。構(gòu)建ARIMA模型使用最多的就是statsmodels模塊,該模塊可以用來進(jìn)行時間序列的差分,建模和模型的檢驗。這里例舉一個周期性預(yù)測的例子:

下面是一組數(shù)據(jù),代表美國某公交公司發(fā)布的五十年中每年的乘客相關(guān)數(shù)據(jù)(比如1950-2000):

data = [9930, 9318, 9595, 9972, 6706, 5756, 8092, 9551, 8722, 9913, 10151, 7186, 5422, 5337, 10649, 10652, 9310, 11043, 6937, 5476, 8662, 8570, 8981, 8331, 8449, 5773, 5304, 8355, 9477, 9148, 9395, 10261, 7713, 6299, 9424,9795, 10069, 10602, 10427, 8095, 6707, 9767, 11136, 11812, 11006, 11528, 9329, 6818, 10719, 10683]

1).首先,使用pandas進(jìn)行處理和存儲數(shù)據(jù):

data=pd.Series(data)

2).然后需要對數(shù)據(jù)進(jìn)行平穩(wěn)性檢驗,一般利用單位根檢驗,常用的方法有ADF、DFGLS、PP等等:

Python中直接用ADF(data), DFGLS(data)就可以得出pvalue的結(jié)果

3).序列平穩(wěn)性是進(jìn)行時間序列分析的前提條件,如果上一個步驟顯示結(jié)果不平穩(wěn),就需要對時間序列做平穩(wěn)性處理,一般用差分法最多:

diff1 = data.diff(2)

其中diff(object)表示差分的階數(shù),這里我們使用2階,當(dāng)然你也可以用1階、3階、4階等等

4).進(jìn)行白噪聲檢驗:

value=acorr_ljungbox(data,lags=1)

5).現(xiàn)在,我們的ARIMA(p,d,q)中的d=2,接下來我們進(jìn)行模型選擇。第一步是計算出p和q,首先檢查平穩(wěn)時間序列的自相關(guān)圖和偏自相關(guān)圖,通過sm.graphics.tsa.plot_acf (data)和sm.graphics.tsa.plot_pacf(data),然后通過系數(shù)情況進(jìn)行模型選擇,可供選擇的有AR,MA,ARMA,ARIMA。

6).模型訓(xùn)練:model=sm.tsa.ARMA(data,(p,d,q)).fit(),此處用ARMA模型計算出p和q,從而訓(xùn)練出模型。

用R來構(gòu)建時間序列模型

R針對時間序列有各式各樣的工具包,比如:

library(xts),library(timeSeires),library(zoo)—時間基礎(chǔ)包

library(urca)--進(jìn)行單位根檢驗

library(tseries)--arma模型

library(fUnitRoots)--進(jìn)行單位根檢驗

library(FinTS)--調(diào)用其中的自回歸檢驗函數(shù)

library(fGarch)--GARCH模型

library(nlme)--調(diào)用其中的gls函數(shù)

library(fArma)--進(jìn)行擬合和檢驗

library(forecast)—arima建模

下面我介紹一下R語言中forecast工具包里面兩個很強(qiáng)大的工具:ets和auto.arima。用戶什么都不需要做,這兩個函數(shù)會自動挑選一個最恰當(dāng)?shù)乃惴ㄈシ治鰯?shù)據(jù)。比如用ets來處理:

fit<-ets(train)

accuracy(predict(fit,12),test)

或者用auto.arima處理:

fit<-auto.arima(train)

accuracy(forecast(fit,h=12),test)

除此之外,forecast包中有針對增長或者降低趨勢并且存在季節(jié)性波動的時間序列算法Holt-Winters。Holt-Winters的思想是把數(shù)據(jù)分解成三個成分:平均水平(level),趨勢(trend),周期性(seasonality)。R里面一個簡單的函數(shù)stl就可以把原始數(shù)據(jù)進(jìn)行分解。

本文主要從各自優(yōu)勢及具體例子中分析了Python與R兩種編程語言。不難看出,二者在“綜合實力”上難分伯仲,具體選擇哪一種深入學(xué)習(xí),依然需要考慮自己實際期望解決的問題、應(yīng)用的領(lǐng)域等等方面。最后歡迎大家就大數(shù)據(jù)編程語言相關(guān)問題與我溝通交流~

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/41536.html

相關(guān)文章

  • 0x01 念念Python,必有回響

    摘要:摘要靈蛇出現(xiàn),必有異像,最熱的領(lǐng)域,估計非數(shù)據(jù)分析挖掘領(lǐng)域莫屬了。靈蛇出現(xiàn),必有異像蛇有靈性,蟒蛇更甚。這便是生態(tài)圈的力量,不以個人的意志為轉(zhuǎn)移。如若有心,且仔細(xì)看圖識字念念不忘,必有回響真若有心于數(shù)據(jù)領(lǐng)域,甚或欲從事數(shù)據(jù)科學(xué)之職業(yè)。 摘要:靈蛇出現(xiàn),必有異像,Python最熱的領(lǐng)域,估計非數(shù)據(jù)分析、挖掘領(lǐng)域莫屬了。以Scikit-Learn為代表的數(shù)據(jù)分析領(lǐng)域,從這里開始,便是Pyt...

    xzavier 評論0 收藏0
  • 從入門到求職,成為數(shù)據(jù)科學(xué)家終極指南

    摘要:我強(qiáng)烈推薦這本書給初學(xué)者,因為本書側(cè)重于統(tǒng)計建模和機(jī)器學(xué)習(xí)的基本概念,并提供詳細(xì)而直觀的解釋。關(guān)于完善簡歷,我推薦以下網(wǎng)站和文章怎樣的作品集能幫助我們找到第一數(shù)據(jù)科學(xué)或機(jī)器學(xué)習(xí)方面的工作簡歷是不夠的,你還需要作品集的支撐。 showImg(https://segmentfault.com/img/bVblJ0R?w=800&h=533); 作者 | Admond Lee翻譯 | Mik...

    yanwei 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<