天天看點

一份語言選擇指南帶你玩資料科學,選出你心中支援的語言文章原标題《Which Languages Should You Learn For Data Science?》,作者:Peter Glesson,譯者:海棠,審閱:

<b></b>

一份語言選擇指南帶你玩資料科學,選出你心中支援的語言文章原标題《Which Languages Should You Learn For Data Science?》,作者:Peter Glesson,譯者:海棠,審閱:

随着大資料時代的到來,網絡每天會産生大量的資料,一些行業會對這些資料進行分析并協助企業不斷地發展新業務、建立營運模式等,比如電子商務、推薦系統等。那麼誰對這些大資料進行分析呢?對應的工作領域是資料科學(data science),該領域需要結合先進的統計知識、定量分析能力和程式設計能力。涉及到程式設計,大家都會面臨一個問題,有太多的程式設計語言可供選擇,那麼哪些程式設計語言适合資料科學領域呢?雖然沒有正确答案,但想成為一名成功的資料科學家将考慮以下幾點:

<b>特異</b><b>性</b><b></b>

當涉及到先進的資料科學時,你将不僅僅是老瓶裝新酒了,需要學習掌握你所選擇的程式設計語言提供的特定領域的各種軟體包和子產品。

<b>一般</b><b>性</b><b></b>

頂尖資料科學家将具有全面良好的程式設計技巧以及處理大量資料的能力。科學資料家的日常工作大多是圍繞原始資料進行一些處理或資料清洗。

<b>效率</b><b></b>

<b>性能</b><b></b>

在某些情況下,優化代碼的性能顯得至關重要,尤其是在處理大量的關鍵任務資料時。編譯語言通常比解釋語言快得多;同樣,靜态類型語言比動态類型的故障要多得多。顯而易見,權衡這些會下降生産力。在某種程度上,這被看作是一個雙刃劍(一般性-特異性,性能-效率)。每一種語言都會面臨這個問題。考慮到這些核心原則,讓我們看一下資料科學中使用的一些較流行的程式設計語言。以下是結合自己的個人經驗和研究,僅供參考!

<b>r</b>

<b>你</b><b>所</b><b>需要知道</b><b>的</b>

一份語言選擇指南帶你玩資料科學,選出你心中支援的語言文章原标題《Which Languages Should You Learn For Data Science?》,作者:Peter Glesson,譯者:海棠,審閱:

<b>許可證</b><b></b>

免費!

<b>贊成的</b><b>理由</b><b></b>

基礎設施是非常全面的、内置一些統計功能和方法,處理矩陣代數效果好。

<b>反對的理由</b><b></b>

領域特殊性,r語言對于統計和資料科學是很好的,但不适合通用程式設計;

孤僻,r語言有一些不同于其他程式設計語言的特點,例如:索引從1開始等;

<b>裁決——</b><b> </b><b>“為它的設計而精彩”</b><b></b>

r語言是一個功能強大的語言,擅長各種統計和資料可視化的應用并開放源代碼。

<b>python</b>

一份語言選擇指南帶你玩資料科學,選出你心中支援的語言文章原标題《Which Languages Should You Learn For Data Science?》,作者:Peter Glesson,譯者:海棠,審閱:

<b>你</b><b>所</b><b>需要知道</b><b>的</b><b></b>

python是一種易學的語言;

一些軟體包如pandas、scikit-learn、tensorflow使得python成為機器學習應用的不二選擇;

類型安全性:python是動态類型語言,類型錯誤是不可預料的;

對于具體的資料統計和分析的目的,有更快和更安全的通用語言替代python;

<b>裁決——“優秀的全才”</b><b></b>

<b>sql</b><b></b>

一份語言選擇指南帶你玩資料科學,選出你心中支援的語言文章原标題《Which Languages Should You Learn For Data Science?》,作者:Peter Glesson,譯者:海棠,審閱:

不同—— 某些是免費的,其他是收費的!

在查詢、更新和操縱資料庫非常高效;

聲明性文法使得sql語言非常易讀,而且沒有什麼歧義;

sql具有非常廣的應用範圍,使其成為一個非常熟悉的有用語言;

<b>反對</b><b>的</b><b>理由</b>

sql的分析能力是相當有限的——除了彙總、計數和平均資料等操作外,你的選擇是有限的;

對于來自指令式背景的程式員,對sql的聲明性文法會呈現出一個學習遺忘曲線;

<b>裁決——“長期且高效”</b><b></b>

sql是有用的作為一個資料處理語言不是作為一種先進的分析工具。然而,大多資料科學過程依賴于etl,sql的長壽和效率證明了它對于現代資料科學家來說是一種非常有用的語言。

<b>java</b><b></b>

一份語言選擇指南帶你玩資料科學,選出你心中支援的語言文章原标題《Which Languages Should You Learn For Data Science?》,作者:Peter Glesson,譯者:海棠,審閱:

第8版——免費!舊版本是收費的。

無處不在,許多現代的系統和應用程式都是建立在一個java後端;

強類型,java語言確定類型安全;

java是一種高性能、通用的彙編語言,這使得它适合于編寫高效的etl生産代碼和計算密集型機器學習算法;

對于特定的分析和更專門的統計程式而言,java的冗長使得它不太可能成為首選;

相比于特定領域語言如r語言,沒有大量的可供java進階統計方法庫;

<b>裁決——“資料科學的有力競争者”</b><b></b>

如果将java作為第一選擇的資料科學語言而言,你會發現java的高性能和類型安全的優勢。然而,你沒有考慮用于其他語言比如r或python範圍的具體軟體包。

<b>scala</b><b></b>

一份語言選擇指南帶你玩資料科學,選出你心中支援的語言文章原标題《Which Languages Should You Learn For Data Science?》,作者:Peter Glesson,譯者:海棠,審閱:

scala與spark結合相當于高性能叢集計算,對于使用高容量資料集的研究者來說,scala是一種理想的選擇;

多範式:scala程式員可以兩全其美,因為scala提供面向對象和函數式程式設計範式;

scala編譯成java位元組碼并運作在jvm上,使得它成為一個非常強大的通用型語言;

scala的建立和運作需要依賴于一些特定的內建開發環境,比如eclipse、intellij;

文法和類型系統描述複雜。這使得那些學過動态語言如python學者來說較困難;

<b>裁決——“适合于大資料”</b><b></b>

當它涉及到使用叢集計算處理大資料時,那麼scala結合spark是極好的解決方案,然而,如果你的應用程式不處理資料,scala隻會增加複雜度。

<b>julia</b><b></b>

一份語言選擇指南帶你玩資料科學,選出你心中支援的語言文章原标題《Which Languages Should You Learn For Data Science?》,作者:Peter Glesson,譯者:海棠,審閱:

julia是一個jit(即時)編譯語言,這讓它提供了良好的性能,它還提供了像python這樣的簡單、動态類型和腳本功能;

julia專門設計用于數值分析,也能夠進行通用程式設計;

可讀性;

不成熟,作為一個新的語言,julia的使用者者使用一些資料包時會不穩定,但核心語言本身穩定;

有限的軟體包,小的社群發展;

<b>裁決——“明日之星”</b><b></b>

julia作為一種新興的語言,它不像python和r語言那樣成熟,如果你願意耐心,可以關注它在未來幾年的發展。

<b>matlab</b><b></b>

一份語言選擇指南帶你玩資料科學,選出你心中支援的語言文章原标題《Which Languages Should You Learn For Data Science?》,作者:Peter Glesson,譯者:海棠,審閱:

專有——定價取決于你的使用情況

為數值計算而設計。matlab非常适合複雜的數學要求,如信号處理、傅裡葉變換和圖像處理等;

資料可視化,matlab有一些強大的内置繪圖功能;

matlab經常作為工程數學與應用數學等大學課程的一部分,是以,matlab在這些領域得到廣泛應用;

matlab不是通用程式設計的一個好選擇;

<b>裁決——“最好用的數學密集型應用程式”</b><b></b>

matlab在工業界和學術界被廣泛應用于定量和數值計算領域,使它成為資料科學一個重要選擇。當你的應用程式或日常的應用需要密集、進階的數學功能時,matlab是你的不二選擇。

<b>其他語言</b><b></b>

還有其他的主流語言,資料科學家對這些可能感興趣,下面讓我們快速的概述下!

<b>c</b><b>++</b><b></b>

一份語言選擇指南帶你玩資料科學,選出你心中支援的語言文章原标題《Which Languages Should You Learn For Data Science?》,作者:Peter Glesson,譯者:海棠,審閱:
“如果你寫的代碼做一些是為了特定的分析,可能隻會運作這麼一次,你願意花30分鐘寫一個程式,運作10秒,或10分鐘寫一個程式,運作1分鐘嗎?”

這雖然有點道理,但是對于重要的生産級性能,c++是實作低級别優化的機器學習算法的極佳選擇。

<b>裁決——“不适合日常工作,但适合性能關鍵時的應用”</b><b></b>

<b>javascript</b><b></b>

一份語言選擇指南帶你玩資料科學,選出你心中支援的語言文章原标題《Which Languages Should You Learn For Data Science?》,作者:Peter Glesson,譯者:海棠,審閱:

起步得晚(node.js隻有8歲!);

很少有一些相關的科學資料庫和子產品可用,這意味着沒有真正主流的興趣或動力;

node的強項是在異步i/o,廣泛使用編譯到javascript語言,可以想象下這對資料科學和實時etl處理結合是多麼的友善,但關鍵問題是這是否會與已經存在的東西有所不同。

<b>裁決——“</b><b>在</b><b>javascript可以被視為一個</b><b>重要</b><b>的資料科學語言</b><b>前</b><b>還有許多工作要做</b><b>”</b>

<b>perl</b><b></b>

一份語言選擇指南帶你玩資料科學,選出你心中支援的語言文章原标題《Which Languages Should You Learn For Data Science?》,作者:Peter Glesson,譯者:海棠,審閱:

<b>裁決——“</b><b>有用的通用腳本語言,但它沒有為</b><b>你</b><b>的資料科學的履歷提供真正的優勢</b><b>”</b>

<b>ruby</b><b></b>

一份語言選擇指南帶你玩資料科學,選出你心中支援的語言文章原标題《Which Languages Should You Learn For Data Science?》,作者:Peter Glesson,譯者:海棠,審閱:

<b>裁決——“</b><b>對于資料科學</b><b>而言,目前不是顯而易見的</b><b>選擇,但</b><b>這</b><b>不會傷害</b><b>你</b><b>的履歷</b><b>”</b>

<b>結論</b><b></b>

通過以上内容,現在你有了一個關于考慮資料科學的語言的指南。關鍵是要從一般性和特異性了解你的使用需求,以及個人針對性能和生産力而言誰優先的開發風格。

針對以上的内容,或許你有一個完全不同的建議,如果是這樣的話,請在下面留言 回複,我期待聽到你的回音。

感謝你的閱讀!

<b>作者資訊</b>

peter glesson:資料科學、統計和程式設計方面的作家