數據科學101:Python比R更好嗎?

或者,Plotly是兩種語言通用的令人驚歎的圖形庫。(http://plot.ly/)Plotly(或Plot.ly)是使用Python構建的(特別是Django框架)。它的前端是用JavaScript構建的,並與Python,R,MATLAB,Perl,Julia,Arduino和REST集成。如果你正在嘗試構建一個webapp來展示你的可視化,我強烈建議你使用Plotly,因為它具有很棒的交互式圖表。

數據科學101:Python比R更好嗎?

Iris數據集的繪圖相關圖

預測分析

正如我之前提到的,Python和R都有強大的預測分析庫。在高水平的預測建模中很難比較兩者的表現。R是專門作為統計語言編寫的,因此與Python相比,它搜索與統計建模有關的信息要容易得多。在R中對邏輯迴歸一詞進行簡單的谷歌搜索將返回6,000萬條結果,這是在Python中搜索邏輯迴歸所得結果數量的37倍。但是,對於具有軟件工程背景的數據科學家可能更容易使用Python,因為R是由統計學家編寫的。雖然我發現與其他編程語言相比,R和Python同樣易於理解。

Kaggle用戶NanoMathias對Python和R哪一個是預測分析中的更好工具進行了徹底的調查。(https://www.kaggle.com/nanomathias/predicting-r-vs-python) 他總結說,在數據科學家和分析師中,Python和R用戶的數量幾乎相等。他的研究中一個有趣的發現是,已經編碼了12年以上的人傾向於選擇R而不是Python。這表明程序員選擇R或Python進行預測分析,更多的原因是他們的個人偏好做出的決定。

數據科學101:Python比R更好嗎?

R和Python用戶分析

嗯......所以普遍的共識是兩種語言在預測能力方面都非常相似。讓我們使用R和Python將邏輯迴歸模型擬合到Iris數據集,並計算其預測的準確性。(https://archive.ics.uci.edu/ml/datasets/iris)我選擇Iris數據集是因為它體積小,缺少數據缺失。沒有進行探索性數據分析(EDA)和特徵工程。我只是簡單地進行了80-20次訓練測試分割,並使用一個預測器來擬合邏輯迴歸模型。

數據科學101:Python比R更好嗎?

數據科學101:Python比R更好嗎?

使用R的glm模型準確率達到95%。不錯!

數據科學101:Python比R更好嗎?

數據科學101:Python比R更好嗎?

使用Python sklearn的LogisticRegression模型可以實現90%的準確率

使用R stat的glm函數和Python scikit-learn框架的邏輯迴歸模型,我將兩個邏輯迴歸模型擬合到Iris數據集的隨機子集中。我們在模型中只使用了一個預測器,利用萼片長度來預測花的種類。兩種型號都達到了90%或更高的準確率,R給出了更好的預測。然而,這不足以證明R具有比Python更好的預測模型。

邏輯迴歸模型只是你可以使用Python和R構建的眾多預測模型中的一個。Python相較於R不同的一個方面是其精心構建的深度學習模塊。流行的Python深度學習庫,包括Tensorflow,Theano和Keras。這些庫有充分的文檔記錄,我相信Siraj Raval已有數百個關於如何使用它們的Youtube教程。說實話,我寧願花一個小時在Keras編碼dCNNs(深度卷積神經網絡),也不願花費半天時間來弄清楚如何在R中實現它們。Igor Bobriakov已經制作了一個很好的信息圖表,描述了對Python、Scala和R中的流行庫提交和貢獻者的數量。

數據科學101:Python比R更好嗎?

“用於Python,R和Scala [信息圖]的頂級數據科學庫的比較”- Igor Bobriako

性能

測量編程語言的速度通常被認為是一項有偏差的任務。每種語言都帶有針對特定任務優化的內置插件(例如R如何針對統計分析進行優化)。使用Python和R進行性能測試可以通過多種不同方式完成。我在Python和R中編寫了兩個簡單的腳本來比較Yelp的學術用戶數據集的加載時間,該數據集略高於2千兆字節。(https://www.kaggle.com/yelp-dataset/yelp-dataset#yelp_academic_dataset_user.json)

R

數據科學101:Python比R更好嗎?

Python

數據科學101:Python比R更好嗎?

R加載json文件的速度幾乎比Python快5倍。 眾所周知,Python的加載時間比R快,如Brian Ray的測試所示。(http://nbviewer.jupyter.org/gist/brianray/4ce15234e6ac2975b335c8d90a4b6882)讓我們看看這兩個程序如何處理大型.csv文件,因為.csv是一種常用的數據格式。我們稍微修改上面的代碼來加載西雅圖書館清單數據集,這個數據集將近4.5千兆字節。(https://www.kaggle.com/city-of-seattle/seattle-library-collection-inventory/version/15)

R

數據科學101:Python比R更好嗎?

Python

數據科學101:Python比R更好嗎?

與Python pandas(用於數據操作和分析的Python編程語言)相比,R加載4.5千兆字節.csv文件的時間幾乎是它的兩倍。重要的是要知道,雖然pandas主要是用Python編寫的,但是庫中更關鍵的部分是用Cython或C編寫的。這可能會對加載時間產生隱藏影響,但具體還是取決於數據格式。

現在讓我們做一些有趣的事情。拔靴法是一種從群體中隨機重新採樣的統計方法。之前我已經做了足夠的Bootstrap,知道這是一個耗時的過程,因為我們必須反覆重新採樣數據以進行多次迭代。以下代碼分別測試R和Python中引導100,000次重複的運行時:

R

數據科學101:Python比R更好嗎?

Python

數據科學101:Python比R更好嗎?

R花了幾乎兩倍的時間來運行引導程序。鑑於Python通常被視為是一種“慢”編程語言,這是相當令人驚訝的。我慢慢開始後悔在R而不是Python中運行我所有的本科統計學作業。

結論

本文僅討論了Python和R之間的根本區別。就個人而言,我根據手頭的任務在Python和R之間進行了修改。最近,數據科學家一直在努力將Python和R結合使用。在不久的將來,很有可能會出現第三種語言,並最終超越Python和R的受歡迎程度。作為數據科學家和工程師,我們有責任跟上最新技術並保持創新。最後,我強烈建議你閱讀Karlijn Willems的“進行數據分析是選擇R還是Python?”(https://www.datacamp.com/community/tutorials/r-or-python-for-data-analysis)信息圖表為我們在本文中討論的內容提供了一個很好的視覺摘要,並提供了其他信息,包括工作趨勢等額外信息。


分享到:


相關文章: