Python簡化代碼機器學習庫PyCaret 2.0發布

2020-12-25 雷鋒網

字幕組雙語原文:Python簡化代碼機器學習庫PyCaret 2.0發布

英語原文:Announcing PyCaret 2.0

翻譯:雷鋒字幕組(Shangru


我們激動的宣布,PyCaret第二版今天發布!

PyCaret是一個開源的,低代碼的Python機器學習庫,旨在自動化機器學習工作流。它是端到端的機器學習和模型管理工具。它可以加速機器學習的實驗周期,提高你的效率。

和其他開源機器學習庫相比,PyCaret是低代碼的。它可以用幾個單詞取代上百行代碼。這大大提高了實驗的速度和效率。在版本說明 release notes  中查看PyCaret 2.0的更多細節。

為什麼要用PyCaret

數據準備 模型訓練 超參數調優(從左到右)

分析和截圖 模型選擇 實驗日誌記錄(從左到右)

PyCaret 2.0 功能

安裝PyCaret 2.0

安裝PyCaret非常簡單,只需要幾分鐘時間。我們強烈建議使用虛擬環境,以避免和其他庫的潛在衝突。以下示例代碼創建了一個conda環境,並在該conda環境下安裝pycaret

# 創建一個 conda 環境

conda create --name yourenvname python=3.6  

# 激活環境 

conda activate yourenvname  

# 安裝 pycaret 

pip install pycaret==2.0  # create notebook kernel linked with the conda environment python -m ipykernel install --user --name yourenvname --display-name "display-name"

如果你使用Azure notebook或者Google Colab,運行下列代碼安裝PyCaret

!pip install pycaret==2.0

所有的依賴項會在使用pip安裝PyCaret時自動安裝。點擊Click here這裡查看完整的依賴列表。 

開始PyCaret 2.0

在PyCaret中,任何機器學習實驗的第一步是配置環境。這需要導入相關模型並通過傳遞數據框(dataframe)和目標變量的名字來初始化配置函數。示例代碼如下:

# 導入模塊

from pycaret.classification import *

# 初始化配置 (在Notebook環境內)

clf1 = setup(data, target = 'target-variable')

# 初始化配置 (在 Notebook 環境外)

clf1 = setup(data, target = 'target-variable', html = False)

# 初始化配置 (在 Kaggle / GitHub actions / CI-CD 管道等遠程執行)

clf1 = setup(data, target = 'target-variable', html = False, silent = True)

輸出示例:

輸出片段

所有的預處理變換在配置函數中被調用。PyCaret提供了超過20種不同的,可在配置函數內調用的預處理變換。點擊這裡 Click here 了解PyCaret更多的預處理能力。

樣本和劃分:訓練/測試劃分;採樣

數據準備:缺失數據補全;獨熱編碼;內在順序編碼;Cardinal編碼;不平衡修正

縮放和轉換:歸一化;轉換

特徵工程:特徵交互;多項式特徵;組特徵;二元數值特徵

特徵選擇:特徵重要性;共線性移除;PCA;忽略低方差

無監督:創建聚類;異常移除

https://www.pycaret.org/preprocessing

模型比較

這是所有監督學習模型任務中,我們推薦的第一步。該函數會使用模型的默認超參數來訓練所有模型,並通過交叉檢驗來評估性能。它返回一個已訓練的模型的對象類。可使用的評估測度包括:

  • 分類:準確度,AUC,召回率,精確率,F1,Kappa,MCC

  • 回歸: MAE, MSE, RMSE, R2, RMSLE, MAPE

這裡有幾種使用 compare_models 函數的方法:

# 導入 classification 模塊

from pycaret.classification import *

# 初始化配置

clf1 = setup(data, target = 'name-of-target')

# 返回最優模型

best = compare_models()

# 返回基於召回率的最有模型

best = compare_models(sort = 'Recall') #默認為準確率 'Accuracy'

# 比較特定模型

best_specific = compare_models(whitelist = ['dt','rf','xgboost'])

# 排除特定模型

best_specific = compare_models(blacklist = ['catboost','svm'])

# 返回3個基於準確率的最有模型

top3 = compare_models(n_select = 3)

輸出示例:

 模型創建

模型創建函數使用默認超參數訓練模型並使用交叉驗證評估模型性能。該函數是幾乎所有其他PyCaret函數的底。它返回訓練模型對象類。以下是幾種模型使用方法:

# 導入 classification 模塊

from pycaret.classification import *

# 初始化配置

clf1 = setup(data, target = 'name-of-target')

# 訓練 logistic 回歸模型

lr = create_model('lr') #lr is the id of the model

# 通過模型庫來查看所有模型

models()

# 使用5折交叉驗證訓練隨機森林模型

rf = create_model('rf', fold = 5)

# 不適用交叉驗證訓練SVM模型

svm = create_model('svm', cross_validation = False)

# 訓練xgboost模型,其中 max_depth = 10

xgboost = create_model('xgboost', max_depth = 10)

# 在gpu上訓練xgboost模型

xgboost_gpu = create_model('xgboost', tree_method = 'gpu_hist', gpu_id = 0) #0 is gpu-id

# 在多個learning_rate下 訓練多個lightgbm 模型

lgbms = [create_model('lightgbm', learning_rate = i) for i in np.arange(0.1,1,0.1)]

# 訓練自定義模型

from gplearn.genetic import SymbolicClassifier

symclf = SymbolicClassifier(generation = 50)

sc = create_model(symclf)

輸出示例:

create_model函數的輸出示例

要了解更多關於模型創建函數,點擊這裡 click here.

模型調優

模型調優函數以估計器的形式調優模型超參數。它在預設定的調優網格( 可完全定製化 )上進行隨機網格搜索。以下是幾種函數使用方法:

# 導入classification 模塊

from pycaret.classification import *

# 初始化配置

clf1 = setup(data, target = 'name-of-target')

# 訓練一個決策樹模型

dt = create_model('dt')

# 調優決策樹的一個超參數

tuned_dt = tune_model(dt)

# 增加n_iter來調參

tuned_dt = tune_model(dt, n_iter = 50)

# 基於最優化AUC調參

tuned_dt = tune_model(dt, optimize = 'AUC') #default is 'Accuracy'

# 在 custom_grid 上調參

params = {"max_depth": np.random.randint(1, (len(data.columns)*.85),20),

          "max_features": np.random.randint(1, len(data.columns),20),

          "min_samples_leaf": [2,3,4,5,6],

          "criterion": ["gini", "entropy"]

          }

tuned_dt_custom = tune_model(dt, custom_grid = params)

# 動態調優多個模型

top3 = compare_models(n_select = 3)

tuned_top3 = [tune_model(i) for i in top3]

要了解更多模型調優函數,點擊這裡 click here.

模型集成

有幾種函數可用於集成底學習器。 ensemble_model, blend_models 和stack_models是其中三種。 以下是幾種函數使用方法:

# 導入classification 模型

from pycaret.classification import *

# 初始化配置

clf1 = setup(data, target = 'name-of-target')

# 訓練一個決策樹模型

dt = create_model('dt')

# 基於dt訓練一個 bagging 分類器

bagged_dt = ensemble_model(dt, method = 'Bagging')

# 基於dt訓練一個帶有100個估計器的adaboost 分類器

boosted_dt = ensemble_model(dt, method = 'Boosting', n_estimators = 100)

# 訓練一個包括庫中所有模型的投票分類器

blender = blend_models()

# 訓練一個基於特定模型的投票分類器

dt = create_model('dt')

rf = create_model('rf')

adaboost = create_model('ada')

blender_specific = blend_models(estimator_list = [dt,rf,adaboost], method = 'soft')

# 動態訓練一個投票分類器

blender_top5 = blend_models(compare_models(n_select = 5))

# 訓練一個堆疊分類器

stacker = stack_models(estimator_list = [dt,rf], meta_model = adaboost)

# 動態堆疊多個模型

top7 = compare_models(n_select = 7)

stacker = stack_models(estimator_list = top7[1:], meta_model = top7[0])

要了解更多模型集成函數,點擊這裡 click here.

模型預測

和名字一樣,該函數用於推理/預測。以下是使用方法:

# 訓練一個 catboost 模型

catboost = create_model('catboost')

# 基於留一(holdout)集預測 (當數據以及傳入)

pred_holdout = predict_model(catboost)

# 在新數據集上預測

new_data = pd.read_csv('new-data.csv')

pred_new = predict_model(catboost, data = new_data

模型作圖

模型作圖函數可用於評估訓練已完成的機器學習模型的性能評估。示例如下:

# 導入classification 模塊

from pycaret.classification import *

# 初始化配置

clf1 = setup(data, target = 'name-of-target')

# 訓練一個adaboost 模型

adaboost = create_model('ada')

# AUC 作圖

plot_model(adaboost, plot = 'auc')

# 決策邊界

plot_model(adaboost, plot = 'boundary')

# PR曲線

plot_model(adaboost, plot = 'pr')

# 驗證曲線

plot_model(adaboost, plot = 'vc')

plot_model函數的輸出示例

Click here 點擊這裡了解PyCaret中不同的可視化方法

另外,你可以在notebook的用戶交互界面中使用 evaluate_model 函數來查看圖

PyCaret中的 evaluate_model函數

Util函數

PyCaret 2.0包括了幾種新的util函數。當你在PyCaret中管理機器學習實驗時可以方便的使用。其中一些如下所示:

# 在當前運行中選擇並完成最優模型

best_model = automl() #返回基於交叉驗證分數的最優模型

# 選擇並完成基於hold_out集上的 'F1' 分數的最優模型

best_model_holdout = automl(optimize = 'F1', use_holdout = True)

# 保存模型

save_model(model, 'c:/path-to-directory/model-name')

# 加載模型

model = load_model('c:/path-to-directory/model-name')

# 以pandas df格式返回分數

dt = create_model('dt')

dt_results = pull() #這會以pandas df格式保存 dt 分數網格

# 讀取全局變量

X_train = get_config('X_train') #返回預處理後的 X_train 數據集

seed = get_config('seed') # 從全局變量中返回 seed 

# 設置全局變量

set_seed(seed, 999) #在當前運行中將全局變量seed 設為 999 

# 以csv文件形式得到實驗日誌

logs = get_logs() # 默認為當前運行

# 得到模型日誌

system_logs = get_system_logs() #從當前文件夾讀取logs.log 文件

在發布說明  release notes. 中查看PyCaret 2.0中所有的新函數,

Experiment日誌

PyCaret 2.0以後端API的形式嵌入了機器學習工作流的追蹤組件,並提供UI在你運行機器學習代碼時記錄參數,代碼版本,度量以及輸出文件,以供之後的結果可視化。你可以如下記錄你PyCaret中的實驗:

# 導入classification 模塊

from pycaret.classification import *

# 初始化配置

clf1 = setup(data, target = 'name-of-target', log_experiment = True, experiment_name = 'exp-name-here')

# 比較模型

best = compare_models()

# 在localhost:5000運行mlflow 伺服器(使用notebook時)

!mlflow ui

輸出(在 localhost:5000 )


整合——創建你自己的AutoML軟體

通過使用這些函數,讓我們創建一個簡單的命令行軟體來使用默認參數來訓練多個模型,對最好的幾個候選模型進行超參數調優,嘗試不同的集成技術並返回/保存最優模型。以下是命令行腳本:

# 導入庫

import pandas as pd

import sys

# 定義命令行參數

data = sys.argv[1]

target = sys.argv[2]

# 加載數據 (在使用自己的腳本時替換掉這部分)

from pycaret.datasets import get_data

input_data = get_data(data)

# 初始化配置

from pycaret.classification import *

clf1 = setup(data = input_data, target = target, log_experiment = True)

# 比較基準模型並選取前5個

top5 = compare_models(n_select = 5)

# 對前5個模型參數調優

tuned_top5 = [tune_model(i) for i in top5]

# 集成前5個調優後的模型

bagged_tuned_top5 = [ensemble_model(i, method = 'Bagging') for i in tuned_top5]

# 混合前5個模型

blender = blend_models(estimator_list = top5)

# 堆疊前5個模型

stacker = stack_models(estimator_list = top5[1:], meta_model = top5[0])

# 基於召回率選擇最優模型

best_model = automl(optimize = 'Recall')

# 保存模型

save_model(best_model, 'c:/path-to-directory/final-model')

該腳本動態選擇並保存最佳模型。只需要短短幾行代碼,你就開發好了自己的AutoML軟體,還帶有完整的日誌系統和漂亮榜單的UI界面。

通過這個輕量級工作流自動化Python庫,你可以完成無限可能。


雷鋒字幕組是一個由 AI 愛好者組成的翻譯團隊,匯聚五百多位志願者的力量,分享最新的海外AI資訊,交流關於人工智慧技術領域的行業變革與技術創新的見解。

團隊成員有大數據專家、算法工程師、圖像處理工程師、產品經理、產品運營、IT諮詢人、在校師生;志願者們來自IBM、AVL、Adobe、阿里、百度等知名企業,北大、清華、港大、中科院、南卡羅萊納大學、早稻田大學等海內外高校研究所。

如果,你也是位熱愛分享的AI愛好者。歡迎與雷鋒字幕組一起,學習新知,分享成長。

雷鋒網雷鋒網(公眾號:雷鋒網)

雷鋒網版權文章,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • 幾行代碼搞定ML模型,低代碼機器學習Python庫正式開源
    機器之心機器之心報導機器之心編輯部PyCaret 庫支持在「低代碼」環境中訓練和部署有監督以及無監督的機器學習模型,提升機器學習實驗的效率。想提高機器學習實驗的效率,把更多精力放在解決業務問題而不是寫代碼上?低代碼平臺或許是個不錯的選擇。最近,機器之心發現了一個開源低代碼機器學習 Python 庫 PyCaret,它支持在「低代碼」環境中訓練和部署有監督以及無監督的機器學習模型。
  • 機器學習建模神器 PyCaret 已開源!提升效率,幾行代碼輕鬆搞定模型
    (low-code)機器學習庫,支持在「低代碼」環境中訓練和部署有監督以及無監督的機器學習模型,提升機器學習實驗的效率。現在,讓我們一起來領略下:如何用僅僅幾行代碼搞定一個機器學習模型吧。首發 PyCaret 1.0.0我們很高興能宣布PyCaret,這是一個使用Python的開源機器學習庫,用於在Windows上訓練和部署有監督和無監督的機器學習模型低碼環境。通過PyCaret,您可以在選擇筆記本電腦環境後的幾秒鐘內,從準備數據到部署模型。
  • Pycaret -- 理想的AUTO ML 平臺
    今天我們推薦的pycaret 便是致力於自動化機器學習的python 庫,它還無法面向最終用戶,因為它沒有GUI。但是低代碼的優勢,讓它離這個目標很近,相信很多網頁開發者可以很輕易地以pycaret為核心,開發出面向最終用戶的機器學習平臺。
  • python機器學習:常用庫的介紹及安裝
    2、如果安裝了Anaconda後發現還有一些需要安裝的庫怎麼辦?這個時候可以通過Anaconda的DOS界面來安裝(可以通過「開始->所有程序->Anaconda下面找到Anaconda Prompt後單機打開即可),具體安裝命令是pip install + 你要安裝的庫名稱。
  • 2020年10個不錯的Python庫
    這是第六屆年度 Python 庫排行榜。這個排行榜的依據是什麼?規則很簡單。我們尋找的庫需要滿足下列條件:它們是在 2020 年推出或普及的。它們從發布後就一直有良好的維護。它們非常炫酷,很值得一看。免責聲明:今年,我們的選擇受到機器學習 / 數據科學庫的極大影響,雖然有些庫對非數據科學家來說確實很有用。
  • 2020 年最佳流行 Python 庫 Top 10
    我們正在尋找的庫滿足以下條件:免責聲明:我們的選擇在很大程度上受機器學習/數據科學庫的影響,儘管其中某些庫確實對非數據科學人士也同樣受用。此外,儘管我們有10個主要選擇,但我們還是決定增加一個新的「榮譽提名」部分,以便對我們發現但不能遺漏的其他第三方庫一個公道。這篇文章的精神是使這些庫更為大眾所知,並圍繞我們可能已經錯過的其他一些絕佳選擇引發討論(在評論中或其他地方)。
  • Python機器學習系列3:一個通用、強大的Python機器學習函數庫
    如果你對Python機器學習感興趣,正在尋找一個強大的Python機器學習庫,那麼本文將強烈推薦scikit-learn,它可以幫助你把機器學習輕鬆應用到生產環境中。本文將會介紹對scikit-learn庫進行基本介紹,並擴展介紹相關常用機器學習資源。
  • 機器學習 | 四大常用機器學習Python庫介紹
    點擊下方公眾號,回復資料,收穫驚喜今天這篇我們介紹下Python中常用的機器學習庫(機器(機器學習、深度學習啥的,小編還是建議使用Python進行建模編寫哈),也算是本公號機器學習的第一篇推文,主要內容如下:深度學習常用四大Python庫這一部分我們簡單介紹下Python中的常用的機器學習庫,算是比較入門的介紹哈,具體包括Scikit-learn、Keras、TensorFlow和PyTorch,下面我們就一一簡單介紹:
  • 2020年六大機器學習Python庫!
    外頭有許多類型的python庫可用,本文介紹了一些流行的機器學習庫。1. NumPy:NumPy是一種通用的數組處理軟體包。它提供高性能的多維數組對象和用於處理這些數組的工具。它是用於科學計算的基本Python軟體包。
  • Python 機器學習庫 Top 10,你值得擁有!
    易於上手,可以說是編程小白的福音; 相比起 C、Java、C++ 來講,Python 的語法更簡單,更高級,只需要更少行數的代碼便能實現其他程式語言同樣的功能; Python 的跨平臺能力; 正是由於 Python 簡單易用以及高開發效率,吸引了大量的開發者為其創建更多新的機器學習工具庫
  • 常用python機器學習庫總結
    眾所周知現在人工智慧非常的火熱,機器學習也算是人工智慧中的一個領域,在其中有一塊是對文本進行分析,對數據進行深入的挖掘提取一些特徵值,然後用一些算法去學習,訓練,分析,甚至還能預測,我們就來看看python有哪些機器學習庫吧!1.
  • python發布代碼教程
    (一)發布代碼首先做好發布前的準備工作。在D:\創建一個文件夾mymodule,其中包含mymodule.py和setup.py(包含發布的元數據)兩個文件。文件內容如下:mymodule.py是一個模塊文件,其內容就是tria函數。
  • 【下載】Scikit-learn作者新書《Python機器學習導論》, 教程+代碼手把手帶你實踐機器學習算法
    有了這本書,你會學到:▌圖書配套Github代碼該代碼庫包含Andreas Mueller和Sarah Guido即將出版的書「Python機器學習導論」的代碼。本書主要使用scikit-learn的開發版本,即0.18-dev。
  • 最好的Python機器學習庫
    驅動機器學習的算法相當複雜,包括了很多的數學知識,所以自己動手去實現它們(並保證其正常運行)將會是一件很困難的任務。幸運地是,有很多聰明的、有奉獻精神的人為我們做了這個困難的工作,因此我們只需要專注於手邊的應用程式即可。這並不是一個詳盡無遺的清單。有很多代碼並未在此列出,在這裡我只會發布一些非常相關或知名的庫。下面,來看看這份清單吧。
  • Python常用庫大全
    django-oauth-toolkit – 為 Django 用戶準備的 OAuth2。 django-oauth2-provider – 為 Django 應用提供 OAuth2 接入。 Flask-OAuthlib – OAuth 1.0/a, 2.0 客戶端實現,供 Flask 使用。
  • 38個常用Python庫:數值計算、可視化、機器學習等8大領域都有了
    通常與SciPy和Matplotlib一起使用,支持比Python更多種類的數值類型,其中定義的最重要的對象是稱為ndarray的n維數組類型,用於描述相同類型的元素集合,可以使用基於0的索引訪問集合中元素。2.
  • Python語言下的機器學習庫
    我們的目的不是列出Python中所有機器學習庫(搜索「機器學習」時Python包索引(PyPI)返回了139個結果),而是列出我們所知的有用並且維護良好的那些。另外,儘管有些模塊可以用於多種機器學習任務,我們只列出主要焦點在機器學習的庫。比如,雖然Scipy包含一些聚類算法,但是它的主焦點不是機器學習而是全面的科學計算工具集。因此我們排除了Scipy(儘管我們也使用它!)。
  • 機器學習如何從Python 2遷移到Python 3
    下面來看個例子:import json x = {str(i):i for i in range(5)} json.loads(json.dumps(x))# Python 2{u'1': 1, u'0': 0, u'3': 3, u'2': 2, u'4': 4}# Python 3{'0': 0, '1': 1, '2': 2, '3': 3, '4': 4}
  • 用Python 做機器學習不得不收藏的重要庫
    數據科學家也會用python作為連接自身工作與WEB 應用程式/生產環境集成中。 Python在機器學習領域非常出色。它具有一致的語法、更短的開發時間和靈活性,非常適合開發能夠直接插入生產系統的複雜模型和預測引擎。 Python的一個最大的資產是其廣泛的庫。 庫是一組用給定語言編寫的程序和功能的集合。
  • C++機器學習庫介紹
    在本文中,我將重點介紹兩個這樣的C++庫,我們也將看到它們都可以運行。目錄為什麼我們要使用機器學習庫?C++中的機器學習庫SHARK 圖書館MLPACK庫為什麼我們要使用機器學習庫?這是很多新來者都會遇到的問題。庫在機器學習中的重要性是什麼?