做者|LAKSHAY ARORA
編譯|VK
來源|Analytics Vidhyapython
PyCaret是一個超級有用的Python庫,用於在短期內執行多個機器學習任務git
學習如何依賴PyCaret在幾行代碼中構建複雜的機器學習模型github
我創建的第一個機器學習模型是一個至關麻煩的代碼塊。我仍然記得構建一個集成模型,它須要許多行代碼,它十分須要一個嚮導來解開這些混亂的代碼!app
當涉及到構建可解釋的機器學習模型時,尤爲是在行業中,編寫高效的代碼是成功的關鍵。因此我強烈建議使用PyCaret庫。機器學習
我但願PyCaret在個人剛學習機器學習的日子裏出現!這是一個很是靈活和有用的庫,我在最近幾個月已經至關依賴。我堅信任何有志成爲數據科學或分析專業人士的人都會從使用PyCaret中受益不淺。函數
咱們將看到PyCaret究竟是什麼,包括如何在你的機器上安裝它,而後咱們將深刻研究如何使用PyCaret來構建可解釋的機器學習模型,包括集成模型。性能
什麼是PyCaret?爲何要使用它?學習
安裝PyCaret測試
熟悉PyCaret編碼
使用PyCaret訓練咱們的機器學習模型
使用PyCaret構建集成模型
分析模型
作出預測
保存並加載模型
PyCaret是Python中一個開源的機器學習庫,它能夠幫助你從數據準備到模型部署。它很容易使用,你能夠用一行代碼完成幾乎全部的數據科學項目任務。
我發現PyCaret很是方便。如下是兩個主要緣由:
PyCaret是一個代碼庫,它使你的工做效率更高。你能夠在代碼上花更少的時間,作更多的實驗
它是一個易於使用的機器學習庫,將幫助你執行端到端的機器學習實驗,不管是輸入缺失值、編碼分類數據、特徵工程、超參數調整,仍是構建集成模型
這是最直接的。能夠直接使用pip安裝PyCaret的第一個穩定版本v1.0.0。只需在Jupyter Notebook中運行如下命令便可開始:
!pip3 install 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中啓動機器學習項目以前的第一步是設置環境。這只是一個兩步的過程:
# 導入分類模塊 from pycaret import classification # 設置環境 classification_setup = classification.setup(data= data_classification, target='Personal Loan')
咱們都準備好探索PyCaret了!
用PyCaret訓練一個模型很是簡單。你只須要使用create_model函數,該函數只接受一個參數(模型縮寫爲字符串)。
在這裏,咱們將首先訓練一個決策樹模型,咱們必須經過「dt」,它將返回一個表,其中包含用於分類模型的經常使用評估指標的k倍交叉驗證分數。
如下是用於監督學習的評估指標:
你能夠查看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中,咱們能夠用一行代碼建立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中的模型也很簡單。只需一行代碼,你就能夠執行如下操做:
能夠經過提供模型對象做爲參數和所需的打印類型來打印模型結果。繪製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/