PHP 是世界上最好的語言之——機器學習工程師用 Python 開發環境的最佳實踐

工程師對自己的開發環境總是有著各種各樣的偏好。Vim 還是 emacs?使用 tab 還是空格縮進?Virtualenv 和 Anaconda 哪個更好?紛爭不斷,爭論不休。今天我會與大家分享我用於搞定數據處理和機器學習的開發環境。

這是一個系列視頻/文章 「AI Adventures」中的第十一篇,由 Google 的開發技術推廣工程師 Yufeng Guo 主講,用通俗易懂的語言幫助你了解人工智慧和機器學習。在這一系列視頻/文章中,我們將一起探秘人工智慧的世界,共同品味藝術、探索科學以及掌握機器學習的工具。

第一篇:機器學習是什麼?

第二篇:機器學習「七步走」

第三篇:用評估器給花卉分類

第四篇:彈性伸縮的雲端託管服務

第五篇:通過 TensorBoard 將模型可視化

第六篇:通過深度神經網路再識評估器

第七篇:雲端訓練模型的大數據解決方案

第八篇:跟著 Google Research 體驗自然語言生成

第九篇:雲上的機器學習引擎

第十篇:使用 MNIST 數據集訓練模型

所有的內容和視頻都會首發在「機智如你」專欄,目標是發布最新與谷歌相關的機器學習、TensorFlow 相關內容,如果你有任何問題,也歡迎在留言區向我們提出反饋

你不必照著我的配置來弄,但也許其中的一些可以啟發你搞定專屬的開發環境。

https://www.zhihu.com/video/936637388861014016


Pip

首先要講講 pip。Pip 是 python 的包管理工具。Python 內置 pip 已經有一些日子了,所以如果你裝了 Python,通常都會自帶 pip。

Pip 被用來安裝各種包,比如 tensorflow、numpy、pandas 和 jupyter,同時還會將它們的依賴一同安裝好。

pip install <your_favorite_library> n

許許多多的 Python 資源都通過 pip 包的形式來傳輸。有時你會在某個包含 Python 腳本的目錄下看到一個 requirement.txt 文件。通常,那個文件描述了當前項目所需的所有 pip 包,通過下面的命令即可將它們都安裝到當前目錄。

pip install -r requirements.txt. n

作為整個 pip 包生態的一份子,各種各樣的版本號、以來信息充斥其中。有時我會針對不同項目使用不同版本的庫(pip 包),所以我需要有一種能夠針對獨立環境配置一組包依賴關係的方式。

同時在一台機器上搞 Web 開發和數據科學相關研究會讓你的 Python 包混亂不堪

目前有兩種非常受歡迎的方式用於管理不同的 pip 包:virtualenv 和 anaconda。

Pip: Python Package Index

▍Virtualenv

Virtualenv 支持你創建可命名的「虛擬開發環境」,在其中你就能按照單獨的習慣安裝 pip 包了。

如果你想要針對每個環境獨立控制對各類 pip 包的管理,那麼這就是一款絕佳的工具比如,你可以為 Web 開發創建獨立的環境,定義所需的依賴庫,然後為數據相關的開發研究建立截然不同的環境。

這樣一來,你再也不用顧慮各種毫無關係的依賴包在開發環境中存在,也可以創建具有專門用途的開發環境。

Virtualenv: pypa/virtualenv

▍Anaconda

如今,如果你主要從事數據相關的工作,那麼 Anaconda 將會是一個不錯的選擇。Anaconda 由 Continuum Analytics 打造,並且是一個集成了許許多多數據相關 Python 庫的發行版。

Anaconda 的流行應當歸功於它只需一次安裝就能得到數據科學、機器學習相關的大量工具,所以它勝在快速和簡單的安裝配置過程上。

與 Virtualenv 一樣,Anaconda 也引入了創建專屬環境的概念,也提供了每個環境下獨立的依賴庫版本支持。Anaconda 還有自己的包管理器:conda,你可以用它來安裝依賴庫。

另外,Anaconda 還允許你通過 pip 安裝一些在 Anaconda 包管理器中找不到的 Python 包。

下載地址:Anaconda Download

怎麼選擇呢?

那麼我究竟該怎麼選擇呢?是 Virtualenv 還是 Anaconda?我時常會跨越 Python2 和 Python3 測試新的 TensorFlow 版本和一些其他的庫。

理想情況下,我能在這兩者上使用那些新的庫,但是某些情況下,兩者都不能夠滿足需求。

▍再認識認識 pyenv

所以最終我選擇兩者都用,然後用 pyenv 這個庫來管理所有的東西。從概念上來看,pyenv 處於 Virtualenv 和 Anaconda 的上層,它不僅被用於管理所使用的 Virtualenv 的虛擬環境和 Anaconda 的開發環境,還可以輕鬆應對 Python2 和 Python3 相關的操作。

Pyenv 所有特性中我最鐘意的就是它為給定目錄創建默認開發環境這一點。這就使得創建新目錄時所需的開發環境實現自動配置。特別是當我每次要創建新項目的時候,這比起以往要記住如何創建複雜環境來說簡單多了。


所以到底應該用哪一款 Python 包管理工具?這確實由你的日常工作流和喜好來決定。

如果你一般就是用一些核心的數據研究工具,並且不在意有一些額外多餘的庫安裝到本地,Anaconda 是個不錯的選擇。選擇 Anaconda 能夠給你滿足所有需求偏好的更簡單的工作流。

但是,如果你是一個喜歡定製自己的虛擬工作環境並且對其中的依賴項有極強控制欲的人,那麼諸如 Virtualenv 和 pyenv 的工具就非常適合你。

pyenv: pyenv/pyenv

小結一下

管理 Python 依賴庫,絕對沒有唯一最佳,除了我列舉出來的之外還有許許多多非常不錯的。

各種各樣的工具此起彼伏,記住最重要的就是每個人都有不同的需求、偏好、用法,所以要根據自身的需求來覺得最適合你的工具是什麼。

你的 Python 環境是什麼樣的?你是如何牢牢掌控一切的?在評論中分享你的配置吧!


感謝閱讀本期 Cloud AI Adventures 分享,喜歡請點贊!如果喜歡這個系列,歡迎關注知乎專欄「機智如你」或者關注我(也可以到 Medium 關注 Yufeng Guo 和 YouTube 頻道)。

▏原文出處:Medium - Which Python package manager should you use

▏封面來源:YouTube 視頻縮略圖

▏視頻出處:YouTube - Which Python Package Manager Should You Use?

▏字幕翻譯:谷創字幕組

▏文章編輯: @楊棟


推薦閱讀:

神經網路-全連接層(1)
大家心目中的這些「優質」論文,你讀過幾篇?| PaperDaily #01

TAG:机器学习 | Python | 开发环境 |