R語言和 Python —— 一個錯誤的分裂

最近有一些文章提出與年齡相關的問題:“嶄露頭角的年輕數據科學家們是學習R語言還是Python更好?”

答案似乎都是“視情況而定”,在現實中沒有必要在R和Python中做出選擇,因爲你兩個都用得到。推薦閱讀《Python3.0科學計算指南》。

它被稱爲RPy2:

http://rpy.sourceforge.net/rpy2/doc2.1/html/introduction.html

什麼是”數據科學”?

在談論RPy2之前,先來說一下“數據科學”,我要說的是“數據科學”是一個奇怪的詞。因爲幾乎所有的科學都是“數據科學”。“無數據科學”則是完全不同的領域:哲學。“數據科學”是一門通過系統觀察,對照實驗,貝葉斯推理的開放試驗理念的科學學科。

“數據科學”的目標是從數據中得出有效的統計推論。標籤“數據”是指數據用於做什麼並不重要,但這是錯誤的:它是難以且不可能做到科學的在沒有得到數據的詳細信息,得去了解系統的弱點並生產出來,智能、靈敏的應對非理想好數據。

任何有趣的數據集至少有以下一些特性:缺失值,異常值和噪聲。缺失值:顧名思義就是缺失的值。異常值:離羣怪異的事件,由於某種原因或其他的事件其值遠遠的超出合理界限。噪聲的是,從所測量的值的隨機(或非隨機的)影響的着結果的分佈。一個良好的測量分佈,異常值和噪聲在噪聲不同下一般有較容易理解的因素,而異常值通常是很少發生的,我們不能通過分佈很好的理解。

對於處理這類事情R,Python和RPY的都是有用的工具。

爲什麼R非常適合數據科學

R語言對有經驗的統計分析師來說是非常輕量級. 它由科學家創造,對絕大多數的數據管理任務來說都非常輕鬆。特別適合以下幾種數據管理任務:

1.標記數據;

2.填充遺漏值(譯者注:比如10行數據每行固定9列,但是第三行卻只有5列數據,可以通過R的函數自動補全另外的5列值)

3.過濾。

R語言對標記數據的支持非常友好. R語言的“data frame”概念,使得通過對數據列和數據行頭來分割組合數據、標記數據,然後以純數值的矩陣數據交給算法處理. 而傳統的數據科學開發語言,如Python對數據的處理都需要開發者自己完成,需要消耗開發者大量時間且容易出錯。

處理或丟棄遺漏值、離羣值(譯者注:極值,如最大值、最小值)在數據中是非常基本但重要的任務. 某些情況下,本來是有利的數據,卻因爲測量誤差等原因變成了不利、反對的數據。(譯者注:比如越趨近於1才表示越可能是。)你如何處理這些事情可以對你的分析結果產生很大的影響。

R語言提供了豐富的算法來處理長期以來科學實踐中出現的各種數據有關問題,雖然這些算法仍然需要自己去嘗試和判斷選擇,以選擇最恰當的數據處理算法。

RPy2: 架起R語言與Python之間的橋樑

Pandas,Python的數據分析庫,目前它已經有很多相同功能,但是RPy2創造了一條很好的從R語言到Python的遷移路線,它讓你在學習Python的時候,把R語言作爲一個附屬部分來學習,對於很多有豐富實驗開發經驗的分析師會使用R語言,當他們想把算法融入一個Python應用程序,並分發給用戶時,他們也可以使用RPy2。

執行這種遷移的能力,而不離開R語言的概念模型是很有價值的,但從另一個角度來說,這也是一個限制,能夠使用一個真正的通用編程語言,如:Python,來包裝概念模型,並使得這個用戶友好的應用程序有多種複雜的附加功能(打印,網絡,USB支持,等等)是至關重要的。推薦閱讀《Python深度學習》。

舉例來說,我已經使用了這種方法來創建讀取傳感器數據的Python應用,通過RPy2處理,以各種方式顯示給客戶,我不知道怎麼用R語言讀取傳感器數據,應該是有某種方法的。而Python已經做好了我需要的模塊,即使沒有也非常容易擴展。

如果你還不知道R語言,我推薦你學習Python並且使用RPy2來訪問R語言的函數。你學習一種語言獲得了兩種能力。一旦你學習過RPy,再轉到純R語言也不是什麼大問題,但是,你想要反過來就沒那麼容易了。


原文發佈時間爲:2018-11-13

本文來自雲棲社區合作伙伴“數據與算法之美”,瞭解相關信息可以關注“數據與算法之美”。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章