天天看點

資料科學家應該了解的5個 Python庫

作者:不秃頭程式員
資料科學家應該了解的5個 Python庫

如果你是一位初級或中級的機器學習工程師或資料科學家,這篇文章非常适合你。在標明了你偏愛的機器學習庫,如PyTorch或TensorFlow,并掌握了模型架構之後,便可以訓練模型解決現實問題。

在本篇博文中,我會介紹我認為每位機器學習工程師和資料科學家都應該熟悉的五個Python庫,它将成為你所掌握的技能集的寶貴補充。通過簡化機器學習開發過程,使你成為更具競争力的候選人。

資料科學家應該了解的5個 Python庫

1. MLFlow — 實驗和模型追蹤

資料科學家應該了解的5個 Python庫

圖檔來源:作者,示例來自 https://mlflow.org

想象一下如果你是一位機器學習開發人員,正在建構一個預測客戶流失模型的項目。需要使用Jupyter筆記本探索資料,嘗試不同的算法和超參數。随着項目的進展,Jupyter筆記本變得越來越複雜,充滿了代碼、結果和可視化。使得追蹤項目進展、識别什麼内容有效内容什麼無效變得愈發困難。

此時,MLflow便大顯身手了。MLflow是一個平台,自始至終助力管理機器學習實驗,確定可追溯性和可複制性。它提供了一個集中的存儲庫,用于存儲代碼、資料和模型元件,以及一個溯源系統,記錄包括超參數、名額和輸出在内的全部實驗内容。

MLflow幫助你避免Jupyter筆記本使用陷阱的具體路徑:

  1. 集中存儲庫:MLflow使你的代碼、資料和模型工件組織有序且易于通路,可以快速找到所需的資源,避免迷失在筆記本的迷宮中。
  2. 實驗追蹤:MLflow記錄每一個實驗,包括使用的确切代碼、資料和超參數。這使你能夠輕松比較不同的實驗,并識别導緻最佳結果的因素。
  3. 可複制性:MLflow使得用相同的代碼、資料和環境複制最佳模型成為可能。這對于確定實驗結果的一緻性和可靠性至關重要。

是以,如果想建構有效的機器學習模型,抛棄Jupyter筆記本的混亂,擁抱強大的MLflow是個不錯的選擇。

2. Streamlit — 小而快的Web應用程式

資料科學家應該了解的5個 Python庫

Streamlit是資料科學家最受歡迎的前端架構。它是一個開源的Python架構,允許使用者快速輕松地建立互動式資料應用程式,對于那些沒有Web開發基礎知識的資料科學家和機器學習工程師來說特别有益。

使用Streamlit。開發者可以建構和分享引人入勝的使用者界面,并在不需要深入了解前端經驗或知識的情況下部署模型。該架構是免費的,并且是開源的,使得在幾分鐘内建立可共享的Web應用程式成為可能。

如果有一些涉及機器學習的小項目,使用Streamlit添加使用者界面,有許多現成的模闆,無須花費很長時間,在幾分鐘内便能完成前端。分享它也非常容易,它一定成為你履歷中的亮點。

3.FastAPI — 輕松快速部署模型

資料科學家應該了解的5個 Python庫

圖檔來源:作者

訓練并驗證好模型之後,需要進行部署,以便其他應用程式可以使用,這便是FastAPI的用處所在。

FastAPI是一個用于建構RESTful API的高性能Web架構,以其簡單性、易用性和速度而聞名。這也是為什麼它能夠成為将機器學習模型部署到生産環境的理想選擇。

以下是ML工程師和資料科學家應該學習FastAPI的一些原因:

  • 速度:FastAPI非常快。它使用現代異步程式設計模型,能夠同時高效處理多個請求,這對于部署需要處理大量資料的機器學習模型至關重要。
  • 簡單性:FastAPI易于學習和使用。它文法清晰簡潔,更容易編寫幹淨且易于維護的代碼,這對于沒有豐富經驗Web開發人員的ML工程師和資料科學家來說非常重要。
  • 易用性:FastAPI提供了很多功能,使得建構和部署API變得容易。例如,它内置了自動歸檔、資料驗證和錯誤處理的支援,使ML工程師能夠專注于他們的核心工作——建構和部署模型,節省了時間和精力。
  • 生産就緒:FastAPI專為生産而設計,支援多後端、加密和部署工具等功能,它成為部署機器學習模型的可靠選擇。

總之,FastAPI是一個功能強大且多才多藝的工具,可用于将機器學習模型部署到生産環境。它的易用性、速度和生産就緒性使其成為ML工程師和資料科學家的理想選擇。

4.XGBoost — 既快又好地預測表格資料

資料科學家應該了解的5個 Python庫

圖檔來源:作者,來源1和來源2

XGBoost是一種功能強大的機器學習算法,以其準确性、速度和可擴充性而聞名。它基于梯度提升架構,将多個弱學習器組合成一個強學習器。簡單來說,使用多個小模型,如随機森林,将它們組合成一個大模型,最終得到一個更快的模型(與神經網絡相比),但同時它是可擴充的,并且不容易過拟合。

以下是ML工程師和資料科學家應該學習XGBoost的一些原因:

  • 準确性:XGBoost是最準确的機器學習算法之一,它已赢得許多機器學習競賽,并且在各種任務中始終名列前茅。
  • 速度:XGBoost非常快,能夠快速高效地在大型資料集上進行訓練和預測。這使得它成為以速度首要的應用程式(如實時欺詐檢測或金融模組化)的良好選擇。
  • 可擴充性:XGBoost具有高度的可擴充性。它可以處理大型資料集和複雜模型,而不犧牲準确性。這使得它成為資料量大或模型複雜性高的應用程式的最佳選擇。

如果任務涉及表格資料(如根據房間數量預測房價,或根據最後一次購買/賬戶資料計算客戶購買産品的可能性),XGBoost是你在求助于Keras或PyTorch的神經網絡之前應該首先嘗試的算法。

5. ELI5 — 使模型更易于解釋和透明

資料科學家應該了解的5個 Python庫

圖檔來源:作者,來源1,來源2

訓練好模型之後,便可以部署使用它,此時模型更像是一個“黑箱”——輸入内容,得到輸出。模型究竟是如何工作的?沒人知道。這兒是數字,那兒也是數字,最後得出了一個答案。

如果客戶/老闆問你,模型是如何得出某個特定答案的?你根本無法知道,你甚至不可能知道,在訓練過程中哪些參數最重要,哪些隻是增加了噪聲?

所有這些問題都可以使用ELI5來回答。這個庫将使模型變得透明、可解釋和更容易了解。能得到模型、資料、訓練過程、權重分布和輸入參數等更多資訊。除此之外,可以“調試”模型,并獲得更多關于什麼架構會更好工作,以及目前模型存在什麼問題的見解。

ELI5支援像Scikit-Learn、Keras、XGBoost等許多庫。模型可以實作圖像、文本和表格資料的分類。

結論

我們探索了五個領先的資料科學架構,如果你掌握了這些庫,你将獲得多重優勢:

  1. 與其他資料科學家相比,你将有更多的機會獲得工作,因為你在機器學習的各個方面都獲得了多項技能。
  2. 你将能夠從事全棧項目,因為你不僅可以開發模型,還可以使用FastAPI後端部署它,并讓使用者通過Streamlit前端與之互動。
  3. 你不會迷失在“Jupyter筆記本地獄”中,因為全部機器學習實驗都将通過MLFlow變得可追溯和可複制,并且所有模型都将被正确版本化。
  4. 對于你來說,表格資料不是問題,因為你知道如何使用XGBoost訓練可擴充、快速和準确的模型。
  5. 大多數模型對你來說不再是“黑箱”,因為你可以通過ELI5更深入地了解它們,調試它們的思維過程并解釋它們的預測。

所有這些庫都将使你的生活更輕松,為你的彈藥庫添加許多有用且重要的技能。愉快編碼!

繼續閱讀