新聞中心
原始的數(shù)據(jù)科學(xué)是勞動(dòng)密集型活動(dòng),但當(dāng)你會(huì)用適合的語(yǔ)言進(jìn)行工作時(shí),數(shù)據(jù)科學(xué)應(yīng)該是非常智能有趣的工作,會(huì)讓你得到一些不容易看到的結(jié)論。

一般來(lái)說(shuō),數(shù)據(jù)科學(xué)中常常會(huì)涉及大量數(shù)據(jù)的處理,此時(shí)優(yōu)化代碼的性能非常重要??紤]到這些基本原則,來(lái)看看哪些語(yǔ)言是數(shù)據(jù)科學(xué)中應(yīng)該掌握的:
R
??
R 發(fā)布于 1995 年,是 S 語(yǔ)言的一個(gè)分支,開(kāi)源。目前由 R Foundation for Statistical Computing 提供技術(shù)支持。
優(yōu)點(diǎn):
- 免費(fèi)、開(kāi)源,各種功能和函數(shù)琳瑯滿目
- 專門(mén)為統(tǒng)計(jì)和數(shù)據(jù)分析開(kāi)發(fā)的語(yǔ)言,即使基礎(chǔ)安裝也包含全面的統(tǒng)計(jì)功能和方法
數(shù)據(jù)可視化
缺點(diǎn):
- 性能,R 作為解釋型語(yǔ)言,運(yùn)行效率并不高
- R 在統(tǒng)計(jì)學(xué)的表現(xiàn)很出色,但并不適用于通用編程
Package 的可靠性問(wèn)題
小結(jié):R 語(yǔ)言在統(tǒng)計(jì)和數(shù)據(jù)可視化方面非常強(qiáng)大,并且開(kāi)源讓它聚集了一幫活躍的貢獻(xiàn)者,不過(guò)由于開(kāi)發(fā)者良莠不齊,導(dǎo)致 Package 的可靠性方面會(huì)有點(diǎn)問(wèn)題
Python
??
Guido van Rossum 在 1991 年推出 Python,開(kāi)源。Python 廣泛用于數(shù)據(jù)科學(xué)領(lǐng)域,目前主要的版本是 3.6 和 2.7。
優(yōu)點(diǎn):
- Python 是一門(mén)主流編程語(yǔ)言,有著廣泛的在線支持
- 入門(mén)友好,易于學(xué)習(xí)
- 有諸如 pandas,scikit-learn 和 Tensorflow 這樣優(yōu)秀的 package
缺點(diǎn):
- Python 作為動(dòng)態(tài)語(yǔ)言,比 Java 還慢,而且容易出現(xiàn)類型錯(cuò)誤
- 對(duì)于特定的統(tǒng)計(jì)或數(shù)據(jù)分析,R 的封裝會(huì)比 Python 更輕松;而在通用性方面,也有比 Python 更好的替代方案
小結(jié):Python 是數(shù)據(jù)科學(xué)中很好的選擇,而且,Google 的 TensorFlow 使得機(jī)器學(xué)習(xí)框架都偏向于Python
SQL
??
SQL 是結(jié)構(gòu)化查詢語(yǔ)言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)
優(yōu)點(diǎn):
- 在查詢、更新和管理關(guān)系數(shù)據(jù)庫(kù)方面非常有效
- 易讀。類似這樣的語(yǔ)句基本不會(huì)有歧義:SELECT name FROM users WHERE age > 18
- SQLAlchemy 等模塊使 SQL 與其他語(yǔ)言的集成變得簡(jiǎn)單明了
缺點(diǎn):
- 分析功能相當(dāng)有限
- SQL有很多不同的實(shí)現(xiàn),如 PostgreSQL,SQLite,MariaDB。他們都是不同的,操作起來(lái)有點(diǎn)麻煩。
小結(jié):SQL 作為數(shù)據(jù)處理語(yǔ)言比作為高級(jí)分析工具更有用
Java
??
Java 具有簡(jiǎn)單性、面向?qū)ο?、分布式、健壯性、安全性、平臺(tái)獨(dú)立與可移植性、多線程、動(dòng)態(tài)性等特點(diǎn),目前由 OSracle Corporation 支持。
優(yōu)點(diǎn):
- 應(yīng)用廣泛,許多系統(tǒng)和應(yīng)用都用 Java 寫(xiě)后端,能夠?qū)?shù)據(jù)科學(xué)方法直接繼承到現(xiàn)有的代碼庫(kù)
- 健壯。對(duì)于重要任務(wù)的大數(shù)據(jù)應(yīng)用,這點(diǎn)很寶貴
- 適合編寫(xiě)高效的 ETL 生產(chǎn)代碼和計(jì)算密集型機(jī)器學(xué)習(xí)算法
缺點(diǎn):
- 對(duì)于專用的統(tǒng)計(jì)分析,Java 的冗長(zhǎng)度不適合作為首選。不過(guò)動(dòng)態(tài)類型的腳本語(yǔ)言(如 R 和 Python)可以提高生產(chǎn)率
- 與 R 這樣特定領(lǐng)域的語(yǔ)言相比,Java 中沒(méi)有大量可用于高級(jí)統(tǒng)計(jì)方法的庫(kù)
小結(jié):Java 其實(shí)不推薦作為數(shù)據(jù)科學(xué)語(yǔ)言的首選,盡管它能將數(shù)據(jù)科學(xué)代碼無(wú)縫接入現(xiàn)有代碼庫(kù),而且性能和安全性也是它的優(yōu)勢(shì)。但是作為開(kāi)發(fā)者,使用 Java 就意味著沒(méi)有其他語(yǔ)言特定的包可用。
Scala
??
Scala 是一門(mén)多范式的編程語(yǔ)言,類似 Java,由 Martin Odersky 開(kāi)發(fā)并于 2004 年發(fā)布。
優(yōu)點(diǎn):
- Scala + Spark = 高性能集群計(jì)算。它是大數(shù)據(jù)領(lǐng)域的殺手級(jí)應(yīng)用框架
- 多范式
- Scala 被編譯為 Java 字節(jié)碼并在 JVM 上運(yùn)行,這使 Scala 成為非常強(qiáng)大的通用語(yǔ)言,同時(shí)也非常適合數(shù)據(jù)科學(xué)
缺點(diǎn):
- Scala 并不太適合初學(xué)者
- 語(yǔ)法和類型都比較復(fù)雜,這對(duì)于 Python 開(kāi)發(fā)者其實(shí)是個(gè)比較陡峭的學(xué)習(xí)曲線
小結(jié):對(duì)于集群處理大數(shù)據(jù)的環(huán)境,Scala + Spark 是一個(gè)很棒的解決方案。但對(duì)于少量數(shù)據(jù)而言,其他語(yǔ)言或許效率更高
Julia
??
Julia 是一款剛出現(xiàn)沒(méi)幾年的 JIT 科學(xué)計(jì)算語(yǔ)言, 為高性能科學(xué)計(jì)算而生。
優(yōu)點(diǎn):
- JIT(just-in-time)語(yǔ)言,性能良好,還提供像 Python 等解釋語(yǔ)言的腳本功能和動(dòng)態(tài)類型
- 為數(shù)值分析而生,但也同樣能進(jìn)行通用編程
- 可讀性好,而且 Julia 文檔的中文翻譯優(yōu)秀(因?yàn)楹诵慕M有個(gè)中國(guó)人哈哈哈)
缺點(diǎn):
- 作為一種新語(yǔ)言,很難說(shuō)已經(jīng)可以成熟到大規(guī)模使用
- 有限的包
小結(jié):潛力無(wú)限,但就目前而言,還不如 R 和 Python 一樣成熟穩(wěn)定
MATLAB
??
MATLAB 是 MathWorks 公司出品的商業(yè)數(shù)學(xué)軟件,用于算法開(kāi)發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計(jì)算的高級(jí)技術(shù)計(jì)算語(yǔ)言和交互式環(huán)境,在數(shù)學(xué)類科技應(yīng)用軟件中在數(shù)值計(jì)算方面首屈一指。
優(yōu)點(diǎn):
- 專為數(shù)值計(jì)算而設(shè)計(jì),非常適合具有復(fù)雜數(shù)學(xué)計(jì)算的定量應(yīng)用,如信號(hào)處理、傅里葉變換、圖像處理等
- 數(shù)據(jù)可視化,MATLAB 內(nèi)置了繪圖功能
- 作為數(shù)學(xué)本科課程的一部分,它在物理、工程、應(yīng)用數(shù)學(xué)等領(lǐng)域有著廣泛應(yīng)用
缺點(diǎn):
- 還挺貴的(獲取 MATLAB 及工具箱報(bào)價(jià))
- 不適用于通用編程
小結(jié):MATLAB 最適合數(shù)據(jù)密集型應(yīng)用,畢竟它就是為此而生的。
總結(jié)
本文只是個(gè)快速指南,來(lái)幫助選擇哪種語(yǔ)言適合做數(shù)據(jù)科學(xué)。當(dāng)然,除了上述介紹的語(yǔ)言外,C++、JavaScript、Perl 還有 Ruby 也可以解決一些數(shù)據(jù)問(wèn)題,其中的關(guān)鍵在于你的使用需求,以及個(gè)人的喜歡等。
當(dāng)前文章:掌握數(shù)據(jù)科學(xué)應(yīng)該學(xué)習(xí)哪些語(yǔ)言?
瀏覽地址:http://m.5511xx.com/article/coidshi.html


咨詢
建站咨詢
