在 Fedora 上搭建 Jupyter 和資料科學環境
| 2019-07-08 13:03 評論: 2 收藏: 2
在過去,神諭和魔法師被認為擁有發現奧秘的力量,國王和統治者們會藉助他們預測未來,或者至少是聽取一些建議。如今我們生活在一個痴迷於將一切事情量化的社會里,這份工作就交給資料科學家了。
資料科學家透過使用統計模型、數值分析,以及統計學之外的高階演算法,結合資料庫裡已經存在的資料,去發掘、推斷和預測尚不存在的資料(有時是關於未來的資料)。這就是為什麼我們要做這麼多的預測分析和規劃分析。
下面是一些可以藉助資料科學家回答的問題:
- 哪些學生有曠課傾向?每個人曠課的原因分別是什麼?
- 哪棟房子的售價比合理價格要高或者低?一棟房子的合理價格是多少?
- 如何將我們的客戶按照潛在的特質進行分組?
- 這個孩子的早熟可能會在未來引發什麼問題?
- 我們的呼叫中心在明天早上 11 點 43 分會接收到多少次呼叫?
- 我們的銀行是否應該向這位客戶發放貸款?
請注意,這些問題的答案是在任何資料庫裡都查詢不到的,因為它們尚不存在,需要被計算出來才行。這就是我們資料科學家從事的工作。
在這篇文章中你會學習如何將 Fedora 系統打造成資料科學家的開發環境和生產系統。其中大多數基本軟體都有 RPM 軟體包,但是最先進的元件目前只能透過 Python 的 pip
工具安裝。
Jupyter IDE
大多數現代資料科學家使用 Python 工作。他們工作中很重要的一部分是 探索性資料分析(EDA)。EDA 是一種手動進行的、互動性的過程,包括提取資料、探索資料特徵、尋找相關性、透過繪製圖形進行資料視覺化並理解資料的分佈特徵,以及實現原型預測模型。
Jupyter 是能夠完美勝任該工作的一個 web 應用。Jupyter 使用的 Notebook 檔案支援富文字,包括渲染精美的數學公式(得益於 mathjax)、程式碼塊和程式碼輸出(包括圖形輸出)。
Notebook 檔案的字尾是 .ipynb
,意思是“互動式 Python Notebook”。
搭建並執行 Jupyter
首先,使用 sudo 安裝 Jupyter 核心軟體包:
$ sudo dnf install python3-notebook mathjax sscg
你或許需要安裝資料科學家常用的一些附加可選模組:
$ sudo dnf install python3-seaborn python3-lxml python3-basemap python3-scikit-image python3-scikit-learn python3-sympy python3-dask+dataframe python3-nltk
設定一個用來登入 Notebook 的 web 介面的密碼,從而避免使用冗長的令牌。你可以在終端裡任何一個位置執行下面的命令:
$ mkdir -p $HOME/.jupyter
$ jupyter notebook password
然後輸入你的密碼,這時會自動建立 $HOME/.jupyter/jupyter_notebook_config.json
這個檔案,包含了你的密碼的加密後版本。
接下來,透過使用 SSLby 為 Jupyter 的 web 伺服器生成一個自簽名的 HTTPS 證照:
$ cd $HOME/.jupyter; sscg
配置 Jupyter 的最後一步是編輯 $HOME/.jupyter/jupyter_notebook_config.json
這個檔案。按照下面的模版編輯該檔案:
{
"NotebookApp": {
"password": "sha1:abf58...87b",
"ip": "*",
"allow_origin": "*",
"allow_remote_access": true,
"open_browser": false,
"websocket_compression_options": {},
"certfile": "/home/aviram/.jupyter/service.pem",
"keyfile": "/home/aviram/.jupyter/service-key.pem",
"notebook_dir": "/home/aviram/Notebooks"
}
}
/home/aviram/
應該替換為你的資料夾。sha1:abf58...87b
這個部分在你建立完密碼之後就已經自動生成了。service.pem
和 service-key.pem
是 sscg
生成的和加密相關的檔案。
接下來建立一個用來存放 Notebook 檔案的資料夾,應該和上面配置裡 notebook_dir
一致:
$ mkdir $HOME/Notebooks
你已經完成了配置。現在可以在系統裡的任何一個地方透過以下命令啟動 Jupyter Notebook:
$ jupyter notebook
或者是將下面這行程式碼新增到 $HOME/.bashrc
檔案,建立一個叫做 jn
的快捷命令:
alias jn='jupyter notebook'
執行 jn
命令之後,你可以透過網路內部的任何一個瀏覽器訪問 <https://your-fedora-host.com:8888>
(LCTT 譯註:請將域名替換為伺服器的域名),就可以看到 Jupyter 的使用者介面了,需要使用前面設定的密碼登入。你可以嘗試鍵入一些 Python 程式碼和標記文字,看起來會像下面這樣:
除了 IPython 環境,安裝過程還會生成一個由 terminado
提供的基於 web 的 Unix 終端。有人覺得這很實用,也有人覺得這樣不是很安全。你可以在配置檔案裡禁用這個功能。
JupyterLab:下一代 Jupyter
JupyterLab 是下一代的 Jupyter,擁有更好的使用者介面和對工作空間更強的操控性。在寫這篇文章的時候 JupyterLab 還沒有可用的 RPM 軟體包,但是你可以使用 pip
輕鬆完成安裝:
$ pip3 install jupyterlab --user
$ jupyter serverextension enable --py jupyterlab
然後執行 jupiter notebook
命令或者 jn
快捷命令。訪問 <http://your-linux-host.com:8888/
lab>
(LCTT 譯註:將域名替換為伺服器的域名)就可以使用 JupyterLab 了。
資料科學家使用的工具
在下面這一節裡,你將會了解到資料科學家使用的一些工具及其安裝方法。除非另作說明,這些工具應該已經有 Fedora 軟體包版本,並且已經作為前面元件所需要的軟體包而被安裝了。
Numpy
Numpy 是一個針對 C 語言最佳化過的高階庫,用來處理大型的記憶體資料集。它支援高階多維矩陣及其運算,並且包含了 log()
、exp()
、三角函式等數學函式。
Pandas
在我看來,正是 Pandas 成就了 Python 作為資料科學首選平臺的地位。Pandas 構建在 Numpy 之上,可以讓資料準備和資料呈現工作變得簡單很多。你可以把它想象成一個沒有使用者介面的電子表格程式,但是能夠處理的資料集要大得多。Pandas 支援從 SQL 資料庫或者 CSV 等格式的檔案中提取資料、按列或者按行進行操作、資料篩選,以及透過 Matplotlib 實現資料視覺化的一部分功能。
Matplotlib
Matplotlib 是一個用來繪製 2D 和 3D 資料影像的庫,在圖象註解、標籤和疊加層方面都提供了相當不錯的支援。
Seaborn
Seaborn 構建在 Matplotlib 之上,它的繪圖功能經過了最佳化,更加適合資料的統計學研究,比如說可以自動顯示所繪製資料的近似迴歸線或者正態分佈曲線。
StatsModels
StatsModels 為統計學和經濟計量學的資料分析問題(例如線形迴歸和邏輯迴歸)提供演算法支援,同時提供經典的 時間序列演算法 家族 ARIMA。
Scikit-learn
作為機器學習生態系統的核心部件,Scikit 為不同型別的問題提供預測演算法,包括 迴歸問題(演算法包括 Elasticnet、Gradient Boosting、隨機森林等等)、分類問題 和聚類問題(演算法包括 K-means 和 DBSCAN 等等),並且擁有設計精良的 API。Scikit 還定義了一些專門的 Python 類,用來支援資料操作的高階技巧,比如將資料集拆分為訓練集和測試集、降維演算法、資料準備管道流程等等。
XGBoost
XGBoost 是目前可以使用的最先進的迴歸器和分類器。它並不是 Scikit-learn 的一部分,但是卻遵循了 Scikit 的 API。XGBoost 並沒有針對 Fedora 的軟體包,但可以使用 pip
安裝。使用英偉達顯示卡可以提升 XGBoost 演算法的效能,但是這並不能透過 pip
軟體包來實現。如果你希望使用這個功能,可以針對 CUDA (LCTT 譯註:英偉達開發的平行計算平臺)自己進行編譯。使用下面這個命令安裝 XGBoost:
$ pip3 install xgboost --user
Imbalanced Learn
Imbalanced-learn 是一個解決資料欠取樣和過取樣問題的工具。比如在反欺詐問題中,欺詐資料相對於正常資料來說數量非常小,這個時候就需要對欺詐資料進行資料增強,從而讓預測器能夠更好地適應資料集。使用 pip
安裝:
$ pip3 install imblearn --user
NLTK
Natural Language toolkit(簡稱 NLTK)是一個處理人類語言資料的工具,舉例來說,它可以被用來開發一個聊天機器人。
SHAP
機器學習演算法擁有強大的預測能力,但並不能夠很好地解釋為什麼做出這樣或那樣的預測。SHAP 可以透過分析訓練後的模型來解決這個問題。
使用 pip
安裝:
$ pip3 install shap --user
Keras
Keras 是一個深度學習和神經網路模型的庫,使用 pip
安裝:
$ sudo dnf install python3-h5py
$ pip3 install keras --user
TensorFlow
TensorFlow 是一個非常流行的神經網路模型搭建工具,使用 pip
安裝:
$ pip3 install tensorflow --user
Photo courtesy of FolsomNatural on Flickr (CC BY-SA 2.0).
via: https://fedoramagazine.org/jupyter-and-data-science-in-fedora/
作者:Avi Alkalay 選題:lujun9972 譯者:chen-ni 校對:wxy
相關文章
- Windows的Linux子系統搭建資料科學環境WindowsLinux資料科學
- 在CentOS 7上搭建Docker環境CentOSDocker
- 在Spark和Hadoop上做大規模資料科學SparkHadoop資料科學
- 教你搭建一個好看的 Jupyter 環境
- 在 Ubuntu 上搭建 nginx+PHP+Laravel 環境UbuntuNginxPHPLaravel
- RabbitMQ系列(一)在Ubuntu上的環境搭建MQUbuntu
- RabbitMQ系列(一)RabbitMQ在Ubuntu上的環境搭建MQUbuntu
- Python資料探勘環境搭建Python
- Docker環境Oracle資料庫搭建DockerOracle資料庫
- 在 Windows 上搭建 React Native IOS 開發環境WindowsReact NativeiOS開發環境
- 在資料科學中使用 C 和 C++資料科學C++
- 基於Ubuntu+Python+Tensorflow+Jupyter notebook搭建深度學習環境UbuntuPython深度學習
- 大資料學習之--hadoop2.7.3環境搭建大資料Hadoop
- 在騰訊雲上搭建 Tensorflow for GPU 深度學習環境 —— Jinkey 原創GPU深度學習
- 在CentOS上全命令列搭建android編譯環境CentOS命令列Android編譯
- TypeScript學習筆記(一)環境搭建和資料型別TypeScript筆記資料型別
- (資料科學學習手札64)在jupyter notebook中利用kepler.gl進行空間資料視覺化資料科學視覺化
- 基於Nginx和uwsgi搭建Django部署上線環境NginxDjango
- Fedora 上的桌面環境記憶體佔用測試記憶體
- Flutter入門學習:Flutter簡介以及在macOS上搭建Flutter開發環境FlutterMac開發環境
- 全棧 – 10 資料庫 用MAMP和WAMP搭建Web環境全棧資料庫Web
- 全棧 - 10 資料庫 用MAMP和WAMP搭建Web環境全棧資料庫Web
- MAC上Flutter環境搭建記錄MacFlutter
- macOS 上搭建Flutter開發環境MacFlutter開發環境
- 全真教程:Windows環境Jupyter Notebook安裝、執行和工作資料夾配置Windows
- 如何基於Jupyter notebook搭建Spark叢集開發環境Spark開發環境
- Infer 在 Mac 上的安裝和環境配置Mac
- 【原創】每月9.9構建你自己的資料科學計算環境資料科學
- (一)Linux環境的學習環境的搭建Linux
- 教小白搭建sybase資料庫環境資料庫
- 大資料實戰之環境搭建(八)大資料
- Windows搭建Superset環境學習Windows
- Linux學習環境搭建Linux
- 在容器環境搭建mysql備庫MySql
- Haskell 在 macOS 下的環境搭建HaskellMac
- 在 Ubuntu 18.04 上 搭建微信小程式和公眾號應用開發環境Ubuntu微信小程式開發環境
- 搭建Maven和Nexus環境Maven
- (資料科學學習手札94)QGIS+Conda+jupyter玩轉Python GIS資料科學Python