1. 程式人生 > >對於機器學習,到底該選擇哪種程式語言?

對於機器學習,到底該選擇哪種程式語言?

開發者到底應該學習哪種程式語言才能獲得機器學習或資料科學這類工作呢?這是一個非常重要的問題。我們在許多論壇上都討論過這個問題。今天,我將給出我自己的答案並解釋其中原因,但我們首先看一些資料。畢竟,這是機器學習者和資料科學家應該做的事情:看資料,而不是看觀點。


讓我們看一些資料。我將在Indeed.com上使用趨勢搜尋,它可以根據時間搜尋實際工作機會中特定的條款。這表明了僱主們正在尋找擁有該技能的人才。然而,請注意,這並不是一項有效使用技能的民意調查,這種指標更能體現技能的受歡迎程度。


話不多說,上資料。我搜索關鍵詞“機器學習”和“資料科學”一,搜尋選項包括程式語言Java、C、C+++、JavaScript,還包括了Python和R,因為我知道它在機器學習和資料科學方面很受歡迎,當然還有Scala,考慮到它與Spark的關係,再加上Julia,一些開發者認為這是程式設計界的“the next big thing”。執行這個查詢,我們得到的資料如下:


0?wx_fmt=png


然後,我用關鍵詞“機器學習”重新搜尋時,又得到了類似的資料,如下:


0?wx_fmt=png


那麼,我們能從這些資料中得到什麼啟示呢?


首先,我們看到並不是“一招通吃”。在這種情況下,各種機器學習程式語言都很受歡迎。


其次,所有這些程式語言都在急劇增長,反映在過去幾年裡,企業對機器學習和資料科學的關注和需求正在急速增加。


第三,Python明顯領先其它程式語言,其次是Java,然後是R,再然後是C++。Python對Java的領先優勢正在增加,而Java在R上的領先地位正在下降。必須承認,我很驚訝地看到Java名列第二;我本來是以為是R語言。


第四,Scala的增長令人印象深刻。它在三年前幾乎是不存在的,現在和這些成熟的程式語言幾乎在同一個層面。當我們切換到Indeed.com上的資料的相對檢視時,這更容易發現。 


0?wx_fmt=png


第五,Julia的受歡迎程度雖然不明顯,但肯定有上升的趨勢。Julia將成為一種流行機器學習和資料科學程式語言嗎?未來會告訴你。


如果我們忽略Scala和Julia,以便能夠聚焦其他程式語言的增長,那麼我們毫無疑問可以確認:Python和R的增長速度要快於通用語言。

0?wx_fmt=png



考慮到增長率的差異,R的受歡迎程度可能很快就會超過Java。


當我們專注於深度學習這個問題時,資料是完全不同的:


0?wx_fmt=png


這時,Python仍然是領導者,但C++現在是第二,然後是Java,而C在第四,R只在第5。這裡顯然強調了高效能運算語言。Java正在快速發展。它可以很快達到第二名,就像一般的機器學習一樣。R不會很快接近頂部。令我驚訝的是Lua的缺席,儘管它在一個主要的深度學習框架(orch)中使用,而Julia不存在。


到這時,到底哪種語言才是最受歡迎的程式語言呢?答案應該很清楚了。當涉及到機器學習和資料科學工作時,Python、Java和R是最流行的技能。如果你想專注於深度學習,而不是一般的機器學習,那麼,在某種程度上來說C++、C也是值得考慮的。然而,請記住,這只是看待問題的一種方式。如果你想找一份工作,或者你只是想在業餘時間學習機器學習和資料科學,你可能會得到不同的答案。


我的個人答案呢?除了有許多頂級機器學習框架的支援之外,Python對我來說很適合,因為我有電腦科學的背景。對於開發新的演算法,我也會感到很舒服,因為我的大部分職業生涯都是用這種語言程式設計的。但這就是我,有不同背景的人可能會覺得用另一種語言更好。一個擁有有限程式設計技能的統計學家肯定會更喜歡R。一個強大的Java開發人員可以使用他最喜歡的語言,因為有大量的Java API的開放原始碼。對於這些圖表上的任何一種語言,都可以有類似的例子。


因此,我的建議是,在花大量時間學習一門語言之前,根據自己的情況來決定選擇哪種程式語言,切記千萬不可跟風。


參考連結:Indeed.com


SDCC 2017


11月25日, SDCC 2017“前端技術實戰線上峰會”將在CSDN學院以線上直播形式召開。


作為SDCC系列技術峰會的一部分,來自阿里巴巴、蘇寧雲商、美團點評、餓了麼、去哪兒網、白鷺時代等多家企業的前端專家及技術圖書作者,將圍繞React、AngularJS、Weex前端熱門框架在企業中的應用實踐,及WebAssembly、MVVM等技術熱點展開深入分享,幫助大家解決實際生產中遇到問題。每個演講時段均設有答疑交流環節,與會者和講師可零距離互動。


掃描下方二維碼,歡迎入群交流。


0?wx_fmt=png