天天看點

慕小白聊R與Python概述

淺談Python與R

  • 概述
    • 對于社會科學
    • 對于資料科學
    • 對于計算機科學
    • 總結

菜鳥小白的第一篇小博文

概述

關于R和Py到底應該學哪一個,這個問題經常被剛入手統計or資料科學的同學們熱切讨論。其實,很多大佬已經對R與Py做了很深刻的對比,不比他們,我單從一個初學者的角度,談談R和Py。

本人公共管理專業出身,屬于社會科學類(管理學),在代碼的世界摸爬滾打全靠自己,練就了一身自學的本領,不怕苦不怕累。我的第一門程式設計語言是VB,簡單的文法,友好的使用者界面,便捷的控件調用給我留下了很深的印象,啟發了我的程式設計思想,但是也給我學習其他語言帶來了很大的不适應性。好在後來曲線救國,從MATLAB入手,了解了相關思想後,又學習了C,打這兒開始,我就可以看懂算法了(網絡上經典算法實作以C居多,以VB實作極少)。之後是R,個人覺得R和MATLAB真的蠻像的,用起來又十分友善,且文法簡單到不能再簡單,沒有嚴格的限制。後來因為轉戰機器學習的原因,學了python,個人覺得比R好用太多,在機器學習方面,速度比R快了數倍(之後會提到),但是文法稍顯不太友好,讓我有一種說不出的别扭。總體而言,我對這些語言都有了一些初步的認識。但是對于此類學科的其他同學而言,可能沒有精力涉獵那麼多種語言,下面,我将逐漸安利一波。

對于社會科學

剛剛提到,本人公共管理專業出身,屬于社會科學類(管理學),社會科學類專業一般由理論出發探索資料、由資料驅動反哺理論;會學一些相關的統計學知識——簡單的統計描述、統計推斷(回歸分析、假設檢驗)諸如此類(這裡不包括計量經濟學,他們稍顯複雜)。而且樣本數量一般不超過四千個;一般隻需解釋、描述,不需要做預測;由于學科理論的限制,代入模型的自變量不會太多(資料科學的同學可以了解為“特征”),嵌套模型二十個特征已屬于較多數量水準。綜上,社會科學類的統計工具的運算能力不需要那麼強大,反倒要在使用者互動界面、繪圖、常用分析手段的便捷程度上下功夫。是以,很顯然,python的強大在社科類專業領域無法得到很好的展現。

社科類專業常用的軟體有:SAS、SPSS、Stata,其中spss是按鈕化傻瓜操作,雖然繁瑣但是功能強大,甚至還可以做神經網絡,完全可以滿足社會科學類資料分析的需要。在這種局面下,當然是學好常用的軟體會比較好,常用的軟體掌握娴熟了,再來考慮學R還是Python。

當然,如果你覺得你已經很好了,可以嘗試一下R,比較推薦的是RStudio這個IDE,功能強大不說,界面也簡潔大方,比stata好看不知道多少。男人嘛,都是視覺動物。需要提及的是,R的矩陣、資料框變換可能對于剛入門的同學來說不是那麼友好,但是相信我,絕對是除MATLAB外最便捷的一款軟體,比python友善太多。因為社科類的研究可能會涉及到重新編碼或者是變量篩選之類的操作,如果矩陣、資料框的操作不熟悉,會耗費你大量的時間,還不如直接用專業的統計學軟體,又快又省心。當然,你要是純粹是為了用R而用R,大可以用統計軟體處理資料後在導入R中進行運算,但這。。。這不是撐的嗎?

對于經濟學專業的同學,除了eviews這個我沒用過的軟體之外,業界可能比較流行R語言。解決一般的分析問題應該是足夠了。

R的強大在于他有一系列包,幾乎可以解決一般人會遇到的任何問題,以及簡潔的包管理方式,随時勾選即可調取。譬如ggplot2,如果要用他繪圖,隻需在packages頁面下勾選“ggplot2”,徹底解決了文科小糊塗記不住奇奇怪怪包名的問題。(這個包據說特别強大,的确,我到現在也隻解鎖了一小部分用法而已。)

對于資料科學

資料科學,絕對是Python,這個沒的說。前文提到,“我認為python比R快太多”,這個可能初學者體會不到。曾經某次,做文本情感分類,用R做語料庫後生成詞頻逆文檔矩陣,再用随機森林分類器進行訓練,也不過是7000+特征,6000+樣本,竟然跑了五個多小時,最後還顯示報錯。當時簡直崩潰。從那開始,更加努力地學習python,果斷放棄用調試一次五個小時的R。更坑的是,R隻能用一個console,他要是卡死了,你不舍得終止都不行。怎麼?想另起爐竈?門兒都沒有啊!

R對于資料科學來說,特别是處理大樣本資料、特征數量多的情況下,記憶體管理是一個相當緻命的問題。譬如處理稀疏矩陣來說,如果訓練集的次元過大(可能不需要達到10000?),電腦全部記憶體就會被吃掉。對,全部。而python就不會,處理相同項目記憶體占用率絕不會超過40%,這就是差距。當然,由于本人菜雞,還暫時沒有弄清楚為什麼二者差異如此巨大,但是敝人推測,應該和流式處理有關。

還有,python的閱聽人更多,具備強大的社群支援,現在所遇到的問題可能幾年前就有類似的文章,如果不做研究的話可能很難遇到一個前無古人的難題。R社群規模(群衆基礎)就小了很多,如果你不是用R做簡單的統計而是做比較複雜的操作,可能CSDN、人大經濟論壇之類的網站就滿足不了你了,也許需要購買相關專業書籍,who knows?

對于計算機科學

對你們來說,學個語言很難嗎?小孩子才做選擇,老子全都要!

當然,要是想用R手撕代碼做開發,抑或是造輪子,那我也隻能說你想不開。

有一句話我印象特别深刻,R隻能是R,不可能是别的東西,而python可以是你想要變成的任何東西。我覺得非常精辟,供參考。

總結

本文主要是考慮到大部分人時間有限,不可能處處精通;抑或是有燃眉之急、急需在R與python中做出抉擇,才寫的一篇“菜雞導航文”,本來還想再比較一下他們的特點,如繪圖之類的,後來一想,大部分已是老生常談,前人已有較為完備的叙述,索性作罷。

希望對你們有所幫助。(以後也許還會再添一些,最近期末,不能浪太多,溜了)