1. 程式人生 > >業界 | 除了R、Python,還有這些重要的資料科學工具

業界 | 除了R、Python,還有這些重要的資料科學工具

這年頭,如果你不會點兒R或者Python,你都不好意思說你是混資料圈的。

 

在你向一些大神請教的時候,他可能也會推薦你學習這兩個高階程式語言,然後順便在推薦你瞭解一下SQL以及Math。如果講究點的,可能還會傳授你一些Spark、AWS/雲端計算的經驗。

 

嗯!差不多就這些了~

 

當前主流資料科學領域用的工具就是這些了。

 

但是,如果你想成為一個數據科學“英雄”,僅僅掌握一些主流的東西是不夠的。

 

今天呢,文摘菌就給你推薦幾個好用到爆的小工具~~

 

Linux

 

Linux名字應該是如雷貫耳了吧!但很多資料科學家對它的命令列並不熟悉。Bash指令碼是電腦科學中最基本的工具,並且資料科學中很大一部分需要程式設計,因此這項技能至關重要。

幾乎可以肯定的是,你的程式碼會在linux上開發和部署,使用命令列完成一些工作是非常酷的。與資料科學一樣,Python也無法獨立於環境工作,並且你必須通過一些命令列介面來處理包、框架管理、環境變數、訪問路徑($PATH)等等。

 

Git

 

Git聽名字,你也應該不陌生。大多數資料科學家對git似懂非懂。由於資料科學定義模糊,很多人都不遵循良好的軟體開發實踐。例如,有人甚至很長一段時間都不知道單元測試。

 

當你在團隊中編碼時,你就會知道git是很重要的。如果團隊成員提交的程式碼發生衝突,你得知道如何處理。或者你需要挑選部分程式碼修復bug、更新……將程式碼提交到開源或私有的repo(如Github)時,你也可以使用Coveralls之類的東西進行程式碼測試,並且還有其他框架幫助你在提交時方便地將程式碼部署到生產中。

 

REST APIs

 

現在,你已經訓練好了一個模型——然後該怎麼辦?沒有人想看你的Jupyter notebook或者某種蹩腳的互動式shell指令碼。此外,除非你在共享環境中進行訓練,否則你的模型只能自己使用。僅僅擁有模型是不夠的,而這正是大多資料科學家遇到困難的地方。

要從模型中獲得實際的預測結果,最好通過標準API呼叫或開發可用的應用程式。像Amazon SageMaker這樣的服務已經得到普及,因為它可以讓你的模型和可用程式無縫銜接。

 

如果你功力深厚,當然你也可以使用Python中的Flask框架自己構建一個

要從模型中獲得實際的預測結果,最好通過標準API呼叫或開發可用的應用程式。像Amazon SageMaker這樣的服務已經得到普及,因為它可以讓你的模型和可用程式無縫銜接。

 

如果你功力深厚,當然你也可以使用Python中的Flask框架自己構建一個。

 

 

此外,在後端有許多Python包可進行API呼叫,因此瞭解API是什麼以及如何在開發中使用API,這會讓你有點兒與眾不同。

 

Docker & Kubernetes

 

這兩個工具棒極了。docker允許使用者擁有一個生產就緒(production ready)的應用環境,而無需為每個在其上執行的單個服務集中配置生產伺服器。與需要安裝完整作業系統的虛擬機器不同,docker容器在與主機相同的核心上執行,並且輕量得多。

 

 

想象一下像Python的venv這樣的docker容器,有更多功能。 更高階的機器學習庫(如Google的Tensorflow)需要特定的配置,而這些配置很難在某些主機上進行故障排除。因此,docker經常與Tensorflow一起使用,以確保用於模型訓練的環境是開發就緒(development-ready)的。

關注微信公眾號:程式設計師交流互動平臺!獲取資料學習!

容器化且可擴充套件的應用程式

 

隨著市場趨向於更多的微型服務和容器化應用,docker因其強大的功能越來越受歡迎。Docker不僅適用於訓練模型,也適用於部署。將模型視作服務,你就可以將它們容器化,以便它們具有執行所需的環境,然後可以與應用程式的其他服務無縫互動。這樣,你的模型具有可擴充套件性同時也具有了便攜性。

 

 

Kubernetes(K8s)是一個在多主機上進行規模管理和部署容器化服務的平臺。本質上,這意味著您可以輕鬆地通過跨水平可擴充套件叢集,管理和部署docker容器。

 

由於谷歌正在使用Kubernetes來管理他們的Tensorflow容器(還有其他東西),他們進一步開發了Kubeflow,一個在Kubernetes上用於訓練和部署模型的開源工作流。容器化的開發和生產正不斷與機器學習和資料科學相結合,我相信這些技能對於2019年的資料科學家來說將是重要的。

 

 

Apache Airflow

 

Airflow平臺雖然很小眾,但是卻很酷。Airflow是一個Python平臺,可以使用有向無環圖(DAG)程式化地建立、排程和監控工作流。

 

DAG(有向無環圖)

 

這基本上只是意味著你可以隨時根據需要輕鬆地設定Python或bash指令碼。與可自定義但不太方便的定時任務(cron job)相比,Airflow能讓你在使用者友好的GUI中控制排程作業。

 

Elasticsearch

 

Elasticsearch同樣比較小眾。這個有點特別,取決於你是否有搜尋/ NLP用例。但是,我可以告訴你在財富50強公司工作,我們有大量的搜尋用例,這是我們堆疊中最重要的框架之一。與在Python中從頭開始構建某些東西相反,Elastic通過Python客戶端便捷地提供了所需的一切。

Elasticsearch讓你可以輕鬆地以容錯和可擴充套件的方式索引和搜尋文件。你擁有的資料越多,啟動的節點就越多,查詢執行的速度就越快。Elastic使用Okapi BM25演算法,該演算法在功能上非常類似於TF-IDF(詞頻-逆向檔案頻率,Elastic以前使用的演算法)。它有一大堆花裡胡哨的東西,甚至支援多語言分析器等定製外掛。

關注微信公眾號:程式設計師交流互動平臺!獲取資料學習!

lasticsearch index

 

由於它本質上是比較查詢到的與索引中文件的相似性,因此它也可用於比較文件間的相似性。強烈建議先檢視一下Elasticsearch是否提供了所需的一切,而不是直接從scikit-learn包中匯入TF-IDF使用。

 

Homebrew(mac系統)

 

Ubuntu有apt-get,Redhat有yum,而Windows 10甚至有OneGet 。這些包管理器通過命令列介面(CLI)安裝、管理依賴項,並自動更新路徑($PATH)。雖然mac系統不能開箱即用,但Homebrew可以通過終端命令輕易安裝。

 

彌補了OS系統無包管理的缺陷

 

不能在本地安裝Apache Spark的小夥伴。可以訪問官網,下載後解壓,並將spark-shell命令新增到$ PATH中,或者在終端輸入brew install apache-spark(注意:要想使用spark,你需要安裝scala和java)。

在這裡我還是要推薦下我自己建的大資料學習交流裙:805127855, 裙 裡都是學大資料開發的,如果你正在學習大資料 ,小編歡迎你加入,大家都是軟體開發黨,不定期分享乾貨(只有大資料開發相關的),包括我自己整理的一份2018最新的大資料進階資料和高階開發教程,歡迎進階中和進想深入大資料的小夥伴。