原創(chuàng)|使用教程|編輯:我只采一朵|2017-06-30 14:33:14.000|閱讀 127 次
概述:文將會(huì)對(duì)如何建立項(xiàng)目提供一些啟發(fā)思路,以幫助你快速達(dá)到 在數(shù)據(jù)科學(xué)領(lǐng)域能有所產(chǎn)出 的境界。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
現(xiàn)在有很多博文對(duì)復(fù)雜的機(jī)器學(xué)習(xí)算法和前沿的技術(shù)進(jìn)行了展示,而這也促使數(shù)據(jù)科學(xué)家們慢慢變成了“社交控”()。但數(shù)據(jù)分析的基本內(nèi)容究竟是什么樣的?你應(yīng)當(dāng)怎樣安排項(xiàng)目結(jié)構(gòu)?你需要使用什么樣的工具?等等諸如此類的問(wèn)題卻鮮有人問(wèn)津。本文將會(huì)對(duì)如何建立項(xiàng)目提供一些啟發(fā)思路,以幫助你快速達(dá)到 的境界。
項(xiàng)目的結(jié)構(gòu)總是為了契合人們的需求而得到不斷完善,這會(huì)導(dǎo)致在一個(gè)團(tuán)隊(duì)中出現(xiàn)不同的項(xiàng)目構(gòu)架。如果你或者團(tuán)隊(duì)中的其他人能夠及時(shí)發(fā)現(xiàn)項(xiàng)目結(jié)構(gòu)的重要性,并且這個(gè)概念在團(tuán)隊(duì)中得到推廣,那么,你無(wú)疑是幸運(yùn)的。
多年前作者偶然發(fā)現(xiàn)了 網(wǎng)站。從那之后,作者便一直提倡身邊的人使用規(guī)范的項(xiàng)目結(jié)構(gòu)。最近, 發(fā)布了更為普適的 來(lái)構(gòu)建項(xiàng)目結(jié)構(gòu)。
而這些網(wǎng)站在項(xiàng)目構(gòu)建方面的思路大致如下:
作者簡(jiǎn)略的項(xiàng)目結(jié)構(gòu)如下所示:
example_project/ ├── data/ <- The original, immutable data dump. ├── figures/ <- Figures saved by notebooks and scripts. ├── notebooks/ <- Jupyter notebooks. ├── output/ <- Processed data, models, logs, etc. ├── exampleproject/ <- Python package with source code. │ └── __init__.py <-- Make the folder a package. └── process.py <-- Example module. ├── tests/ <- Tests for your Python package. └── test_process.py <-- Tests for process.py. ├── environment.yml <- Virtual environment definition. ├── README.md <- README with info of the project. └── setup.py <- Install and distribute your module.
你可以在 看到相關(guān)實(shí)例。
項(xiàng)目通常遵循另一種結(jié)構(gòu):
實(shí)際上,你選擇什么樣的項(xiàng)目結(jié)構(gòu)并不重要,只要它能符合你的工作流程,你也能堅(jiān)持使用它。你應(yīng)該嘗試去理解何為項(xiàng)目,從而選擇滿足要求的項(xiàng)目結(jié)構(gòu)。
項(xiàng)目之間應(yīng)當(dāng)相互獨(dú)立,你肯定不希望新的項(xiàng)目打亂了之前的工作成果。我們可以通過(guò)把不同項(xiàng)目的文件存儲(chǔ)在不同的文件夾下實(shí)現(xiàn)獨(dú)立性,但是不同項(xiàng)目之間也應(yīng)當(dāng)使用不同的 Python 環(huán)境。
虛擬環(huán)境依賴于不同的項(xiàng)目而相互獨(dú)立,避免了包的沖突問(wèn)題。每個(gè)虛擬環(huán)境都安裝了特定版本的不同包。虛擬環(huán)境一中安裝了版本為 1.11 的numpy庫(kù)和版本為 0.18 的pandas庫(kù),而虛擬環(huán)境二中則僅僅安裝了版本為 0.17 的pandas庫(kù)。作者選取適用于數(shù)據(jù)科學(xué)的 管理虛擬環(huán)境(可在 看到選擇它的原因)。
下列命令可以創(chuàng)建一個(gè)使用 Python 3.5 的新的 conda 虛擬環(huán)境,命名為 example_project:
$ conda install --name example_project python=3.5
激活虛擬環(huán)境( Windows 系統(tǒng)下將 source 省去):
$ source activate example_project
之后便可以安裝所需的包了:
$ conda install pandas numpy jupyter scikit-learn
當(dāng)你在不同的項(xiàng)目間跳轉(zhuǎn)時(shí),可以運(yùn)行source deactivate命令取消激活,并激活新的項(xiàng)目虛擬環(huán)境。
一旦你熟練使用activate和deactivate命令,就會(huì)發(fā)現(xiàn)虛擬環(huán)境是一個(gè)很輕巧的工具來(lái)保證 Python 環(huán)境的獨(dú)立。通過(guò)導(dǎo)出環(huán)境定義文件(例如,所有安裝的包名和版本號(hào)),你的項(xiàng)目就很容易得到復(fù)現(xiàn)了。如果你想查看更多細(xì)節(jié),可在 中看到。
每個(gè)項(xiàng)目都應(yīng)該有自己的 Git 資源庫(kù)。在每個(gè)項(xiàng)目創(chuàng)建一個(gè)資源庫(kù)可以幫助你追蹤每個(gè)項(xiàng)目的歷史和解決在不同的項(xiàng)目間復(fù)雜的版本依賴問(wèn)題。
又或者,你可以選擇在一個(gè)資源庫(kù)中包含多個(gè)項(xiàng)目,將所有內(nèi)容存儲(chǔ)在一個(gè)位置。這樣做的缺點(diǎn)在于往往會(huì)因?yàn)楹喜_突問(wèn)題而告終(數(shù)據(jù)科學(xué)家通常并不能熟練使用 Git )。除了很多使用 Git 時(shí)出現(xiàn)的問(wèn)題,這也會(huì)導(dǎo)致你的項(xiàng)目之間缺乏獨(dú)立性。
創(chuàng)建 Git 資源庫(kù)最簡(jiǎn)單的方法就是在你的 Git 遠(yuǎn)程主機(jī)托管服務(wù)(例如, 和 )上創(chuàng)建一個(gè)新的 Git 資源庫(kù),然后把它復(fù)制到本地:
$ git clone //github.com/hgrif/example-project.git
你可以在這個(gè)空文件夾下構(gòu)建你的項(xiàng)目結(jié)構(gòu)。
如果你按照這個(gè)步驟執(zhí)行,并準(zhǔn)備在一個(gè)新文件夾下創(chuàng)建一些文件了。那么,你首先還需要在電腦上對(duì) git 資源庫(kù)進(jìn)行初始化:
$ git init
然后在你的遠(yuǎn)程主機(jī)上創(chuàng)建一個(gè)新的 git 資源庫(kù),得到它的鏈接,并運(yùn)行下列命令:
$ git remote add origin //github.com/hgrif/example-project.git
該命令會(huì)添加鏈接為 //github.com/hgrif/example-project.git 的遠(yuǎn)程資源庫(kù),并命令為 origin 。你可能需要把現(xiàn)有的 master分支推送到origin上:
$ git push --set-upstream origin master
在你的項(xiàng)目目錄下創(chuàng)建.gitignore文件可以避免將圖或數(shù)據(jù)誤填加進(jìn)資源庫(kù)中。作者一般使用 ,并且在文件中加入 data/、figures/ 和 output/ 文件夾,以便 Git 可以忽略它們。
既然 Git 已經(jīng)設(shè)置好了,你就可以對(duì)核心內(nèi)容使用git add和git commit命令了!
使用一些工具可以幫助你擺脫那些重復(fù)性工作。
Python 中的cookiecutter包可根據(jù)模板自動(dòng)創(chuàng)建項(xiàng)目文件夾。你可以使用現(xiàn)有的模板,例如,或者 ,或是創(chuàng)建你自己新的模板。
使用虛擬環(huán)境最好的方法就是選用支持它們的編輯器,比如: 。你也可以使用 或者 去激活虛擬環(huán)境,并設(shè)置環(huán)境的變量,如果你cd定位到一個(gè)工作目錄下的話。
對(duì)你的數(shù)據(jù)科學(xué)項(xiàng)目有一個(gè)良好的設(shè)置將會(huì)有助于同其他人協(xié)作,并且項(xiàng)目本身也會(huì)更容易復(fù)現(xiàn)。一個(gè)好的項(xiàng)目結(jié)構(gòu),一個(gè)虛擬環(huán)境和一個(gè) git 資源庫(kù)是每個(gè)數(shù)據(jù)科學(xué)項(xiàng)目的基石。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn