使用PyCaret構建機器學習模型

做者|LAKSHAY ARORA
編譯|VK
來源|Analytics Vidhyapython

概述

  • PyCaret是一個超級有用的Python庫,用於在短期內執行多個機器學習任務git

  • 學習如何依賴PyCaret在幾行代碼中構建複雜的機器學習模型github

介紹

我創建的第一個機器學習模型是一個至關麻煩的代碼塊。我仍然記得構建一個集成模型,它須要許多行代碼,它十分須要一個嚮導來解開這些混亂的代碼!app

當涉及到構建可解釋的機器學習模型時,尤爲是在行業中,編寫高效的代碼是成功的關鍵。因此我強烈建議使用PyCaret庫。機器學習

我但願PyCaret在個人剛學習機器學習的日子裏出現!這是一個很是靈活和有用的庫,我在最近幾個月已經至關依賴。我堅信任何有志成爲數據科學或分析專業人士的人都會從使用PyCaret中受益不淺。函數

咱們將看到PyCaret究竟是什麼,包括如何在你的機器上安裝它,而後咱們將深刻研究如何使用PyCaret來構建可解釋的機器學習模型,包括集成模型。性能

目錄

  1. 什麼是PyCaret?爲何要使用它?學習

  2. 安裝PyCaret測試

  3. 熟悉PyCaret編碼

  4. 使用PyCaret訓練咱們的機器學習模型

  5. 使用PyCaret構建集成模型

  6. 分析模型

  7. 作出預測

  8. 保存並加載模型

什麼是PyCaret?爲何要使用它?

PyCaret是Python中一個開源的機器學習庫,它能夠幫助你從數據準備到模型部署。它很容易使用,你能夠用一行代碼完成幾乎全部的數據科學項目任務。

我發現PyCaret很是方便。如下是兩個主要緣由:

  • PyCaret是一個代碼庫,它使你的工做效率更高。你能夠在代碼上花更少的時間,作更多的實驗

  • 它是一個易於使用的機器學習庫,將幫助你執行端到端的機器學習實驗,不管是輸入缺失值、編碼分類數據、特徵工程、超參數調整,仍是構建集成模型

安裝PyCaret

這是最直接的。能夠直接使用pip安裝PyCaret的第一個穩定版本v1.0.0。只需在Jupyter Notebook中運行如下命令便可開始:

!pip3 install pycaret

熟悉PyCaret

問題陳述和數據集

在本文中,咱們將解決一個分類問題。咱們有一個銀行數據集,包括客戶年齡、經驗、收入、教育程度,以及他/她是否有信用卡。該行但願創建一個機器學習模型,幫助他們識別購買我的貸款可能性更高的潛在客戶。

數據集有5000行,咱們保留了4000行用於訓練模型,剩下的1000行用於測試模型。你能夠在這裏找到本文中使用的完整代碼和數據集。

https://github.com/lakshay-arora/PyCaret-Example

讓咱們從使用Pandas庫讀取數據集開始:

# 導入panda以讀取CSV文件
import pandas as pd
# 讀取數據
data_classification = pd.read_csv('datasets/loan_train_data.csv')
# 查看數據的頂行
data_classification.head()

在PyCaret中啓動機器學習項目以前的第一步是設置環境。這只是一個兩步的過程:

  1. 導入模塊:根據要解決的問題類型,首先須要導入模塊。在PyCaret的第一個版本中,有6個不一樣的模塊可用:迴歸、分類、聚類、天然語言處理(NLP)、異常檢測和關聯挖掘規則。在本文中,咱們將解決一個分類問題,所以咱們將導入分類模塊
  2. 初始化設置:在這個步驟中,PyCaret執行一些基本的預處理任務,好比忽略id和Date列、填充丟失的值、對分類變量進行編碼,以及在其他建模步驟中將數據集拆分爲train test。當你運行setup函數時,它將首先確認數據類型,而後若是你按enter,它將建立環境。
# 導入分類模塊
from pycaret import classification
# 設置環境
classification_setup = classification.setup(data= data_classification, target='Personal Loan')

咱們都準備好探索PyCaret了!

使用PyCaret訓練咱們的機器學習模型

訓練模型

用PyCaret訓練一個模型很是簡單。你只須要使用create_model函數,該函數只接受一個參數(模型縮寫爲字符串)。

在這裏,咱們將首先訓練一個決策樹模型,咱們必須經過「dt」,它將返回一個表,其中包含用於分類模型的經常使用評估指標的k倍交叉驗證分數。

如下是用於監督學習的評估指標:

  • 分類:Accuracy, AUC, Recall, Precision, F1, Kappa
  • 迴歸:MAE、MSE、RMSE、R二、RMSLE、MAPE

你能夠查看PyCaret的文檔頁以瞭解更多縮寫。

https://pycaret.org/create-model/

# 創建決策樹模型
classification_dt = classification.create_model('dt')

一樣,爲了訓練XGBoost模型,只須要傳遞字符串「XGBoost」:

# 構建xgboost模型
classification_xgb = classification.create_model('xgboost')

超參數調整

咱們能夠經過使用tune_model函數來調整機器學習模型的超參數,該函數接受一個參數,模型縮寫字符串(與咱們在create_model函數中使用的相同)。

PyCaret爲咱們提供了不少靈活性。例如,咱們可使用tune_model函數中的fold參數定義摺疊次數。或者咱們可使用n_iter參數更改迭代次數。增長nòiter參數將明顯增長訓練時間,提供更好的性能。

讓咱們訓練一個CatBoost模型:

# 構建和調優catboost模型
tune_catboost = classification.tune_model('catboost')

使用PyCaret構建集成模型

機器學習中的集成模型未來自多個模型的決策結合起來,以提升總體性能。

在PyCaret中,咱們能夠用一行代碼建立bagging、boosting、blending和stacking集成模型。

讓咱們在這裏訓練一個集成模型。它還將返回一個表,其中包含經常使用評估指標的k折交叉驗證分數:

# boosting
boosting = classification.ensemble_model(classification_dt, method= 'Boosting')

另外一個很是著名的合成技術是blending。你只須要傳遞在blend_models函數列表中建立的模型。

# blending
blender = classification.blend_models(estimator_list=[classification_dt, classification_xgb])

就這樣!你只須要用PyCaret編寫一行代碼就能夠完成大部分工做。

比較模型

這是PyCaret庫的另外一個有用功能。若是不想逐個嘗試不一樣的模型,可使用compare models函數,它將爲全部可用模型訓練和比較通用的評估度量。

此函數僅在pycaret.classification以及 pycaret.regression模塊中。

# 比較不一樣分類模型的性能
classification.compare_models()

分析模型

如今,在訓練模型以後,下一步是分析結果。從商業角度來看,這特別有用,對吧?分析PyCaret中的模型也很簡單。只需一行代碼,你就能夠執行如下操做:

  1. 對模型結果繪圖:分析PyCaret中的模型性能與編寫plot_model同樣簡單。能夠繪製決策邊界、精確召回曲線、驗證曲線、殘差圖等。此外,對於羣集模型,能夠繪製肘部圖和輪廓圖。對於文本數據,能夠繪製字雲圖、bigram圖和trigram頻率圖等。
  2. 解釋結果:經過分析重要特性,解釋模型結果有助於調試模型。這是工業級機器學習項目中相當重要的一步。在PyCaret中,咱們能夠用一行代碼經過SHAP值和相關圖來解釋模型

對模型結果繪圖

能夠經過提供模型對象做爲參數和所需的打印類型來打印模型結果。繪製AUC-ROC曲線和決策邊界:

# AUC-ROC 圖
classification.plot_model(classification_dt, plot = 'auc')

# 決策邊界
classification.plot_model(classification_dt, plot = 'boundary')

繪製訓練模型的精確召回曲線和驗證曲線:

# Precision Recall 曲線
classification.plot_model(classification_dt, plot = 'pr')

# 驗證曲線
classification.plot_model(classification_dt, plot = 'vc')

評估咱們的模型

若是你不想單獨繪製全部這些可視化效果,那麼PyCaret庫還有另外一個驚人的功能——evaluate_model。在這個函數中,你只須要傳遞model對象,PyCaret將建立一個交互式窗口,供你以全部可能的方式查看和分析模型:

# 評估模型
classification.evaluate_model(classification_dt)

解釋咱們的模型

在大多數機器學習項目中,解釋複雜模型是很是重要的。它經過分析模型認爲何是重要的來幫助調試模型。在PyCaret中,這一步與編寫解釋模型以獲取Shapley值同樣簡單。

# 解釋模型:SHAP
classification.interpret_model(classification_xgb)

讓咱們嘗試繪製相關圖:

# 解釋模型:相關性
classification.interpret_model(classification_xgb,plot='correlation')

作出預測

最後,咱們將對看不見的數據進行預測。爲此,咱們只須要傳遞咱們將用於預測和數據集的模型。確保它的格式與咱們以前設置環境時提供的格式相同。

PyCaret構建一個包含全部步驟的管道,並將未看到的數據傳遞到管道中,並給出結果。

讓咱們看看如何預測數據的標籤:

# 讀取測試數據
test_data_classification = pd.read_csv('datasets/loan_test_data.csv')
# 作出預測
predictions = classification.predict_model(classification_dt, data=test_data_classification)
# 查看預測
predictions

保存並加載模型

如今,一旦構建並測試了模型,咱們就可使用save_model函數將其保存在pickle文件中。傳遞要保存的模型和文件名,即:

# 保存模型
classification.save_model(classification_dt, 'decision_tree_1')

咱們能夠稍後加載此模型並預測數據上的標籤:

# 加載模型
dt_model = classification.load_model(model_name='decision_tree_1')

結尾

它真的很容易使用。我我的發現PyCaret對於在時間緊迫的狀況下快速生成結果很是有用。

在不一樣類型的數據集上練習使用它——你會越充分利用它,就越能真正掌握它的實用性!它甚至只須要一行代碼就能夠在AWS等雲服務上支持模型部署。

原文連接:https://www.analyticsvidhya.com/blog/2020/05/pycaret-machine-learning-model-seconds/

歡迎關注磐創AI博客站:
http://panchuang.net/

sklearn機器學習中文官方文檔:
http://sklearn123.com/

歡迎關注磐創博客資源彙總站:
http://docs.panchuang.net/

相關文章
相關標籤/搜索