偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

數(shù)據(jù)科學(xué)家必備工具有哪些?

大數(shù)據(jù)
在這一章中,我們會(huì)探索數(shù)據(jù)科學(xué)環(huán)境中常用的軟件。不是所有在這里提到的軟件都會(huì)在你的工作中用到,但了解它們會(huì)讓你擁有更多選擇。

[[169391]]

當(dāng)數(shù)據(jù)科學(xué)家需要使用某些軟件時(shí),其中一部分我們已經(jīng)在之前的章節(jié)中做過介紹,這些軟件涵蓋了數(shù)據(jù)科學(xué)家所需要的基礎(chǔ)專業(yè)內(nèi)容。實(shí)際的工作范疇可能會(huì)超越求職時(shí)候的工作描述,這也是IT工作的常態(tài)之一。這在某種程度上是好的,因?yàn)樗峁┝藢W(xué)習(xí)新技能的機(jī)會(huì),而這也是數(shù)據(jù)科學(xué)領(lǐng)域最引人入勝的方面之一。

在這一章中,我們會(huì)探索數(shù)據(jù)科學(xué)環(huán)境中常用的軟件。不是所有在這里提到的軟件都會(huì)在你的工作中用到,但了解它們會(huì)讓你擁有更多選擇。特別是我們會(huì)提到Hadoop套件的一些其他備選工具(例如Spark、Storm等),許多功能強(qiáng)大的面向?qū)ο缶幊陶Z(yǔ)言(Java、C++、C#、Ruby和Python),現(xiàn)有的數(shù)據(jù)分析軟件(R、Matlab、SPSS、SAS或是Stata),你可能會(huì)用到的虛擬化程序以及大數(shù)據(jù)集成系統(tǒng)(例如IBM的BigInsights、Cloudera等)。我們還會(huì)看看你可能接觸到的其他軟件,例如GIT、Excel、Eclipse、Emcien以及Oracle。注意這個(gè)列表只是告訴你這一領(lǐng)域的主流軟件有哪些,但它們并不一定是你在未來(lái)工作中的真實(shí)環(huán)境下所使用的工具。一些公司可能會(huì)用到它所在行業(yè)的專業(yè)軟件,在你入職的時(shí)候也許會(huì)被要求你去熟悉這些軟件。了解這個(gè)列表中的大部分軟件會(huì)讓你工作地相對(duì)輕松和明確。

1 .Hadoop套件和朋友們

Hadoop在過去的幾年里,幾乎成為大數(shù)據(jù)的代名詞。這是數(shù)據(jù)科學(xué)家的兵器庫(kù)中的主要支撐。知道Hadoop不只是一個(gè)程序是非常重要的,它更像一組工具(類似于微軟的Office)。這個(gè)套件被用于傳輸,保存和處理大數(shù)據(jù)。它還包含有一個(gè)調(diào)度器(Oozie)、元數(shù)據(jù)和表格管理架構(gòu)(HCatalog)。所有在Hadoop中處理數(shù)據(jù)的任務(wù)都是分布在安裝了Hadoop的所有機(jī)器集群中的,這些任務(wù)可以是面向?qū)ο蟪绦?OOP)代碼、數(shù)據(jù)分析程序、數(shù)據(jù)圖形化腳本以及其他具有有限處理時(shí)間(finite process time)特征和對(duì)數(shù)據(jù)分析有用的任務(wù)。Hadoop會(huì)確保不管你對(duì)數(shù)據(jù)做什么樣的操作都能以高效的方式完成,并以直觀的方式呈現(xiàn)。

Hadoop并沒有一個(gè)對(duì)用戶友好的軟件環(huán)境,如圖1所示,這是一個(gè)典型的Hadoop任務(wù)的樣子。

Hadoop套件由以下幾個(gè)組件組成,所有的組件都很重要。

MapReduce由Google創(chuàng)建,并且是Hadoop的主要組件。正如在之前的部分我們?cè)岬竭^的那樣,這是任何大數(shù)據(jù)技術(shù)的核心。盡管這是Hadoop固有的特性,但它也可以在其他的大數(shù)據(jù)程序,例如MPP和NoSQL數(shù)據(jù)庫(kù)(例如,MongoDB)。MapReduce最初是具有商業(yè)所有權(quán)的,但隨著Yahoo在2006年提供了慷慨的資金支持,它以Hadoop的開源形式出現(xiàn),并在兩年內(nèi)迅速受到廣泛歡迎。作為一個(gè)著名的并行計(jì)算算法,它得以讓數(shù)據(jù)庫(kù)的查詢建立在一個(gè)計(jì)算機(jī)集群上,任務(wù)可以分拆成小份,并跨越整個(gè)集群的節(jié)點(diǎn)。

HDFS是Hadoop 分布式文件系統(tǒng)的簡(jiǎn)稱,這是Hadoop系統(tǒng)所使用的文件系統(tǒng)。被Hadoop所處理的數(shù)據(jù)必須先導(dǎo)入到HDFS中,并備份在運(yùn)行了Hadoop的計(jì)算機(jī)網(wǎng)絡(luò)中。它的數(shù)據(jù)極限大約在30PB。

Pig是針對(duì)Hadoop進(jìn)行計(jì)算的一個(gè)高級(jí)編程語(yǔ)言(High-level programming language)。你可以將它視為Hadoop生態(tài)系統(tǒng)中各種操作的控制元件。它的性能是可擴(kuò)展的。

Hive是一個(gè)數(shù)據(jù)倉(cāng)庫(kù)程序,是以“類-SQL”語(yǔ)言進(jìn)行訪問使用的,他是為橫跨Hadoop集群的數(shù)據(jù)設(shè)計(jì)的。并且它的性能是可擴(kuò)展的。

HBase、Sqoop以及Flume是Hadoop的數(shù)據(jù)庫(kù)組件。HBase是一個(gè)可以運(yùn)行在Hadoop環(huán)境上的列式數(shù)據(jù)庫(kù)。它是基于Google的BigTable設(shè)計(jì)的,并且數(shù)據(jù)極限約為1PB。另外,它比直接在HDFS上訪問數(shù)據(jù)要慢一些。這對(duì)于處理存在HBase里面的數(shù)據(jù)來(lái)說(shuō)不是很好,對(duì)HBase對(duì)于歸檔和時(shí)間系列數(shù)據(jù)的計(jì)數(shù)很合適。Sqoop是一個(gè)將關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù)導(dǎo)入到HDFS中的程序。Flume與此類似,它關(guān)注于收集和導(dǎo)入各種數(shù)據(jù)源的日志和任務(wù)數(shù)據(jù)。

Mahout是一個(gè)機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘算法的函數(shù)庫(kù),用于對(duì)存儲(chǔ)在HDFS的數(shù)據(jù)進(jìn)行處理。

Zookeeper服務(wù)于Hadoop有一“群”各種各樣功能的組件,所以調(diào)試管理以及協(xié)調(diào)程序是十分必要的。Zookeeper保證了整個(gè)套件的整合以及相對(duì)得簡(jiǎn)便操作。

Hadoop套件還有一些其他的組件用來(lái)補(bǔ)充以上這些核心組件。而熟悉它們***的方法是去下載一個(gè)Hadoop玩一下。當(dāng)需要確定基準(zhǔn)(Benchmark)的時(shí)候,你可以選擇去讀一下教程(或者,如果你能讀一下用戶手冊(cè)則更好)。

Hadoop并不是進(jìn)入大數(shù)據(jù)技術(shù)的唯一選擇。另有一個(gè)也很有意思但并不那么有名的備選方案是Storm(被Twitter、阿里巴巴、Groupon以及其他許多公司所使用)。Storm顯著快于Hadoop,同樣也是開源,而且使用起來(lái)相對(duì)簡(jiǎn)單,是一個(gè)值得選用的Hadoop備選方案。不像Hadoop, Storm 不執(zhí)行MapReduce任務(wù),而是運(yùn)行topology(拓?fù)?。核心的差異在于MapReduce最終會(huì)將任務(wù)結(jié)束,而topology會(huì)永遠(yuǎn)運(yùn)行或直到它被用戶終止。(你可以將它類比為操作系統(tǒng)后臺(tái)一直運(yùn)行的進(jìn)程)。topology可以被畫成計(jì)算圖,用以處理數(shù)據(jù)流。這些數(shù)據(jù)流的源被稱為spout(形象化為“水龍頭”),而它們會(huì)被接入bolt(形象化為“閃電”)。一個(gè)bolt可以使用任意數(shù)量的輸入源,做一些處理,并輸出新的數(shù)據(jù)流。你可以在圖2中看到Storm topology。

如圖2所示,Storm軟件中的Topology,一個(gè)值得選用的Hadoop的備選方案。你可以很容易地創(chuàng)建一個(gè)類似這樣的Topology,并比MapReduce的流程順序要直觀。

對(duì)數(shù)據(jù)使用Topology方法可以確保即使在出現(xiàn)故障的情況下也能處理出正確的結(jié)果(因?yàn)閠opology會(huì)持續(xù)地運(yùn)行),也就是說(shuō)如果計(jì)算機(jī)集群中的某一臺(tái)計(jì)算機(jī)發(fā)生了問題也不會(huì)危害到在運(yùn)行在整個(gè)集群上任務(wù)的一致性。需要注意的是,Storm topology 一般是由Java、Ruby、Python和Fancy語(yǔ)言編寫而成。Storm軟件則是由Java和Clojure(一個(gè)與Java配合良好的函數(shù)型語(yǔ)言)編寫,同時(shí)它的源代碼也是這個(gè)類型技術(shù)中最為流行的項(xiàng)目。

這個(gè)軟件的優(yōu)勢(shì)在于它處理數(shù)據(jù)的實(shí)時(shí)性、簡(jiǎn)單的API、可擴(kuò)展性、容錯(cuò)性、簡(jiǎn)單部署、免費(fèi)且開源并能夠確保數(shù)據(jù)處理,以及可以在其上使用各種編程語(yǔ)言。它有橫跨美國(guó)東西海岸、倫敦以及其他地區(qū),并持續(xù)壯大的用戶社區(qū)。

除了Storm這個(gè)非常流行并且提供了靈活和簡(jiǎn)單地操作還很有前景的Hadoop的替代品之外,還有一些其他軟件同樣宣稱自己具有類似特性并嘗試挑戰(zhàn)Hadoop在大數(shù)據(jù)世界的支配權(quán)。最值得推薦的幾個(gè)軟件(在編寫本書的時(shí)候)有如下幾個(gè)。

Spark由加利福尼亞大學(xué)伯克利分校的AMP Lab開發(fā)而成。Spark是MapReduce領(lǐng)域的***玩家,它的目標(biāo)是數(shù)據(jù)分析在寫入和運(yùn)行端的速度更加快速。不像許多在這個(gè)領(lǐng)域的系統(tǒng),Spark使用內(nèi)存查詢數(shù)據(jù),替代了磁盤的讀寫。這樣,Spark在許多迭代算法上比Hadoop的表現(xiàn)更為優(yōu)越。它是由Scala實(shí)現(xiàn)的(參見一下部分),在寫作本書的時(shí)候,它的主要用戶是UC Berkeley的研究者和Conviva公司。

BashReduce作為一個(gè)腳本工具,BashReduce可以用標(biāo)準(zhǔn)UNIX命令(如sort、awk、grep、join等)執(zhí)行MapReduce,成為了Hadoop的另一個(gè)備選工具。它支持映射/分割、規(guī)約以及合并等功能命令。盡管它根本沒有一個(gè)分布式文件系統(tǒng),BashReduce還是將文件分布到了工作節(jié)點(diǎn)中,但不可避免地缺少容錯(cuò)。它沒有Hadoop那么復(fù)雜,同時(shí)可以進(jìn)行快速開發(fā)。除了容錯(cuò)的問題之外,它還缺乏靈活性,因?yàn)锽ashReduce只能工作在特定的UNIX命令環(huán)境中。BashReduce是由Erik Frey(在線電臺(tái)last.fm)以及他的助手們開發(fā)。

Disco Project最初是由諾基亞(Nokia)研究院開發(fā),Disco已經(jīng)默默無(wú)聞了很多年。MapReduce作業(yè)由簡(jiǎn)單的Python編寫,而Disco的后端是以Erlang編寫的,一個(gè)可擴(kuò)展的函數(shù)型語(yǔ)言,內(nèi)置支持并發(fā)、容錯(cuò)以及分布,使得它成為一個(gè)理想的MapReduce系統(tǒng)。與Hadoop類似,Disco分布并復(fù)制存放數(shù)據(jù),但它沒有自己的文件系統(tǒng)。由于它的高效,在作業(yè)調(diào)度方面也是值得稱道的。

GraphLab由卡內(nèi)基梅隆大學(xué)開發(fā),為機(jī)器學(xué)習(xí)應(yīng)用服務(wù)而設(shè)計(jì),GraphLab旨在提高并行機(jī)器學(xué)習(xí)算法設(shè)計(jì)的執(zhí)行效率和正確性。GraphLab擁有它自己版本的映射(map)階段,稱為更新階段。不像MapReduce,更新階段可以讀取和修改數(shù)據(jù)的交集。它基于圖的方法使得在圖形的機(jī)器學(xué)習(xí)上更具可控性,同時(shí)提升了動(dòng)態(tài)迭代算法。

HPCC 系統(tǒng)以它自己的大規(guī)模數(shù)據(jù)分析架構(gòu),HPCC試圖用Enterprise Control Language語(yǔ)言(ECL)更近編寫并行工作流,ECL語(yǔ)言是一個(gè)聲名式語(yǔ)言,以數(shù)據(jù)為中心的語(yǔ)言(有些類似于SQL、Datalog和Pig)。HPCC是用C++寫成的,根據(jù)一些人的說(shuō)法,這樣使得內(nèi)存查詢更快。HPCC由于擁有自己的分布式文件系統(tǒng)而也成為Hadoop一個(gè)有力地備選工具。

Sector/Sphere以C++開發(fā),這個(gè)系統(tǒng)承諾了比Hadoop快2~4倍的性能。它由兩部分組成:Sector,安全且可擴(kuò)展的分布式文件系統(tǒng),以及Sphere,在存儲(chǔ)節(jié)點(diǎn)上可以通過簡(jiǎn)單的API接口處理Sector數(shù)據(jù)文件的并行數(shù)據(jù)處理引擎。它具有不錯(cuò)的容錯(cuò)性,支持廣域網(wǎng)同時(shí)兼容舊系統(tǒng)(需要做一些修改)。從2006年誕生起,它就是一個(gè)不錯(cuò)的Hadoop替代方案。

還有一些并行于這些系統(tǒng)的項(xiàng)目,可以免費(fèi)便利地開展Hadoop環(huán)境下的工作。所以,如果你想學(xué)Hadoop,并且把基礎(chǔ)的部分都掌握以后可以看看這些工具。這些項(xiàng)目中***的有以下幾個(gè)。

Drill是一個(gè)Hadoop插件,專注于提供一個(gè)存儲(chǔ)在Hadoop集群環(huán)境下的數(shù)據(jù)集的交互分析接口。它常常利用MapReduce來(lái)執(zhí)行Hadoop下的大數(shù)據(jù)的批量分析,并通過Dremel以更快的速度來(lái)處理更大規(guī)模的數(shù)據(jù)集。憑借它可以擴(kuò)展到大規(guī)模服務(wù)器上的能力(它的設(shè)計(jì)目標(biāo)是10000個(gè)服務(wù)器),使它成為處理真正的大數(shù)據(jù)的好選擇。如果你計(jì)劃使用Hadoop,那么它是一個(gè)值得你去研究的工具。

D3.js是數(shù)據(jù)驅(qū)動(dòng)文檔(Data Driven Documents)的縮寫,D3.js是一個(gè)開源JavaScript函數(shù)庫(kù),可以讓你編輯大數(shù)據(jù)的展示文檔。這個(gè)工具可以讓你利用網(wǎng)頁(yè)技術(shù)(例如HTML5、SVG以及CSS)來(lái)創(chuàng)建動(dòng)態(tài)圖形。另外,它還提供可視化方法,例如和弦圖、氣泡圖、樹狀圖以及節(jié)點(diǎn)連接樹。由于它是開源的,因此這個(gè)列表還在持續(xù)地?cái)U(kuò)展著。D3.js設(shè)計(jì)的目標(biāo)是運(yùn)行快速和兼容于跨硬件平臺(tái)的程序。盡管它不一定會(huì)替代完全成熟的數(shù)據(jù)可視化程序(見4節(jié)),但這是一個(gè)你值得留意的好工具。D3.js是由紐約時(shí)報(bào)的圖形編輯Michael Bostock開發(fā)的。

Kafka是最早由LinkedIn所開發(fā)的消息系統(tǒng),作為社交媒體活動(dòng)流和數(shù)據(jù)處理管道的基礎(chǔ)。從那以后,它的用戶群便逐漸擴(kuò)大,涵蓋了各種使用數(shù)據(jù)管道和消息服務(wù)的公司。它非常高效,同時(shí)與Hadoop生態(tài)系統(tǒng)集成良好,此外,它是運(yùn)行在Java環(huán)境中的,是可以跨平臺(tái)的。

Julia事實(shí)上,它不只是一個(gè)數(shù)據(jù)分析工具,而是被設(shè)計(jì)為運(yùn)行在諸如Hadoop這樣的分布式計(jì)算環(huán)境中。它很穩(wěn)健,易于使用,類似于Matlab和R(見3節(jié)),同時(shí)又非??焖?。它是與Hadoop套件相襯的擴(kuò)展工具,如果你傾向于編寫程序,那么這是一個(gè)可以加入你技能樹中的好語(yǔ)言。

Impala是一個(gè)分布式查詢執(zhí)行引擎,是為原生存儲(chǔ)在Apache HDFS 和Apache HBase的數(shù)據(jù)而設(shè)計(jì)的。由Cloudera開發(fā),它聚焦于數(shù)據(jù)庫(kù)而且不會(huì)使用到MapReduce。因?yàn)樗苊饬薓apReduce作業(yè)的額外開銷,所以可以實(shí)時(shí)地返回結(jié)果。

2 .面向?qū)ο缶幊陶Z(yǔ)言

數(shù)據(jù)科學(xué)家需要能夠熟練處理面向?qū)ο缶幊?OOP),但比較各種面向?qū)ο缶幊陶Z(yǔ)言已超出了本書所要討論的范圍,所以如果非要舉個(gè)例子的話,Java是這一節(jié)中主要會(huì)討論的語(yǔ)言,因?yàn)樗粯I(yè)界熟知。像大多數(shù)面向?qū)ο笠粯?,Java不包含用戶圖形界面(GUI),這就是那么多人更愛用Python(它的開發(fā)者確實(shí)為它編寫了一個(gè)體面的GUI)的原因。然而,Java運(yùn)行快而優(yōu)雅,同時(shí)不管是線上還是線下都有大量的學(xué)習(xí)資源。圖3是一個(gè)典型的Java程序。

圖3是一段典型的Java程序用于判斷這一年是不是閏年。這是一個(gè)識(shí)別了Java程序的編輯器視圖。

注意,部分字句的顏色和高亮顯示是由編輯器自動(dòng)實(shí)現(xiàn)的(盡管不總是這樣,例如當(dāng)使用記事本工具打開程序時(shí))。同樣,間距也是可選的,用來(lái)幫助用戶編寫語(yǔ)句。注意大多數(shù)程序會(huì)比這段簡(jiǎn)單的例子要長(zhǎng)一些,也更復(fù)雜一些,但它們也可以像例子中一樣,被拆散成簡(jiǎn)單的語(yǔ)句塊。

如果你花了大量的時(shí)間在編寫腳本上面(通常如果你使用文本編輯器,例如Notepad++或者Textpad),編程會(huì)讓你勞累不堪。為了減輕這種影響,在過去的許多年里,眾多集成開發(fā)環(huán)境(Integrated development environments,IDE)被開發(fā)出來(lái)。這些IDE為編程語(yǔ)言提供了額外環(huán)境,將它的引擎、編譯器以及其他組件和舒適的圖形界面以更加友好的方式呈現(xiàn)。一個(gè)在Java世界里非常著名的IDE就是Eclipse(見圖4),同時(shí)也可以作為其他語(yǔ)言的運(yùn)行環(huán)境,甚至是像R一樣的數(shù)據(jù)分析包(Data analysis packages)。

圖4所示為運(yùn)行著Java的Eclipse截屏。Eclipse是一個(gè)優(yōu)秀的Java IDE(也適合其他的編程語(yǔ)言)。

其他可供你參考的的面向?qū)ο笳Z(yǔ)言包括:

C++是與Java齊名的編程語(yǔ)言,快速而流行

Ruby是強(qiáng)大的面向?qū)ο缶幊痰膫溥x語(yǔ)言

JavaScript是可與Java配合使用的基于網(wǎng)頁(yè)的編程語(yǔ)言

Python是優(yōu)秀的面向?qū)ο笳Z(yǔ)言,特別適合初學(xué)編程的人

C#是由微軟開發(fā)的業(yè)界知名的編程語(yǔ)言

所有這些都是免費(fèi)而且可以通過免費(fèi)教程學(xué)習(xí)的(C#的IDE是Visual Studio,它是商業(yè)軟件[1])。另外,它們都有一些共同點(diǎn),如果你對(duì)面向?qū)ο缶幊?OOP)的概念很熟悉的話,例如封裝、繼承以及多態(tài),你就能夠處理它們中的任何一個(gè)。注意,所有這些編程語(yǔ)言都是命令型語(yǔ)言(相對(duì)于最近逐漸出名的聲明/函數(shù)型編程語(yǔ)言而言)。這個(gè)類型編程語(yǔ)言的語(yǔ)句基本上都是在命令計(jì)算機(jī)采取什么樣的行動(dòng)。而聲明/函數(shù)型語(yǔ)言,相對(duì)來(lái)說(shuō)更多的關(guān)注***的結(jié)果而對(duì)下一步采取什么動(dòng)作的具體細(xì)節(jié)并不關(guān)心。

盡管在寫作本書時(shí),面向?qū)ο缶幊陶Z(yǔ)言在專業(yè)編程領(lǐng)域是一個(gè)基本配置,但目前還是有一些向函數(shù)型語(yǔ)言變化的趨勢(shì)(例如Haskell、Clojure、ML、Scala、Erlang、OCaml、Clean等)。這些語(yǔ)言基于另一種哲學(xué),關(guān)注函數(shù)式表達(dá)式的求值而不是變量的使用或者實(shí)現(xiàn)它們命令的具體執(zhí)行。

函數(shù)型語(yǔ)言的一個(gè)大加分項(xiàng)就在于它便捷的可擴(kuò)展性(這對(duì)于處理大數(shù)據(jù)極有幫助)以及避免出錯(cuò),因?yàn)樗鼈儾皇褂萌止ぷ骺臻g。不過,它們相比于面向?qū)ο缶幊陶Z(yǔ)言,在大多數(shù)數(shù)據(jù)科學(xué)應(yīng)用下要慢一些。盡管它們中有幾個(gè)語(yǔ)言(例如OCaml和Clean)在做數(shù)值運(yùn)算時(shí),可以和C語(yǔ)言[2]一樣快。如果未來(lái)峰回路轉(zhuǎn)之后,函數(shù)型語(yǔ)言的情況逐漸好轉(zhuǎn),為了穩(wěn)妥起見,那么你可能會(huì)希望把函數(shù)型語(yǔ)言添加到你的技能樹中去。注意函數(shù)型語(yǔ)言和我們之前提到的一些傳統(tǒng)的面向?qū)ο缶幊陶Z(yǔ)言會(huì)有交叉的部分。例如,Scala就是一個(gè)函數(shù)型面向?qū)ο缶幊陶Z(yǔ)言,這個(gè)語(yǔ)言值得大家好好研究。

3. 數(shù)據(jù)分析軟件

如果數(shù)據(jù)科學(xué)家耗費(fèi)時(shí)間所參與的編程工作到***得不到任何認(rèn)同,或干脆就毫無(wú)意義,那數(shù)據(jù)科學(xué)家還有什么可當(dāng)?shù)?于是,數(shù)據(jù)分析軟件就在此時(shí)登場(chǎng)了。在眾多選擇中,最有名的當(dāng)屬M(fèi)atlab和R。它們都很棒,但是沒有必要去計(jì)較誰(shuí)比誰(shuí)更好,因?yàn)橛媚且环N工具更多是基于個(gè)人偏好。有趣的是,這兩者之間的語(yǔ)法和功能函數(shù)非常相近,以至于如果你精通了其中任意一種,那么學(xué)習(xí)另一種的時(shí)間也就是2~3個(gè)星期。

由于R在某種程度上來(lái)說(shuō)更受歡迎,主要由于它免費(fèi)開源,龐大的用戶群體定期地向其貢獻(xiàn)新內(nèi)容,因此,我們?cè)诒緯袝?huì)更關(guān)注R。所以希望那些傾向于Matlab,并了解Matlab在哪些地方優(yōu)于R和其他數(shù)據(jù)分析工具的人,理解我們的選擇并保持開放的心態(tài)。R同樣有優(yōu)于其他數(shù)據(jù)分析工具的地方,并且它在編寫和運(yùn)行程序上都很直觀,通常不使用循環(huán)結(jié)構(gòu)(一種程序結(jié)構(gòu),一般來(lái)說(shuō)會(huì)拖慢高級(jí)程序語(yǔ)言的分析時(shí)間),而是利用運(yùn)用向量的一些操作,而且它還可以延展到矩陣,這種特性被稱為向量化,向量化使得數(shù)據(jù)分析腳本易于閱讀和理解(面向?qū)ο缶幊陶Z(yǔ)言通常運(yùn)行速度很快,因此循環(huán)對(duì)于它們并不是問題)。

R語(yǔ)言的運(yùn)行環(huán)境十分簡(jiǎn)單(在某種方面上與Python類似),對(duì)用戶使用來(lái)說(shuō)也足夠友好,特別是一些小程序。圖5的截屏展示了這個(gè)運(yùn)行環(huán)境的樣子。

圖5顯示了R語(yǔ)言(原版)的編程環(huán)境。正如你所看到的那樣,盡管編程環(huán)境足夠友好,但它還是缺少了許多在IDE內(nèi)的貼心功能。

R作為一款數(shù)據(jù)分析工具來(lái)說(shuō)是十分強(qiáng)大的,而它的GUI(圖形用戶界面)也做得很好。然而,如果你真的想用這款軟件,還是需要花點(diǎn)時(shí)間學(xué)習(xí)并調(diào)試一下IDE。市面上有很多款R語(yǔ)言的IDE(大多數(shù)是免費(fèi)的),但其中有一個(gè)佼佼者,叫做RStudio(見圖6)。

圖6顯示了R語(yǔ)言眾多IDE中的其中一員RStudio。你可以從圖中看到,除了主控窗口(左下窗口)外,還有腳本編輯窗口(左上窗口),工作空間查看窗口(右上)以及圖形查看窗口(右下)。除此之外,還有許多別的功能來(lái)輔助R語(yǔ)言的編寫與運(yùn)行。

R語(yǔ)言之外的其他數(shù)據(jù)分析工具還有。

Matlab/Octave在R成名業(yè)界之前就已存在,并且Matlab就已經(jīng)稱王于數(shù)據(jù)分析領(lǐng)域。盡管Matlab是有商業(yè)所有權(quán)的軟件(需要付費(fèi)使用),他還是有幾個(gè)開源的小伙伴們,其中***的當(dāng)屬Octave。Matlab和Octave對(duì)于初學(xué)者而言都是很好的工具,它們有大量的應(yīng)用,并且像R那樣實(shí)現(xiàn)了向量化。但是,Matlab的工具箱(函數(shù)庫(kù))稍有些昂貴,而Octave則沒有這些。

SPSS是現(xiàn)有***的統(tǒng)計(jì)程序之一,而且廣泛適用于研究領(lǐng)域。學(xué)習(xí)起來(lái)很簡(jiǎn)單,它可以做任何數(shù)據(jù)分析,盡管不像R語(yǔ)言那樣高效。此外,和Matlab一樣,它也是有商業(yè)所有權(quán)的,為學(xué)界與業(yè)界所推崇。

SAS是一個(gè)流行的統(tǒng)計(jì)程序,特別是在企業(yè)當(dāng)中。學(xué)習(xí)起來(lái)相對(duì)簡(jiǎn)單,它也有一個(gè)不錯(cuò)的腳本語(yǔ)言工具,可以幫助創(chuàng)建更為復(fù)雜的數(shù)據(jù)分析。但是,它也是有商業(yè)所有權(quán)的。

Stata是選擇統(tǒng)計(jì)程序包時(shí)的好選擇。Stata 是最受統(tǒng)計(jì)學(xué)家所喜歡的工具之一,也是具有商業(yè)所有權(quán)的。自從R語(yǔ)言在數(shù)據(jù)分析世界變得廣受歡迎以來(lái),Stata就不再像以前那么受寵了。

注意,上面所提及的軟件(除Octava以外),都是具有商業(yè)所有權(quán)的,所以他們并不像R那樣能吸引巨量的用戶群。如果你對(duì)統(tǒng)計(jì)和編程都很熟悉,那么對(duì)你來(lái)說(shuō),它們就會(huì)很容易學(xué)習(xí)。在Matlab的幫助下,你不需要為了使用而去熟悉很多統(tǒng)計(jì)學(xué)知識(shí)。我們會(huì)在10.5節(jié)再探討R語(yǔ)言,那時(shí),我們會(huì)討論如何在機(jī)器學(xué)習(xí)架構(gòu)中使用它。

4 .可視化工具

數(shù)據(jù)分析結(jié)果可視化的重要性顯而易見,這也就是增加一些可視化軟件可以充實(shí)你的軟件兵器庫(kù)的原因。盡管所有的數(shù)據(jù)分析程序都能提供一些像樣的可視化工具,但增加一些專用的工具總是好的。例如Tableau,它可以使整個(gè)處理過程都更加直觀以及高效(見圖7)。

很遺憾地說(shuō),因?yàn)門ableau是一個(gè)具有商業(yè)所有權(quán)的軟件,所以它有些貴。然而,他可以實(shí)現(xiàn)快速的數(shù)據(jù)可視化,混合以及圖像導(dǎo)出。它的使用界面十分友好,易于學(xué)習(xí),在網(wǎng)上有大量的資源,空間使用相當(dāng)小(小于100MB)。另外,它的開發(fā)者們也樂于通過教程與實(shí)踐來(lái)指導(dǎo)用戶學(xué)習(xí)。它在Windows(XP之后的任何版本)上運(yùn)行,同時(shí)還有兩周的試用期。有趣的是,它是華盛頓大學(xué)“數(shù)據(jù)科學(xué)導(dǎo)論”的教學(xué)大綱的一部分。

圖7所示為Tableau,它是一款出色的可視化程序。正如你所見,它十分直觀而且提供了各種各樣的特性。

在業(yè)界,Tableau較其他可視化程序取得了領(lǐng)跑者的地位。盡管它更適合于商業(yè)智能應(yīng)用,但它還可以被用在任何數(shù)據(jù)可視化任務(wù)中,同時(shí)它實(shí)現(xiàn)了通過郵件和在線的圖像簡(jiǎn)易共享。它也提供了交互式的映射以及能夠同時(shí)處理不同來(lái)源的數(shù)據(jù)。

如果你對(duì)這款軟件的同類產(chǎn)品感興趣,你可以看看以下幾款程序。

Spotfire是由TIBCO開發(fā)的優(yōu)秀產(chǎn)品,可視化分析的理想工具。它可以與地理信息系統(tǒng),建模及分析軟件良好集成,同時(shí)具有***的可擴(kuò)展性,其價(jià)格與Tableau保持同一水平。

Qlikview是一款良好的備選工具,對(duì)數(shù)據(jù)可視化和深入鉆取任務(wù)是理想的工具。它速度很快并且提供了出色的交互可視化及儀表盤支持。它有很棒的用戶界面和視覺控制,而且還有在內(nèi)存中處理大數(shù)據(jù)集的出色能力。然而,它受到內(nèi)存大小的限制(具有擴(kuò)展性問題),而且價(jià)格相對(duì)較高。

Prism是一款直觀的商業(yè)智能(BI)軟件,可以輕松地實(shí)施任務(wù)和學(xué)習(xí)。它主要專注于商業(yè)數(shù)據(jù),除去一般類型的圖表以外,它可以生成數(shù)據(jù)儀表盤、積分板、查詢報(bào)告等。

InZite是一款有趣的替代方案,提供了吸引人的可視化及儀表盤特性,快速而且直觀。

Birst是一個(gè)好選擇,提供了大量交互性可視化以及分析工具。它可以生成透視表,還可以用精細(xì)直觀的報(bào)表工具深入鉆取數(shù)據(jù)。

SAP Business Objects提供了指向并點(diǎn)擊數(shù)據(jù)可視化功能,以便能夠生成交互并可分享的可視化圖像和交互儀表盤,它直接集成了SAP的其他產(chǎn)品。

一般來(lái)說(shuō),數(shù)據(jù)可視化程序使用起來(lái)相對(duì)輕松,所以在你的“數(shù)據(jù)兵器庫(kù)”中加入它們并不是個(gè)問題。在傾注大量時(shí)間掌握其中任何一個(gè)工具之前,確保它能與你使用的其他工具集成良好。此外,看看大部分你所感興趣的軟件廣告中都包含了哪些其他的可視化軟件。

5 .集成大數(shù)據(jù)系統(tǒng)

盡管并不是必須的,但能夠熟悉至少一個(gè)集成大數(shù)據(jù)系統(tǒng)是很好的。IBM的BigInsights平臺(tái)就是其中一個(gè)很不錯(cuò)的例子,盡管事實(shí)上它還處于初期版本。它的設(shè)計(jì)思路是將Hadoop的大部分功能封裝到一個(gè)對(duì)用戶友好,并且有像樣的圖形界面的軟件包中去。它的加分項(xiàng)是它還能執(zhí)行數(shù)據(jù)的可視化和調(diào)度,類似這種“多合一”的套件包相當(dāng)貼心,這樣你就可以專注于數(shù)據(jù)科學(xué)工作的其他部分了。BigInsights運(yùn)行在一個(gè)集群/服務(wù)器中,可以通過網(wǎng)頁(yè)瀏覽器來(lái)訪問。圖8所示為BigInsights平臺(tái)的界面截屏。

通過Mozilla 火狐瀏覽器訪問運(yùn)行中的IBM的BigInsights平臺(tái)。如你所見,它的用戶界面十分友好。

集成大數(shù)據(jù)系統(tǒng)的一個(gè)巨大優(yōu)勢(shì)在于它圖形化的用戶界面,與優(yōu)秀的文檔結(jié)合在一起之后,使整個(gè)系統(tǒng)變得十分友好、直觀,而且可以輕松地學(xué)會(huì)操作。此外,圖形界面會(huì)很好地結(jié)合Hadoop相關(guān)操作命令,它可以讓你專注于數(shù)據(jù)科學(xué)中更高級(jí)別的方面,將你從原本不得不做的大量底層編程中解放出來(lái)。

與BigInsights類似的另一個(gè)選擇是Cloudera,它同樣馳名于業(yè)界,同時(shí)更加穩(wěn)健。其他值得你了解的軟件還包括Knime、Alpine數(shù)據(jù)實(shí)驗(yàn)室套件、Pivotal套件,等等。在你讀到這里的時(shí)候,很可能已經(jīng)發(fā)布了其他一些集成大數(shù)據(jù)系統(tǒng),所以請(qǐng)確保你了解它們是什么,以及它們都提供了哪些功能。

6. 其他一些程序

如果不加上一些輔助工具的話,上面這個(gè)程序列表就顯得不完整。因?yàn)榘l(fā)布的公司不同,這些程序可能也會(huì)各不相同,但當(dāng)你需要優(yōu)化你的“軟件兵工廠”的時(shí)候,它們是一個(gè)好的起步。舉個(gè)例子,Git版本控制程序絕對(duì)值得吸引你的目光,因?yàn)槟愫芸赡軙?huì)需要用到它,特別是當(dāng)你與其他人(通常是程序員)一起參與一個(gè)大型項(xiàng)目的時(shí)候。你可以從圖9中看到它的操作界面和它的一些常用命令。

Git版本控制程序不算是最直觀的可用程序,但具有豐富的功能和高效的工作能力。

注意,Git有很多在主流操作系統(tǒng)下的圖形界面的插件。有一個(gè)在Windows操作系統(tǒng)下非常好的開源圖形界面插件叫Git擴(kuò)展(Git Extensions),除此以外也還有許多在其他操作系統(tǒng)下運(yùn)行得很好的Git圖形界面。這個(gè)特別的圖形界面插件讓Git變得更加直觀而且保留了它的命令提示行(但并不是每個(gè)Git圖形界面都提供這個(gè)功能)。

如果在這里忽略了Oracle SQL開發(fā)軟件,就簡(jiǎn)直是有悖神明,因?yàn)樗?jīng)常用于訪問公司Oracle數(shù)據(jù)庫(kù)中的結(jié)構(gòu)化數(shù)據(jù)。盡管這個(gè)特別的軟件由于大數(shù)據(jù)技術(shù)的迅速擴(kuò)張,在接下來(lái)的幾年內(nèi)可能會(huì)不勝?gòu)那?,但在做?shù)據(jù)科學(xué)任務(wù)時(shí),它仍然十分重要。你可以從圖10中看到Oracle SQL Developer 的截屏界面。

Oracle SQL Developer數(shù)據(jù)庫(kù)軟件是處理公司數(shù)據(jù)庫(kù)和數(shù)據(jù)倉(cāng)庫(kù)中結(jié)構(gòu)化數(shù)據(jù)的***搭配。

這個(gè)軟件最關(guān)鍵的部分就是SQL,所以為了使用它的全部潛力,你需要讓自己熟悉這種查詢語(yǔ)言。正如我們?cè)谇皫渍轮锌吹降哪菢樱@對(duì)數(shù)據(jù)科學(xué)家來(lái)說(shuō)是一個(gè)非常有用的語(yǔ)言,即使你用得機(jī)會(huì)并不太多。這是因?yàn)樗鼤?huì)以其他形式被使用到大數(shù)據(jù)的數(shù)據(jù)庫(kù)程序中。

當(dāng)你從事數(shù)據(jù)科學(xué)工作時(shí),一些其他需要熟悉的程序如下。

MS Excel是微軟Office套件中知名的電子表單應(yīng)用。與其他的數(shù)據(jù)分析程序相比,Excel以其簡(jiǎn)單到不可思議的特性,一直沿用到今天,并且在檢視csv(逗號(hào)分隔值,一組以逗號(hào)作為分隔符的數(shù)據(jù)值)文件形式的原始數(shù)據(jù)時(shí)遲早會(huì)派上用處(例如,創(chuàng)建分析結(jié)果報(bào)告的總結(jié))。就像Office套件中的其他應(yīng)用一樣,它是具有商業(yè)所有權(quán)的,盡管還有很多具有類似功能的免費(fèi)替代方案(例如,Open Office 的Calc應(yīng)用)。

MS Outlook是微軟Office套件中另一個(gè)同樣知名的程序,它被設(shè)計(jì)用來(lái)處理電子郵件、日歷、待做事宜以及聯(lián)系人信息。當(dāng)然也有很多免費(fèi)的備選程序,但經(jīng)常被用于工作場(chǎng)合。如果你每天都要處理內(nèi)部和外部通信、預(yù)約等,它會(huì)顯得非常有用。它也是具有商業(yè)所有權(quán)的軟件。

Eclipse如早先提及的那樣,這是面向?qū)ο笳Z(yǔ)言以及其他編程語(yǔ)言(甚至是R)中***人氣的IDE。它非常穩(wěn)健直觀,使得編程的過程更加友好和高效。它是開源而且跨平臺(tái)的。

Emcien能夠處理復(fù)雜數(shù)據(jù)集,特別是半結(jié)構(gòu)化數(shù)據(jù)和非數(shù)值類型時(shí)所使用的優(yōu)秀的圖像分析程序。如果你對(duì)更高級(jí)的數(shù)據(jù)分析,特別是基于圖的分析感興趣的話,這是一個(gè)不容錯(cuò)過的程序。它并不是一款其他數(shù)據(jù)分析程序的替代者,不過,它是具有商業(yè)所有權(quán)的。

Filezilla(或者其他的FTP客戶端程序)能夠傳輸大型文件或者在跨Internet進(jìn)行文件傳輸時(shí)提供某一級(jí)別的安全性保障,此時(shí)這個(gè)程序就顯得非常有用。它是一個(gè)開源軟件。

7. 要點(diǎn)

數(shù)據(jù)科學(xué)家在日常工作中會(huì)利用各類工具,本章介紹了其中***有代表性的,包括:Hadoop/Spark、面向?qū)ο缶幊陶Z(yǔ)言(例如Java)、數(shù)據(jù)分析平臺(tái)(例如R)、可視化軟件以及一些輔助工具(例如GIT和Oracle)。此外還有一些公司和行業(yè)所需求的特定程序。

Hadoop是大數(shù)據(jù)軟件界的凱迪拉克,它的套件由幾類組件組成,包括文件系統(tǒng)(HDFS)、將數(shù)據(jù)分布到計(jì)算機(jī)集群的方法(MapReduce)、機(jī)器學(xué)習(xí)程序(Mahout)、編程語(yǔ)言(Pig)、數(shù)據(jù)庫(kù)程序(Hive、HBase等)、調(diào)度器(Oozie)、元數(shù)據(jù)和數(shù)據(jù)表管理框架(HCatalog)以及調(diào)試管理器和協(xié)同程序(Zookeeper)等。

Hadoop套件有很替代方案,例如Storm、Spark、BashReduce、Disco project,等等。

有幾款可以并行幫助Hadoop開展工作的程序:Drill、Julia、D3.js、以及Impala等。

作為數(shù)據(jù)科學(xué)家,你應(yīng)該能處理至少一個(gè)面向?qū)ο笳Z(yǔ)言,例如Java、C++、Ruby、Python、C#等。面向?qū)ο笳Z(yǔ)言目前是分布最廣的編程語(yǔ)言范式,盡管最近有一股面向函數(shù)型語(yǔ)言的風(fēng)潮涌動(dòng)。

函數(shù)型編程語(yǔ)言(例如Clojure、OCaml、Clean、ML、Scala和Haskell)都是很優(yōu)秀的資產(chǎn),特別是如果你擅長(zhǎng)編程而且想要擴(kuò)展你的編程技能。

你必須對(duì)至少一種現(xiàn)下流行的分析工具極為熟悉,R、Matlab/Octave、SPS、SAS、Stata。其中只有R與Octave是開源的,而前者(R)是時(shí)下最為流行的選擇。

Tableau則是數(shù)據(jù)可視化軟件中的***的選項(xiàng),盡管還有類似于Spotfire、Qlikview、Brist、inZite、Prism和SAP Business Objects的工具。

集成大數(shù)據(jù)系統(tǒng)(例如IBM的BigInsights平臺(tái))同樣值得去研究,因?yàn)樗鼈兪拐w的數(shù)據(jù)科學(xué)流程更高效,同時(shí)將你從MapReduce所需的低層編程中解放出來(lái)。

其他一些程序值得你花時(shí)間去了解,GIT(或者其他的版本控制工具)、Oracle、MS Excel、MS Outloo、Eclipse、Emcien以及Filezilla(或者其他的FTP客戶端程序)。很自然地,你會(huì)的程序越多(即使沒有在本章中列舉),也就越牛,只要你對(duì)它們掌握得足夠好,它們也會(huì)在商業(yè)應(yīng)用中展現(xiàn)出更大的價(jià)值。

責(zé)任編輯:趙寧寧 來(lái)源: 大數(shù)據(jù)工具
相關(guān)推薦

2019-03-25 21:18:41

數(shù)據(jù)科學(xué)家大數(shù)據(jù)技能

2017-08-04 15:53:10

大數(shù)據(jù)真?zhèn)螖?shù)據(jù)科學(xué)家

2019-11-29 18:03:27

數(shù)學(xué)R語(yǔ)言算法

2019-09-11 14:34:13

排序算法數(shù)據(jù)科學(xué)

2012-12-26 10:51:20

數(shù)據(jù)科學(xué)家

2018-03-27 11:02:55

2018-12-24 08:37:44

數(shù)據(jù)科學(xué)家數(shù)據(jù)模型

2012-12-06 15:36:55

CIO

2017-04-12 09:34:30

數(shù)據(jù)科學(xué)家統(tǒng)計(jì)學(xué)家好習(xí)慣

2018-02-28 15:03:03

數(shù)據(jù)科學(xué)家數(shù)據(jù)分析職業(yè)

2018-10-16 14:37:34

數(shù)據(jù)科學(xué)家數(shù)據(jù)分析數(shù)據(jù)科學(xué)

2012-06-12 09:33:59

2018-04-19 06:09:11

命令行工具操作系統(tǒng)Linux

2024-03-08 12:09:26

數(shù)據(jù)可視化圖表

2020-09-04 16:17:15

數(shù)據(jù)科學(xué)離群點(diǎn)檢測(cè)

2015-08-26 13:11:54

數(shù)據(jù)Python

2014-07-03 09:38:19

2019-08-26 09:47:56

數(shù)據(jù)科學(xué)家數(shù)據(jù)分析

2012-12-27 09:52:23

數(shù)據(jù)科學(xué)家大數(shù)據(jù)

2020-04-09 15:32:20

數(shù)據(jù)科學(xué)AutoML代智能
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)