像數據科學家同樣思考:12步指南(中)

像數據科學家同樣思考:12步指南(上)

7-工程產品

下一步是創建統計軟件。若是統計是分析和從數據中得出結論的框架,那麼軟件就是將這個框架付諸行動的工具。數據科學家必須爲任何項目作出許多軟件選擇。若是你有一個喜歡的軟件,這一般是一個不錯的選擇,可是有充分的理由去挑選別的東西。若是你是數據科學或統計軟件的新手,或許很難找到一個起點。數據庫

電子表格和基於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包是必不可少的。軟件包scipyscikit-learn在優化、集成、集羣、迴歸、分類和機器學習等功能中很受歡迎。使用了這三個軟件包,Python能夠與R和MATLAB的核心功能相媲美,在某些領域,例如機器學習,Python彷佛在數據科學家中更受歡迎。對於數據處理,pandas已經變得很是受歡迎。機器學習

然而,數據科學中最著名的Python包之一是Natural Language Toolkit(NLTK)。它是天然語言處理(NLP)中最受歡迎和最強大的工具。若是有人正在從Twitter、新聞源、電子郵件語料庫或其餘地方解析和分析文本,那麼他們極可能已經使用了NLTK。總的來講,Python很是適合想要進行一些數據科學以及其餘一些純粹的非統計軟件開發的人。編程語言

雖然Java不是腳本語言,不太適合探索性的數據科學,但Java是軟件應用程序開發中最著名的語言之一,所以它常常用於分析應用程序開發。致使Java不利於探索性數據科學的許多緣由使其更有利於應用程序開發。Java對於探索性數據科學來講並非很好,但它對於基於數據科學的大規模或生產代碼來講很是有用。Java有許多統計庫,可用於從優化到機器學習,其中許多都是由Apache Software Foundation提供和支持的。工具

在選擇統計軟件工具時,請牢記如下標準:

  • 靈活性:除了可以執行你想要的主要統計分析以外,若是統計工具能夠執行一些相關方法,一般也會有所幫助。一般你會發現你選擇的方法並不像你但願的那樣好,並且你在這個過程當中學到的東西會讓你相信一種不一樣的方法可能會更好。
  • 良好的文檔:除了經常使用以外,統計軟件工具應該有全面而有用的文檔。若是你沒法找到一些重要問題的答案,例如如何配置進行線性迴歸的輸入或如何格式化機器學習功能,這是一個很差的跡象。若是大問題的答案不在文檔中,那麼找到你將不可避免地遇到的更具體問題的答案就更難了。
  • 專用:某些軟件工具或其軟件包是爲特定目的而構建的,以後又添加了其餘功能。例如,MATLAB和R中的矩陣代數例程在構建語言時是主要關注的問題,所以能夠安全地假設它們是全面且健壯的。相比之下,矩陣代數在初始版本的Python和Java中並非主要關注的問題,所以這些功能稍後以包和庫的形式添加。
  • 互操做性:若是你正在使用數據庫,那麼使用能夠直接與數據庫交互的工具會頗有幫助。若是你要根據結果構建Web應用程序,則可能須要選擇支持Web框架的工具或者至少可使用JSON或其餘一些Web友好格式導出數據的工具。若是你將在各類類型的計算機上使用統計工具,那麼你將但願該軟件可以在各類操做系統上運行。
  • 許可證:若是你將商業軟件用於商業目的,那麼使用學術或學生許可這樣作具備法律風險。將商業軟件(不管是否通過修改)出售給其餘人而不確認許可證是否禁止此類軟件也是危險的。

8-優化產品

接下來咱們就須要使用補充軟件優化產品。咱們在上一步中建立的軟件工具能夠是多功能的,但它們本質上是統計的。軟件能夠作的不只僅是統計數據,特別是,有許多工具可用於有效地存儲,管理和移動數據。有些可使計算和分析的每一個方面都更快且更容易管理。這裏有4種流行的軟件,可使你做爲數據科學家的工做更輕鬆。

數據庫很常見,在項目期間跨越不一樣數據庫的可能性至關高,特別是若是你要使用其餘人的數據。可是,固然不是僅僅接觸,而是本身創建一個數據庫來幫助你完成項目。最多見的兩種類型是關係型(SQL)和非關係型(NoSQL,ElasticSearch),與將數據存儲在計算機的文件系統上相比,數據庫具備許多優點。大多數狀況下,數據庫能夠提供對數據的任意訪問且比文件系統更快,而且它們還能夠經過冗餘方式擴展,這種方式優於文件系統擴展。

高性能計算(HPC)是一個通用術語,適用於須要進行大量計算而且但願儘快完成計算的狀況。你能夠選擇使用超級計算機計算機集羣圖形處理單位(它們很是適合執行高度可並行化的計算)。若是你有權訪問,那麼HPC是等待PC計算全部須要計算的東西的好選擇。使用HPC產品的好處有不少,可是在你選擇以前你必需要衡量一下成本。

最大的雲服務提供商主要是大型科技公司,例如阿里巴巴、谷歌和微軟等公司在向公衆開放以前都已經擁有大量的計算和存儲資源。但他們並不老是將資源用到最大負荷,所以他們決定出租過剩的產能並擴大其收益,結果證實這是一系列有利可圖的商業決策。提供的服務一般大體至關於我的計算機,計算機集羣或本地網絡的功能。全部這些能夠在世界各地的地理區域中得到,可經過在線鏈接和標準鏈接協議訪問,以及一般是Web瀏覽器界面。若是你沒有足夠的資源來充分知足你的數據科學需求,你能夠選擇嘗試購買雲服務。

最後,你能夠嘗試大數據技術:Hadoop,HBase和Hive等。大數據技術的設計不是爲了移動數據,而是當數據集處於很是大的規模時,利用大數據技術能夠節省大量的時間和金錢。每當計算任務受數據傳輸限制時,大數據能夠提升效率。可是,與本章中描述的其餘技術相比,大數據系統軟件須要花費一些精力。

9-執行計劃

構建階段的最後一步是執行產品的構建計劃。大多數軟件工程師可能熟悉構建複雜軟件的試驗和磨難,但他們可能不熟悉構建處理可疑質量數據的軟件的難度。另外一方面,統計人員知道擁有髒數據的狀況,但可能沒有創建更高質量軟件的經驗。一樣,與項目相關的不一樣角色的每一個人可能擁有各類經驗,併爲不一樣的事情作好準備。

  • 若是你是一名統計學家,你會知道有髒數據,並且你知道誤差和誇大結果的重要性。但你可能沒有太多經驗來構建業務軟件,特別是生產軟件。你應該諮詢具備實踐經驗的軟件工程師,以瞭解如何提升軟件的穩健性。
  • 若是你是軟件工程師,你知道開發生命週期是什麼樣的,而且你知道如何在部署和交付以前測試軟件。可是你可能不瞭解數據,不管你在軟件設計和開發方面有多好,數據最終都會以你從未想過的方式破壞你的應用程序。這須要在構建軟件時採用新的思惟模式以及對錯誤有容忍度,由於它們會頻繁地發生。你應該諮詢精通預測和處理有問題數據的統計人員,例如異常值,缺失值。
  • 若是你剛開始從事數據科學,沒有豐富的統計學或軟件工程經驗,若是你能夠向他們解釋你的項目和目標,那麼有經驗的人能夠向你提供一些可靠的建議。做爲一個初學者,你在這個過程階段有職責來彌補經驗的不足。
  • 若是你只是該項目的一個團隊成員,那麼溝通和協調是相當重要的。你沒必要了解團隊中發生的全部事情,但有必要明確目標和指望,並確保有人管理整個團隊。

設計計劃應包含多個路徑和選項,全部這些都取決於項目的結果、目標和期限。不管計劃有多好,隨着項目的進展,總有可能對其進行修訂。即便你考慮到全部不肯定因素而且意識到每一種可能的結果,計劃範圍以外的事情也可能會發生變化。計劃須要改變的最多見緣由是新信息從項目外部的來源出現,而且計劃的一個或多個路徑發生變化或目標自己發生變化。

隨着項目的進展,你一般會看到愈來愈多的結果積累,讓你有機會確保它們符合你的指望。通常而言,在涉及統計的數據科學項目中,指望基於統計顯著性的概念或基於這些結果的實際有用性概念。統計意義和實際有用性一般密切相關,固然不是相互排斥的。做爲項目計劃的一部分,你可能包含了在統計分析結果中達到某種準確性或重要性的目標,實現這些目標將被視爲該項目的成功。



本文做者:【方向】

閱讀原文

本文爲雲棲社區原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索