詳述機器學(xué)習(xí)最熱門的語言是什么?
應(yīng)該掌握哪門編程語言,才能獲得機器學(xué)習(xí)或數(shù)據(jù)科學(xué)的工作機會呢?這是一個銀彈的問題。許多論壇都在辯論這個問題。我會在本文中提供自己的答案,并解釋原因,但是我們要先來查看一些數(shù)據(jù)。畢竟,機器學(xué)習(xí)和數(shù)據(jù)科學(xué)的從業(yè)者應(yīng)該記住這一點:沒有調(diào)查就沒有發(fā)言權(quán)。
現(xiàn)在,讓我們來看一些數(shù)據(jù)。我們用indeed.com網(wǎng)站提供的趨勢搜索來提取統(tǒng)計數(shù)據(jù)。這些數(shù)據(jù)是從招聘信息中搜索出特定工作崗位隨時間變化的出現(xiàn)頻率,表明了雇主正在尋求哪些掌握什么技能的人才。但請注意,這并不是對哪些技能最有用的民間調(diào)查,而是體現(xiàn)了崗位技能流行度如何演變的一種趨勢(更確切地說,它可能接近崗位技能流行度的一階導(dǎo)數(shù),因為后者是招聘信息所列技能加上就業(yè)再培訓(xùn)技能減去退休和離職技能的結(jié)果。)
好了,讓我們看數(shù)據(jù)吧。我搜索了與“機器學(xué)習(xí)”和“數(shù)據(jù)科學(xué)”結(jié)合使用的技能,其中比較顯眼的編程語言是 Java、C、C++和 JavaScript。我還加上了就像 Scala之于 Spark那樣的機器學(xué)習(xí)和數(shù)據(jù)科學(xué)的流行語言 Python和 R——以及被認為是下一代熱門語言的 Julia。經(jīng)查詢之后,我們得到結(jié)果如下圖。
當我們只關(guān)注機器學(xué)習(xí)時,得到類似的數(shù)據(jù)如下圖。
我們可以從這些數(shù)據(jù)中得出什么結(jié)論呢?
首先,我們可以從圖表中看出,眾口難調(diào)。在這種情況下,許多語言都相當受歡迎。
其次,所有這些語言的人氣都在暴漲,這表明了人們在過去幾年里對機器學(xué)習(xí)和數(shù)據(jù)科學(xué)的興趣正在增加。
第三,Python明顯領(lǐng)先,緊隨其后的依次是 Java、R、C++。Python超越 Java并逐漸拉開差距,與此同時,Java與 R之間的差距逐漸減小。我必須承認,我看到 Java位居第二其實很驚訝,我本來以為 R是第二位呢。
第四,Scala的增長令人印象深刻。三年前幾乎沒有人使用Scala,而現(xiàn)在卻能與其他成熟語言同場競技了。
我們在indeed.com從趨勢示意圖切換到實際數(shù)據(jù)視圖時,會發(fā)現(xiàn)這點尤為明顯。
第五,Julia的人氣比較差,但最近幾個月肯定有所增長。Julia會成為機器學(xué)習(xí)和數(shù)據(jù)科學(xué)的流行語言之一嗎?這得由時間來做出回答。
如果我們隱藏 Scala和 Julia,以便放大其他語言增長的視圖,那么可以確定的是,Python和 R的增長速度超過了其他語言。
從這條曲線來看,也許 R的流行度將會很快超過 Java。當我們換成“深度學(xué)習(xí)”來進行查詢時,得到的數(shù)據(jù)就大為不同。
在這個查詢中,Python依舊領(lǐng)先,但緊隨其后的依次是 C++、Java、C。R只排在第五名。這里顯然強調(diào)這些是高性能計算語言。作為一個通用的機器學(xué)習(xí)語言,Java很快能占據(jù)第二的位置,R語言在短時間內(nèi)不會登頂。令我驚訝的是作為深度學(xué)習(xí)框架Torch的主要語言,Lua竟然不在榜上,并且Julia也缺席。
最初那個問題的答案現(xiàn)在應(yīng)該很清楚了吧?在機器學(xué)習(xí)和數(shù)據(jù)科學(xué)的工作中,Python、Java和 R是最流行的語言。如果你的精力集中在深度學(xué)習(xí)而非一般的機器學(xué)習(xí),那么應(yīng)該多學(xué)習(xí) C++,其次 C也是需要關(guān)注和學(xué)習(xí)的。然而要記住,這只是看問題的一個途徑。如果你想尋找學(xué)術(shù)界的工作,或者只是想在業(yè)余時間學(xué)習(xí)機器學(xué)習(xí)和數(shù)據(jù)科學(xué),那么你可能會得到不同的答案。
至于我個人的答案,我今年早些時候在博客上做出了回答。除了能夠支持許多主流機器學(xué)習(xí)框架,Python對我而言很適合,只是因為我有計算機科學(xué)背景而已。我也喜歡使用 C++開發(fā)新的算法,因為我的大部分職業(yè)生涯中都用 C++編程。但這只是我個人情況,不同專業(yè)背景的人可能會覺得另一門語言更好些。編程技能有限的統(tǒng)計學(xué)家會更青睞 R。有實力的 Java開發(fā)者可以繼續(xù)使用他鐘愛的 Java,因為 Java有數(shù)量可觀的開源 Java API。同理,其他語言也如此。
因此,我的建議是閱讀討論同一個問題的其他博客,然后投入大量的時間去學(xué)習(xí)一門語言。