抢人饭碗了!推荐一款全自动的机器学习建模神器PyCaret
?Datawhale干貨?
編譯:張峰,Datawhale成員
寄語:PyCaret,是一款 Python中的開源低代碼(low-code)機器學習庫,支持在「低代碼」環境中訓練和部署有監督以及無監督的機器學習模型,提升機器學習實驗的效率。
本文對PyCaret低代碼庫進行了簡單介紹,并對其操作方法進行了詳細的解讀。現在,讓我們一起來領略下:如何用僅僅幾行代碼搞定一個機器學習模型吧。
首發 PyCaret 1.0.0
我們很高興能宣布PyCaret,這是一個使用Python的開源機器學習庫,用于在Windows上訓練和部署有監督和無監督的機器學習模型低碼環境。通過PyCaret,您可以在選擇筆記本電腦環境后的幾秒鐘內,從準備數據到部署模型。
與其他開源機器學習庫相比,PyCaret是一個備用的低代碼庫,可用于僅用很少的單詞替換數百行代碼。這使得實驗快速而有效地成指數增長。PyCaret本質上是Python的包裝器,它圍繞著多個機器學習庫和框架,例如scikit-learn,XGBoost,Microsoft LightGBM,spaCy等。
PyCaret簡單易用。在PyCaret中執行的所有操作都按順序存儲在完全協調部署的管道中,無論是估算缺失值、轉換分類數據、進行特征工程亦或是進行超參數調整,PyCaret都能自動執行所有操作。要了解有關PyCaret的更多信息,請觀看此1分鐘的視頻。
PyCaret入門
可以安裝PyCaret的第一個穩定版本(PyCaret1.0.0)。使用命令行(command line)界面或筆記本(notebook)環境,運行下面的代碼單元以安裝PyCaret。
pip install pycaret 如果您使用的是Azure筆記本或Google Colab,請運行以下代碼單元以安裝PyCaret。!pip?install?pycaret當您安裝PyCaret時,將自動安裝所有依賴項。完整依賴項列表參照下方鏈接:
https://github.com/pycaret/pycaret/blob/master/requirements.txt
沒有比這更容易????,現在來直觀感受下PyCaret的強大。
分步教程????
1. 獲取數據
在本次循序漸進的教程中,我們將使用“糖尿病”數據集,目標是根據血壓,胰島素水平,年齡等多種因素來預測患者結果。直接從存儲庫導入數據集的最簡單方法是使用pycaret.datasets模塊中的get_data函數。
PyCaret的github倉庫:https://github.com/pycaret/pycaret
from pycaret.datasets import get_data diabetes?=?get_data('diabetes')????特別提醒: PyCaret可以直接與pandas數據框(dataframe)一起使用。
2. 搭建環境
PyCaret中任何機器學習實驗的第一步都是通過導入所需的模塊并初始化setup()來設置環境的。本示例中使用的模塊是pycaret.classification。導入模塊后,將通過定義數據框('diabetes')和目標變量('Class variable')來初始化setup()。
from pycaret.classification import * exp1?=?setup(diabetes,?target?=?'Class?variable')所有預處理步驟都在setup()中應用。PyCaret擁有20多種功能,可為機器學習準備數據,它會根據setup函數中定義的參數創建轉換管道(transformation pipeline)。
它會自動編排管道(pipeline)中的所有依賴項,因此您不必手動管理對測試數據集或未知的數據集進行轉換的順序執行。PyCaret的管道可以輕松地在各種環境之間轉移,以實現大規模運行或輕松部署到生產環境中。以下是PyCaret首次發布時可用的預處理功能。PyCaret的預處理能力如下圖:
????特別提醒:當setup()初始化時,將自動執行機器學習必需的數據預處理步驟,例如缺失值插補,分類變量編碼,標簽編碼(將yes或no轉換為1或0)和訓練、測試集拆分(train-test-split)。
3.比較模型
這是在有監督的機器學習實驗(分類或回歸)中建議的第一步。此功能訓練模型庫中的所有模型,并使用k倍交叉驗證(默認10倍)比較通用評估指標。使用的評估指標是:
分類:Accuracy(準確度),AUC,Recall(召回率),Precision(精確度),F1,Kappa
回歸:MAE,MSE,RMSE,R2,RMSLE,MAPE
????特別提醒:
默認情況下,使用10倍交叉驗證來評估指標??梢酝ㄟ^更改fold參數的值來更改它。
默認情況下,表格按“準確度”(從最高到最低)排序??梢酝ㄟ^更改sort參數的值來更改。
4.創建模型
在PyCaret的任何模塊中創建模型就像編寫create_model一樣簡單。它僅接受一個參數,即作為字符串輸入傳遞的模型名稱。此函數返回具有k倍交叉驗證分數和訓練有素的模型對象的表格。
adaboost?=?create_model('ada')變量“ adaboost”存儲一個由create_model函數返回的經過訓練的模型對象,該對象是scikit-learn評估器。可以通過在變量后使用點(.)來訪問訓練對象的原始屬性。請參見下面的示例。
????特別提醒:ret具有60多個開源即用型(ready-to-use)算法。查看PyCaret中可用的估算器/模型的完整列表:https://www.pycaret.org/create-model
5.調整模型
tune_model功能用于機器學習模型的自動調整超參數。PyCaret 在預定義的搜索空間上使用隨機網格搜索。此函數返回具有k倍交叉驗證分數和訓練有素的模型對象的表格。
tuned_adaboost = tune_model('ada')????特別提醒:tune_model位于無監督模塊,如函數pycaret.nlp,pycaret.clustering和pycaret.anomal可與監督模塊結合使用。例如,PyCaret的NLP模塊可用于通過監督ML模型(例如“準確度”或“ R2”)評估目標/成本函數來調整主題參數(topics parameter)的數量。
6.集成模型
ensemble_model功能用于ensembling訓練的模型。它僅采用一個參數,即經過訓練的模型對象。此函數返回具有k倍交叉驗證得分和訓練模型對象的表。
# creating a decision tree model dt = create_model('dt') # ensembling a trained dt model dt_bagged = ensemble_model(dt)????特別提醒:
默認情況下,“Bagging”方法用于ensembling,可使用ensemble_model函數中的method參數將其更改為“Boosting” 。
PyCaret還提供blend_models和stack_models功能來集成多個訓練過的模型。
7.顯示模型
可以使用plot_model函數對經過訓練的機器學習模型進行性能評估和診斷。它使用訓練有素的模型對象和作圖的類型作為plot_model函數中的字符串輸入。
# create a model adaboost = create_model('ada') # AUC plot plot_model(adaboost, plot = 'auc') # Decision Boundary plot_model(adaboost, plot = 'boundary') # Precision Recall Curve plot_model(adaboost, plot = 'pr') # Validation Curve plot_model(adaboost,?plot?=?'vc')了解有關PyCaret中不同可視化的更多信息:https://www.pycaret.org/plot-model
或者,您可以使用評估模型(evaluate_model)函數通過botebook中的用戶界面查看作圖效果。
evaluate_model(adaboost)????特別提醒: plot_model函數pycaret.nlp模塊可用于顯示文本語料庫和語義主題模型。
8.解釋模型
在現實生活中通常是這樣,當數據之間的關系是非線性時,我們總是看到基于樹的模型(tree-based )比簡單的高斯模型(simple gaussian models)做得更好。但是,這是以失去可解釋性為代價的,因為基于樹的模型沒有像線性模型那樣提供簡單的系數。PyCaret 使用interpret_model函數實現SHAP(SHapley Additive exPlanations)。
# create a model xgboost = create_model('xgboost') # summary plot interpret_model(xgboost) # correlation plot interpret_model(xgboost,?plot?=?'correlation')可以使用“plot = 'reason'”評估測試數據集中特定數據點(也稱為原因自變量'reason argument')的解釋。在下面的示例中,我們正在檢查測試數據集中的第一個實例。
interpret_model(xgboost, plot = 'reason', observation = 0)9.預測模型
到目前為止,我們看到的結果僅基于訓練數據集的k倍交叉驗證(默認為70%)。為了查看模型在test / hold-out上的預測和性能,使用了predict_model函數。
# create a model rf = create_model('rf') # predict test / hold-out dataset rf_holdout_pred = predict_model(rf) predict_model函數還用于預測未知的數據集?,F在,我們將使用與訓練時相同的數據集作為新的未知數據集的代理(proxy )。實際上,每次使用新的未知數據集時,predict_model函數將被迭代使用。 predictions = predict_model(rf, data = diabetes)????特別提醒:
predict_model函數還可以預測使用stack_models和create_stacknet函數創建的模型的順序鏈(sequential chain)。
predict_model函數還可以使用deploy_model函數直接從AWS S3上托管的模型進行預測。
10.部署模型
利用訓練后的模型在未知數據集上生成預測的一種方法是:在訓練過模型的同一notebooks / IDE中使用predict_model函數。但是,對未知數據集進行預測是一個迭代過程。根據用例,進行預測的頻率可以是從實時預測到批量預測。PyCaret的deploy_model函數允許notebook環境在云端部署整個管道,包括經過訓練的模型。
deploy_model(model = rf, model_name = 'rf_aws', platform = 'aws',authentication = {'bucket' : 'pycaret-test'})11.保存模型/保存實驗
訓練完成后,包含所有預處理轉換和訓練后的模型對象的整個管道都可以保存為二進制pickle文件。
# creating model adaboost = create_model('ada') # saving model save_model(adaboost, model_name = 'ada_for_deployment') 您還可以將包含所有中間輸出的整個實驗保存為一個二進制文件。 save_experiment(experiment_name = 'my_first_experiment')????特別提醒:您可以使用PyCaret所有模塊中可用的load_model和load_experiment函數加載保存的模型和保存的實驗。
延伸閱讀
【1】回歸:https://pycaret.org/reg101/
【2】聚類:https://pycaret.org/clu101/
【3】異常檢測:https://www.pycaret.org/anom101
【4】自然語言處理:https://pycaret.org/nlp101/
【5】關聯規則挖掘:https://pycaret.org/arul101/
【6】預處理功能:https://www.pycaret.org/preprocessing
【7】模型列表:https://www.pycaret.org/create-model
【8】可視化信息:https://www.pycaret.org/plot-model
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習在線手冊AI基礎下載(pdf更新到25集)本站qq群1003271085,加入微信群請回復“加群”獲取一折本站知識星球優惠券,復制鏈接直接打開:https://t.zsxq.com/yFQV7am喜歡文章,點個在看
總結
以上是生活随笔為你收集整理的抢人饭碗了!推荐一款全自动的机器学习建模神器PyCaret的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Python入门】列表的常用操作,这十
- 下一篇: 【推荐系统】深入理解推荐系统:排序