編程語(yǔ)言排行榜Python高居首位,是什么讓它成為最流行的機(jī)器學(xué)習(xí)語(yǔ)言!
Python,是一種面向?qū)ο蟮慕忉屝陀?jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,由荷蘭人Guido van Rossum于1989年發(fā)明,第一個(gè)公開(kāi)發(fā)行版發(fā)行于1991年。
自從20世紀(jì)90年代初Python語(yǔ)言誕生至今,它已被逐漸廣泛應(yīng)用于系統(tǒng)管理任務(wù)的處理和Web編程。2011年1月,它被TIOBE編程語(yǔ)言排行榜評(píng)為2010年度語(yǔ)言。自從2004年以后,python的使用率呈線(xiàn)性增長(zhǎng)。去年7月20日,IEEE發(fā)布2017年編程語(yǔ)言排行榜:Python高居首位。
是什么讓Python成為當(dāng)今最流行的機(jī)器學(xué)習(xí)語(yǔ)言!是大數(shù)據(jù)時(shí)代背景的契合,還是其特有的生態(tài)系統(tǒng),或是語(yǔ)言本身?
首先當(dāng)然是因?yàn)榇蠹业膌ife都很short,Python作為解釋型語(yǔ)言,雖然跑得比誰(shuí)都慢,但減少了開(kāi)發(fā)者的工作量。Python開(kāi)發(fā)者的哲學(xué)是"用一種方法,最好是只有一種方法來(lái)做一件事"。在設(shè)計(jì)Python語(yǔ)言時(shí),如果面臨多種選擇,Python開(kāi)發(fā)者一般會(huì)拒絕花俏的語(yǔ)法,而選擇明確的沒(méi)有或者很少有歧義的語(yǔ)法。簡(jiǎn)單易學(xué)的特點(diǎn)催生了龐大的用戶(hù)群體和活躍社區(qū),機(jī)器學(xué)習(xí)框架的制作者也是為了走群眾路線(xiàn)讓更多人用,Python比較接地氣。
Python成為機(jī)器學(xué)習(xí)主力的第二個(gè)主要原因,是因?yàn)镻ython提供大量機(jī)器學(xué)習(xí)的代碼庫(kù)和框架。利用python可以享受很多便捷的數(shù)學(xué)運(yùn)算第三方庫(kù),比如NumPy、SciPy,在可視化方面有MatplotLib和SeaBorn,結(jié)構(gòu)化數(shù)據(jù)操作可以通過(guò)Pandas得到R一般的體驗(yàn),針對(duì)各種垂直領(lǐng)域比如圖像、語(yǔ)音、文本在預(yù)處理階段都有很成熟的庫(kù)可以調(diào)用,人們常說(shuō):"就你庫(kù)多"。Python標(biāo)準(zhǔn)庫(kù)確實(shí)很龐大。它可以幫助處理各種工作,包括正則表達(dá)式、文檔生成、單元測(cè)試、線(xiàn)程、數(shù)據(jù)庫(kù)、網(wǎng)頁(yè)瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統(tǒng)、GUI、Tk和其他與系統(tǒng)有關(guān)的操作。這被稱(chēng)作Python的"功能齊全"理念。除了標(biāo)準(zhǔn)庫(kù)以外,還有許多其他高質(zhì)量的庫(kù),如wxPython、Twisted和Python圖像庫(kù)等等。
當(dāng)然,這個(gè)代碼系統(tǒng)還有一些不足的地方,因此產(chǎn)生了很多變通方案。例如Anaconda等發(fā)行版有自己的打包機(jī)制,可以很好地處理對(duì)不屬于Python生態(tài)系統(tǒng)的可執(zhí)行文件的依賴(lài)。但是,總的來(lái)說(shuō),Python打包生態(tài)系統(tǒng)為機(jī)器學(xué)習(xí)提供了一定程度的便利性,這與Python一貫堅(jiān)持的簡(jiǎn)易性和便利性很相符。
最后也就是性能方面。Python性能方面當(dāng)然是無(wú)法滿(mǎn)足大規(guī)模數(shù)據(jù)訓(xùn)練的,所以一般企業(yè)都是先用Python搭建原型,然后用C++或者JAVA來(lái)實(shí)現(xiàn)工程化,再用Python封裝留出接口。另外,得益于Python對(duì)C的接口,很多像gnumpy, theano這樣高效、Python接口友好的庫(kù)可以加速程序的運(yùn)行,在強(qiáng)大團(tuán)隊(duì)的支撐下,這些庫(kù)的效率可能比一個(gè)不熟練的程序員用C寫(xiě)一個(gè)月調(diào)優(yōu)的效率還要高。
所以說(shuō),讓Python在機(jī)器學(xué)習(xí)領(lǐng)域異軍突起的不僅是某個(gè)單一功能,而是Python整個(gè)語(yǔ)言包:簡(jiǎn)單易學(xué)讓它更接地氣,它的生態(tài)系統(tǒng)擁有的第三方代碼庫(kù)可以涵蓋廣泛的機(jī)器學(xué)習(xí)用例和性能,可以幫助你很好地完成手頭的工作。