做者|Moez Ali
編譯|VK
來源|Towards Data Sciencehtml
你可能會想知道,GitHub是從何時開始涉足自動機器學習業務的。好吧,它其實沒有,但你能夠像有同樣的使用它。在本教程中,咱們將向你展現如何構建個性化的AutoML軟件,並將其託管在GitHub上,以便其餘人能夠無償使用或付費訂閱。python
咱們將使用pycaret2.0,一個開源的、少代碼行數的Python機器學習庫來開發一個簡單的AutoML解決方案,並使用GitHub Action將其部署爲Docker容器。git
若是你之前沒有據說過PyCaret,能夠在這裏閱讀pycaret2.0的官方聲明:https://towardsdatascience.com/announcing-pycaret-2-0-39c11014540e,或者查看這裏的詳細發行說明:https://github.com/pycaret/pycaret/releases/tag/2.0。github
瞭解什麼是AutoML,以及如何使用pycaret2.0構建一個簡單的AutoML軟件。算法
瞭解什麼是容器以及如何將AutoML解決方案部署爲Docker容器。docker
什麼是GitHub Action以及如何使用它們來託管AutoML軟件。session
AutoML是一個將耗時、迭代的機器學習任務自動化的過程。它容許數據科學家和分析員在保持模型質量的同時高效地構建機器學習模型。任何AutoML軟件的最終目標都是根據某些性能標準最終肯定最佳模型。app
傳統的機器學習模型開發過程是資源密集型的,須要大量的領域知識和時間來生成和比較幾十個模型。經過自動化機器學習,你將加快開發生產ML模型所需的時間,而且實現很是容易和高效。機器學習
有不少AutoML軟件,付費的和開源的。幾乎全部的算法都使用相同的變換和基算法集合。所以,在軟件下訓練的模型的質量和性能基本相同。編輯器
付費的AutoML軟件做爲一種服務是很是昂貴的。若是你的口袋裏若是沒有不少錢,至少在財務上是不可行的。託管機器學習做爲一種服務平臺相對來講成本較低,但它們一般很難使用,而且須要特定平臺的知識。
在許多其餘開放源碼的AutoML庫中,PyCaret是一個相對較新的庫,而且具備獨特的機器學習方法接口。PyCaret的設計和功能簡單、人性化、直觀。在很短的時間內,PyCaret被全球超過10萬名數據科學家採用,咱們是一個不斷增加的開發者社區。
PyCaret是一個用於有監督和無監督機器學習的工做流自動化工具。它被組織成六個模塊,每一個模塊都有一組可用於執行某些特定操做的函數。每一個函數接受一個輸入並返回一個輸出。從第二個版本開始提供的模塊包括:
PyCaret中的全部模塊都支持數據預處理(超過25種以上的基本預處理技術,提供大量未經訓練的模型和支持自定義模型、自動超參數調優、模型分析和可解釋性、自動模型選擇、實驗日誌記錄和簡單的雲部署選項)。
要了解更多關於PyCaret的信息,請單擊此處閱讀咱們的官方發佈公告:https://towardsdatascience.com/announcing-pycaret-2-0-39c11014540e
若是你想開始使用Python,請單擊此處查看要入門的示例Notebook的庫:https://github.com/pycaret/pycaret/tree/master/examples
在開始構建AutoML軟件以前,讓咱們先了解如下術語。在這一點上,你所須要的是一些咱們在本教程中使用的工具/術語的基本理論知識。若是你想了解更多詳細信息,本教程末尾有一些連接供你稍後探索。
容器(Containers)提供了一個可移植和一致的環境,能夠在不一樣的環境中快速部署,以最大限度地提升機器學習應用程序的準確性、性能和效率。環境包含運行時語言(例如Python)、全部庫和應用程序的依賴項。
Docker是一家提供軟件(也稱爲Docker)的公司,它容許用戶構建、運行和管理容器。雖然Docker的容器是最多見的,但也有其餘不太著名的替代品,如LXD和LXC,也提供了容器解決方案。
GitHub是一個基於雲的服務,用於託管、管理和控制代碼。假設你正在一個大型團隊中工做,其中多人(有時數百人)在同一個代碼庫上進行更改。PyCaret自己就是一個開源項目的例子,在這個項目中,數百名社區開發人員在不斷地爲源代碼作貢獻。若是你之前沒有使用過GitHub,你能夠註冊一個免費賬戶。
GitHub操做(Action)可幫助你在存儲代碼和協做處理。實現自動化軟件開發工做流。你能夠編寫單個任務,並將它們組合起來以建立自定義工做流。
工做流是自定義的自動化流程,你能夠在存儲庫中設置這些流程,以便在GitHub上構建、測試、打包、發佈或部署任何代碼項目。
訓練和選擇基於數據集中的其餘變量(即年齡、性別、bmi、兒童、吸菸者和地區)預測患者費用的最佳迴歸模型。
這是AutoML的主文件,也是Dockerfile的入口點(請參見下面的步驟2)。若是你之前使用過PyCaret,那麼這個代碼你能夠自行解釋。
import os, ast import pandas as pd dataset = os.environ["INPUT_DATASET"] target = os.environ["INPUT_TARGET"] usecase = os.environ["INPUT_USECASE"] dataset_path = "https://raw.githubusercontent.com/" + os.environ["GITHUB_REPOSITORY"] + "/master/" + os.environ["INPUT_DATASET"] + '.csv' data = pd.read_csv(dataset_path) data.head() if usecase == 'regression': from pycaret.regression import * elif usecase == 'classification': from pycaret.classification import * exp1 = setup(data, target = target, session_id=123, silent=True, html=False, log_experiment=True, experiment_name='exp_github') best = compare_models() best_model = finalize_model(best) save_model(best_model, 'model') logs_exp_github = get_logs(save=True)
https://github.com/pycaret/pycaret-git-actions/blob/master/app.py
前五行是關於從環境中導入庫和變量。接下來的三行用於將數據做爲pandas數據幀讀取。第12行到第15行是根據環境變量導入相關模塊,第17行以後是PyCaret初始化環境、比較基本模型和在設備上保存性能最好的模型的函數。最後一行將實驗日誌做爲csv文件下載。
Dockerfile只是一個包含幾行指令的文件,它們保存在項目的文件夾中,名爲「Dockerfile」(區分大小寫,沒有擴展名)。
另外一種思考Docker文件的方法是,它就像是你在本身的廚房裏發明的食譜。當你和其餘人分享這樣的菜譜時,若是他們按照食譜中徹底相同的說明來作,他們將可以以一樣的質量重現同一道菜。
相似地,你能夠與其餘人共享你的docker文件,而後其餘人能夠基於該docker文件建立鏡像並運行容器。
這個項目的Docker文件很簡單,只包含6行。見下文:
FROM python:3.7-slim WORKDIR /app ADD . /app RUN apt-get update && apt-get install -y libgomp1 RUN pip install --trusted-host pypi.python.org -r requirements.txt ENTRYPOINT ["python"] CMD ["/app/app.py"]
https://github.com/pycaret/pycaret-git-actions/blob/master/Dockerfile
Dockerfile中的第一行導入python:3.7-slim。接下來的四行代碼建立一個app文件夾,更新libgomp1庫,並從requirements.txt在本例中只須要pycaret的文件。最後,最後兩行定義應用程序的入口點;這意味着當容器啓動時,它將執行咱們前面在步驟1中看到的app.py文件。
Docker操做須要元數據文件。元數據文件名必須是action.yml或者action.yaml. 元數據文件中的數據定義操做的輸入、輸出和主入口點。操做文件使用YAML語法。
name: "PyCaret AutoML Git Action" description: "A simple example of AutoML created using PyCaret 2.0" author: "Moez Ali" inputs: DATASET: description: "Dataset for Training" required: true default: "juice" TARGET: description: "Name of Target variable" required: true default: "Purchase" USECASE: description: "Use-case Classification or Regression" required: true default: "classification" outputs: myOutput: description: "Output from the action" runs: using: "docker" image: "Dockerfile" branding: icon: 'box' color: 'blue'
https://github.com/pycaret/pycaret-git-actions/blob/master/action.yml
環境變量dataset、target和usecase分別在第六、9和14行聲明。參見第4-6行。
此時,項目文件夾應以下所示:
點擊「Releases」:
起草新版本:
填寫詳細信息(標籤、發佈標題和說明),而後單擊「Publish release」:
發佈後,單擊「release」,而後單擊「Marketplace」:
單擊「Use latest version」:
保存此信息,這是軟件的安裝詳細信息。在任何公共GitHub存儲庫上安裝此軟件時,你須要這樣作:
爲了安裝和測試咱們剛剛建立的軟件,咱們建立了一個新的存儲庫pycaret-automl-test:https://github.com/pycaret/pycaret-automl-test,並上傳了一些用於分類和迴歸的示例數據集。
要安裝咱們在上一步中發佈的軟件,請單擊「Actions」:
單擊「set up a workflow yourself」並將你的腳本複製到編輯器中,而後單擊「Start commit」。
開始提交後,單擊「actions」:
在這裏,你能夠在生成時監視生成的日誌,而且一旦工做流完成,你也能夠今後位置收集文件。
你能夠下載這些文件並將其解壓縮到你的設備上。
這是最終模型的.pkl文件以及整個轉換管道。你可使用此文件使用predict_model函數在新數據集上生成預測。要了解更多信息,請單擊此處:https://www.pycaret.org/predict-model
這是一個.csv文件,其中包含了模型所需的全部詳細信息。它包含了在app.py中全部接受過訓練的模型,它們的性能指標,超參數和其餘重要的元數據。
這是PyCaret生成的系統日誌文件。這可用於審覈流程。它包含重要的元數據信息,對於解決軟件中的錯誤很是有用。
https://github.com/pycaret/pycaret-git-actions
https://github.com/pycaret/pycaret-automl-test
在Python中使用這個輕量級的工做流自動化庫能夠實現的目標沒有限制。若是你以爲這個有用,請別忘了給咱們咱們的github項目star⭐️。
想了解更多關於PyCaret的信息,請訪問LinkedIn和Youtube。
LinkedIn:https://www.linkedin.com/company/pycaret/
Youtube:https://www.youtube.com/channel/UCxA1YTYJ9BEeo50lxyI_B3g
若是你想了解更多關於PyCaret 2.0的信息,請閱讀本公告。若是你之前使用過PyCaret,那麼你可能會對當前版本的發行說明感興趣。
單擊下面的連接查看文檔和工做示例。
原文連接:https://towardsdatascience.com/github-is-the-best-automl-you-will-ever-need-5331f671f105
歡迎關注磐創AI博客站:
http://panchuang.net/
sklearn機器學習中文官方文檔:
http://sklearn123.com/
歡迎關注磐創博客資源彙總站:
http://docs.panchuang.net/