下一步是創建統計軟件。若是統計是分析和從數據中得出結論的框架,那麼軟件就是將這個框架付諸行動的工具。數據科學家必須爲任何項目作出許多軟件選擇。若是你有一個喜歡的軟件,這一般是一個不錯的選擇,可是有充分的理由去挑選別的東西。若是你是數據科學或統計軟件的新手,或許很難找到一個起點。數據庫
電子表格和基於GUI的應用程序一般是執行任何類型數據分析的首選。特別是若是數據是表格形式的,例如CSV,而且數據不是太多,那麼在電子表格中開始分析就很容易了。此外,若是你須要進行的計算並不複雜,那麼電子表格甚至能夠涵蓋項目的全部軟件需求。這裏經常使用的軟件工具包括Excel、SPSS、Stata、SAS和Minitab。學習這些中級工具之一的編程語言多是學習真正的編程語言的一個很好的一步,這些語言自己就很是有用。特別是SAS在統計行業中擁有普遍的追隨者,學習它的語言自己就是一個合理的目標。編程
MATLAB是一種專有的軟件環境和編程語言,並且MATLAB的成本至關高。有些人決定在一個名爲Octave的開源項目中複製它。隨着Octave的成熟,它在可用功能和功能方面愈來愈接近MATLAB。除了使用附加軟件包(工具箱)的代碼以外,用MATLAB編寫的絕大多數代碼均可以在Octave中工做,反之亦然。數組
總的來講,MATLAB和Octave很是適合在信號處理、通訊、圖像處理和優化等方面使用大型矩陣的工程師(特別是電氣工程師)。瀏覽器
R語言是基於貝爾實驗室S編程語言建立的。它是開源的,但其許可證比Python和Java等其餘流行語言更具限制性,特別是你正在構建商業軟件產品時。與MATLAB相比,R中更容易加載和處理不一樣類型的數據。MATLAB擅長處理表格數據,但通常來講,對於包含標題、混合列類型(整數,小數,字符串等)、JSON和數據庫查詢的表,R更好。安全
R的另外一個優勢是開源,開發人員能夠更輕鬆地在他們認爲合適的地方爲語言和包開發作出貢獻。這些開源貢獻幫助R大幅增加並擴展了與其餘軟件工具的兼容性。CRAN網站提供了數以千計的R包,你能夠找到你想要進行的分析類型的軟件包,這是R語言的最大優點。MATLAB也有包,但不是不少,儘管它們一般很是好。整體而言,對於統計學家和其餘追求數據探索性工做而不是在軟件行業中構建生產軟件的人來講,R是一個不錯的選擇。網絡
Python是一種功能強大的語言,可用於編寫腳本和建立生產軟件。它更適合非統計任務,例如與其餘軟件服務集成,建立API和Web服務以及構建應用程序。可能由於Python最初是一種通用編程語言,它有一個強大的面向對象設計框架。框架
儘管Python最初並非一種專門用於統計的語言,但有些人已經爲Python開發了幾個軟件包,這些軟件包提高了它的統計能力,如今足夠與R和MATLAB競爭。在使用向量、數組和矩陣時,數值方法的numpy包是必不可少的。軟件包scipy和scikit-learn在優化、集成、集羣、迴歸、分類和機器學習等功能中很受歡迎。使用了這三個軟件包,Python能夠與R和MATLAB的核心功能相媲美,在某些領域,例如機器學習,Python彷佛在數據科學家中更受歡迎。對於數據處理,pandas已經變得很是受歡迎。機器學習
然而,數據科學中最著名的Python包之一是Natural Language Toolkit(NLTK)。它是天然語言處理(NLP)中最受歡迎和最強大的工具。若是有人正在從Twitter、新聞源、電子郵件語料庫或其餘地方解析和分析文本,那麼他們極可能已經使用了NLTK。總的來講,Python很是適合想要進行一些數據科學以及其餘一些純粹的非統計軟件開發的人。編程語言
雖然Java不是腳本語言,不太適合探索性的數據科學,但Java是軟件應用程序開發中最著名的語言之一,所以它常常用於分析應用程序開發。致使Java不利於探索性數據科學的許多緣由使其更有利於應用程序開發。Java對於探索性數據科學來講並非很好,但它對於基於數據科學的大規模或生產代碼來講很是有用。Java有許多統計庫,可用於從優化到機器學習,其中許多都是由Apache Software Foundation提供和支持的。工具
在選擇統計軟件工具時,請牢記如下標準:
接下來咱們就須要使用補充軟件優化產品。咱們在上一步中建立的軟件工具能夠是多功能的,但它們本質上是統計的。軟件能夠作的不只僅是統計數據,特別是,有許多工具可用於有效地存儲,管理和移動數據。有些可使計算和分析的每一個方面都更快且更容易管理。這裏有4種流行的軟件,可使你做爲數據科學家的工做更輕鬆。
數據庫很常見,在項目期間跨越不一樣數據庫的可能性至關高,特別是若是你要使用其餘人的數據。可是,固然不是僅僅接觸,而是本身創建一個數據庫來幫助你完成項目。最多見的兩種類型是關係型(SQL)和非關係型(NoSQL,ElasticSearch),與將數據存儲在計算機的文件系統上相比,數據庫具備許多優點。大多數狀況下,數據庫能夠提供對數據的任意訪問且比文件系統更快,而且它們還能夠經過冗餘方式擴展,這種方式優於文件系統擴展。
高性能計算(HPC)是一個通用術語,適用於須要進行大量計算而且但願儘快完成計算的狀況。你能夠選擇使用超級計算機,計算機集羣或圖形處理單位(它們很是適合執行高度可並行化的計算)。若是你有權訪問,那麼HPC是等待PC計算全部須要計算的東西的好選擇。使用HPC產品的好處有不少,可是在你選擇以前你必需要衡量一下成本。
最大的雲服務提供商主要是大型科技公司,例如阿里巴巴、谷歌和微軟等公司在向公衆開放以前都已經擁有大量的計算和存儲資源。但他們並不老是將資源用到最大負荷,所以他們決定出租過剩的產能並擴大其收益,結果證實這是一系列有利可圖的商業決策。提供的服務一般大體至關於我的計算機,計算機集羣或本地網絡的功能。全部這些能夠在世界各地的地理區域中得到,可經過在線鏈接和標準鏈接協議訪問,以及一般是Web瀏覽器界面。若是你沒有足夠的資源來充分知足你的數據科學需求,你能夠選擇嘗試購買雲服務。
最後,你能夠嘗試大數據技術:Hadoop,HBase和Hive等。大數據技術的設計不是爲了移動數據,而是當數據集處於很是大的規模時,利用大數據技術能夠節省大量的時間和金錢。每當計算任務受數據傳輸限制時,大數據能夠提升效率。可是,與本章中描述的其餘技術相比,大數據系統軟件須要花費一些精力。
構建階段的最後一步是執行產品的構建計劃。大多數軟件工程師可能熟悉構建複雜軟件的試驗和磨難,但他們可能不熟悉構建處理可疑質量數據的軟件的難度。另外一方面,統計人員知道擁有髒數據的狀況,但可能沒有創建更高質量軟件的經驗。一樣,與項目相關的不一樣角色的每一個人可能擁有各類經驗,併爲不一樣的事情作好準備。
設計計劃應包含多個路徑和選項,全部這些都取決於項目的結果、目標和期限。不管計劃有多好,隨着項目的進展,總有可能對其進行修訂。即便你考慮到全部不肯定因素而且意識到每一種可能的結果,計劃範圍以外的事情也可能會發生變化。計劃須要改變的最多見緣由是新信息從項目外部的來源出現,而且計劃的一個或多個路徑發生變化或目標自己發生變化。
隨着項目的進展,你一般會看到愈來愈多的結果積累,讓你有機會確保它們符合你的指望。通常而言,在涉及統計的數據科學項目中,指望基於統計顯著性的概念或基於這些結果的實際有用性概念。統計意義和實際有用性一般密切相關,固然不是相互排斥的。做爲項目計劃的一部分,你可能包含了在統計分析結果中達到某種準確性或重要性的目標,實現這些目標將被視爲該項目的成功。
本文爲雲棲社區原創內容,未經容許不得轉載。