太讚了!分享一個數據科學利器 PyCaret,幾行代碼搞定從數據處理到模型部署

做者:帥阿東,數據愛好者
Python數據科學出品

學習數據科學好久了,從數據探索、數據預處理、數據模型搭建和部署這些過程一直有些重複性的工做比較浪費時間,尤爲當你有個新的想法想要快速嘗試下效果的時候,效率很低。python

東哥最近發現一個開源的Python機器學習庫,名字叫PyCaret,這個輪子正好能夠爲了解決我剛纔所描述的困擾,它的特色是以low-code低代碼量來快速解決從數據預處理到模型部署的整個流程。
在這裏插入圖片描述
用了一下感受確實有點香,所以也和你們分享一下。算法

PyCaret是什麼?

PyCaret是一個將咱們經常使用到的機器學習庫進行封裝了的輪子。微信

經常使用的都有啥呢?app

好比pandas,numpy作數據處理的,matplotlib,seaborn數據可視化的,sklearn,xgboost,catboost,lightgbm等各類模型的,總共有30個。在安裝PyCaret的時候會附帶着一塊兒都安裝上。機器學習

封裝這麼多庫幹什麼用?ide

PyCaret依賴了這麼多的神庫確定是要搞事情啊。沒錯,機器學習中的一些操做步驟均可在PyCaret自動開發的pipeline中進行復現。在 Pycaret 中所執行的全部操做均按順序存儲在 Pipeline 中,該 Pipeline 針對模型部署進行了徹底配置。函數

PyCaret就像是把全部都安排好了同樣,咱們按照它定義的函數使用就能夠了。不論是填充缺失值、轉換類別數據、執行特徵工程設計,仍是調參,Pycaret 都可以自動執行。 因此才能夠實現用幾行代碼搞定從預處理到模型部署的整個流程。學習

並且pipeline能夠保存爲二進制文件格式,支持在不一樣環境中進行遷移。測試

PyCaret支持的模型算法

PyCaret支持6個模塊,有監督無監督模型的訓練和部署,分別有分類、迴歸、聚類、異常檢測、天然語言處理和關聯規則挖掘。
在這裏插入圖片描述ui

PyCaret安裝

pip install pycaret

老樣子,命令行pip install皆可安裝。

爲了防止安裝的這些依賴可能與以前你已安裝過的發生衝突,建議能夠建立個Python的虛擬環境安裝PyCaret以減小沒必要要的麻煩,好比用python3 virtualenv或者conda。就拿conda爲例吧。

#建立一個新的虛擬環境
conda create --name yourenvname python=3.7
#激活
conda activate yourenvname
#安裝
pip install pycaret

若是很差使也能夠嘗試從源安裝。

pip install C:/path_to_download/pycaret-version.tar.gz

PyCaret如何使用?

像這種數據建模類的工做會涉及不少交互式的操做,因此東哥首推在Jupyter notebook中運行代碼。

PyCaret庫的函數有五個大類,初始化、模型訓練、模型集成、模型分析與模型部署,基本上覆蓋了咱們正常建模的順序,只不過預處理都在初始化中完成了。具體使用方法見後面實例。

1、初始化

PyCaret初始化包括了兩部份內容,1、獲取數據;2、創建環境。

1. 獲取數據

PyCaret自帶了不少數據集,樣本幾萬條的,特徵幾百個的,對於咱們練習絕對是夠用了。好比這樣:

from pycaret.datasets import get_data
data = get_data('juice')

2. 創建環境

這一步是必須的。首先,咱們要選擇使用哪一個模塊,分類、迴歸、聚類
仍是其餘的。好比咱們要用classification分類模型。

from pycaret.datasets import get_data
diabetes = get_data('diabetes')
# 初始化
from pycaret.classification import *
clf1 = setup(data = diabetes, target = 'Class variable')

上面setup函數就創建了基礎環境,其中參數約束了數據集和目標變量。
在這裏插入圖片描述

setup參數除了上面這兩個之外,還有N多個參數能夠控制。全部預處理的步驟都會應用至 setup() 中,PyCaret 擁有 20 餘項功能可運用於 ML 相關的數據準備,好比樣本的劃分數據預處理缺失值處理獨熱編碼歸一化特徵工程特徵選擇等等。
在這裏插入圖片描述
好比要用歸一化,那麼令normalizeTure就行了,其它的同理。

clf1 = setup(data = pokemon, target = 'Legendary', normalize = True)

若是還要用其餘的,在setup裏面加就行了,至於處理的順序不用咱們管,pipeline已經自動搞定了。

另外,PyCaret 的一大優勢是: Pipeline 可保存成二進制,輕鬆地在各環境之間相互遷移,好比大規模運行或是輕鬆部署到生產環境中。

2、模型訓練

模型訓練包括三個部分,模型比較,模型建立,模型調優

1. 模型比較

這是模型訓練的第一步。compare_models 函數會訓練模型庫中的全部模型,並使用 k 折交叉驗證(默認 k=10)來比較常見的評估指標。所使用的評估指標以下所示:

  • 分類模塊:Accuracy, AUC, Recall, Precision, F1, Kappa
  • 迴歸模塊:MAE, MSE, RMSE, R2, RMSLE, MAPE

下面是模型比較函數的使用,只須要這麼一行代碼!

# 比較全部模型
compare_models()

來看一下結果,直接給出全部模型跑出的結果,直觀地對比。
在這裏插入圖片描述

2. 模型建立

當咱們比較了各模型的結果後,知道了哪一個模型最適合,這時只要在建立函數create_model中傳入一個模型參數就行,一樣一行代碼搞定。

# 建立邏輯迴歸模型
lr = create_model('lr')

在這裏插入圖片描述
PyCaret 有 60 多個開源即用型算法,每一個模型都有對應的縮寫(能夠查表),好比上面邏輯迴歸直接寫上lr就能夠完成。

變量lr存儲一個由create_model函數返回的訓練模型對象,能夠經過在變量後使用標點.來訪問訓練對象的原始屬性。

3. 模型調優

一樣的,在模型調優tune_model函數中傳入模型lr參數,PyCaret將自動調優。

# 調節 LR 模型
tuned_lr = tune_model('lr')

在這裏插入圖片描述

3、模型集成

1. 集成模型
模型集成函數ensemble_model能夠直接調用生成的模型對象,而後作集成處理。默認使用Bagging方法用於模型集成,用戶也可函數中的method參數將其轉換爲Boosting

# 建立一個決策樹模型
dt = create_model('dt')
dt_bagged = ensemble_model(dt)

在這裏插入圖片描述
除此外,PyCaret還提供了blend_modelsstack_models 功能,來集成多個訓練好的模型。

2. blend模型

# blend_models 混合特殊的模型
blender = blend_models(estimator_list = [dt, catboost, lightgbm])

3. stack模型

# 建立單個模型,用於stacking
ridge = create_model('ridge')
lda = create_model('lda')
gbc = create_model('gbc')
xgboost = create_model('xgboost')
# stacking 模型
stacker = stack_models(estimator_list = [ridge,lda,gbc], meta_model = xgboost)

4、模型分析

模型分析主要能夠作兩個事情:1、模型繪製;2、模型解釋。

1. 模型繪製

咱們須要分析什麼模型指標,只要傳入函數中便可,好比對adaboost模型分析AUC指標。

# 建立邏輯迴歸模型
adaboost = create_model('adaboost') 
plot_model(adaboost, plot = 'auc') # AUC plot
plot_model(adaboost, plot = 'boundary') # Decision Boundary
plot_model(adaboost, plot = 'pr') # Precision Recall Curve
plot_model(adaboost, plot = 'vc') # Validation Curve

在這裏插入圖片描述
若是你不想單獨繪製全部這些可視化,那麼PyCaret庫有另外一個驚人的功能evaluate_model。在此功能中,只須要傳遞模型對象,PyCaret將建立一個交互式窗口,供你·以全部可能的方式查看和分析模型:
在這裏插入圖片描述

2. 模型解釋

在大多數機器學習項目中,解釋複雜模型很是重要。經過分析模型認爲重要的內容,有助於模型調優。在PyCaret中,此步驟很是簡單,只需編寫interpret_model便可獲取Shapley值。

# 建立一個模型
xgboost = create_model('xgboost')
interpret_model(xgboost) # summary plot
interpret_model(xgboost, plot = 'correlation') # correlation plot

在這裏插入圖片描述
測試數據集上特定數據點的解釋能夠經過reason圖來評估。以下圖所示:在測試數據集上檢查首個實例。

interpret_model(xgboost, plot = 'reason', observation = 0)

在這裏插入圖片描述

5、模型部署

模型調優後要將模型在測試集上進行測試,使用predict_model函數。

1. 模型預測

# 建立模型
rf = create_model('rf') # 預測測試集
rf_holdout_pred = predict_model(rf)

在這裏插入圖片描述
以上是對模型測試集進行的預測,若是對於未見過的新數據預測,PyCaret提供一個迭代的預測結果,在predict_model函數指定data,像下面這樣。

2. 模型完成

最後確認模型finalize_model才能進行部署。

# finalize a model
final_rf = finalize_model(rf)

3. 模型部署

該功能將pipeline和通過訓練的模型保存爲最終用戶應用程序能夠做爲二進制pickle文件使用。或者,可使用PyCaret將模型部署在雲上。在雲上部署模型就像編寫deploy_model同樣簡單。

好比對於AWS用戶來講,在將模型部署到AWS S3('aws')以前,必須使用命令行界面配置環境變量。要配置AWS環境變量,請在python命令行中輸入aws configure。須要如下信息,可使用亞馬遜控制檯賬戶的身份和訪問管理(IAM)門戶生成。

  • AWS訪問密鑰ID
  • AWS訪問密鑰
  • 默認區域名稱(能夠在您的AWS控制檯的「全局設置」下看到)
  • 默認輸出格式(必須留空)
# 建立模型
lr = create_model('lr')
# 最終肯定模型
final_lr = finalize_model(lr)
# 部署模型
deploy_model(final_lr, model_name = 'lr_aws', platform = 'aws', authentication = { 'bucket'  : 'pycaret-test' })

用戶也可以以二進制文件的格式保存整個實驗,包括全部中間輸出。

# 建立模型
adaboost = create_model('ada') 
# 二進制保存模型
save_model(adaboost, model_name = 'ada_for_deployment')

以上就是PyCaret的介紹和使用方法,具體教程也能夠參考:

https://pycaret.org/guide/

老鐵,要不點個贊再走可好?麼麼噠

關注個人原創微信公衆號 Python數據科學,專一於寫基於Python的數據算法、機器學習、深度學習硬核乾貨。

保證讓你看完有所收穫,不信你打我。後臺回覆『乾貨』送你Python入門、機器學習、數據挖掘等豐富項目資源。

做者簡介 做者:你們好,我是帥阿東。原爲機械專業,憑藉本身的努力成功轉行數據分析,目前擔任某大銀行風控建模職位,創立『Python數據科學』公衆號,擁有近10w粉絲,文章涵蓋爬蟲,數據分析、機器學習等大量乾貨和實戰項目講解,提供海量學習資源,期待你的關注,和我一塊兒學習。 轉載說明:未得到受權,禁止轉載。
相關文章
相關標籤/搜索