做者:帥阿東,數據愛好者
Python數據科學出品
學習數據科學好久了,從數據探索、數據預處理、數據模型搭建和部署這些過程一直有些重複性的工做比較浪費時間,尤爲當你有個新的想法想要快速嘗試下效果的時候,效率很低。python
東哥最近發現一個開源的Python機器學習庫,名字叫PyCaret
,這個輪子正好能夠爲了解決我剛纔所描述的困擾,它的特色是以low-code
低代碼量來快速解決從數據預處理到模型部署的整個流程。
用了一下感受確實有點香,所以也和你們分享一下。算法
PyCaret
是一個將咱們經常使用到的機器學習庫進行封裝了的輪子。微信
經常使用的都有啥呢?app
好比pandas
,numpy
作數據處理的,matplotlib
,seaborn
數據可視化的,sklearn
,xgboost
,catboost
,lightgbm
等各類模型的,總共有30個。在安裝PyCaret
的時候會附帶着一塊兒都安裝上。機器學習
封裝這麼多庫幹什麼用?ide
PyCaret依賴了這麼多的神庫確定是要搞事情啊。沒錯,機器學習中的一些操做步驟均可在PyCaret
自動開發的pipeline
中進行復現。在 Pycaret 中所執行的全部操做均按順序存儲在 Pipeline 中,該 Pipeline 針對模型部署進行了徹底配置。函數
PyCaret就像是把全部都安排好了同樣,咱們按照它定義的函數使用就能夠了。不論是填充缺失值、轉換類別數據、執行特徵工程設計,仍是調參,Pycaret 都可以自動執行。 因此才能夠實現用幾行代碼搞定從預處理到模型部署的整個流程。學習
並且pipeline
能夠保存爲二進制文件格式,支持在不一樣環境中進行遷移。測試
PyCaret
支持6個模塊,有監督
和無監督
模型的訓練和部署,分別有分類、迴歸、聚類、異常檢測、天然語言處理和關聯規則挖掘。
ui
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
像這種數據建模類的工做會涉及不少交互式的操做,因此東哥首推在Jupyter notebook
中運行代碼。
PyCaret庫的函數有五個大類,初始化、模型訓練、模型集成、模型分析與模型部署,基本上覆蓋了咱們正常建模的順序,只不過預處理都在初始化中完成了。具體使用方法見後面實例。
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 相關的數據準備,好比樣本的劃分
、數據預處理
,缺失值處理
、獨熱編碼
、歸一化
、特徵工程
、特徵選擇
等等。
好比要用歸一化,那麼令normalize
爲Ture
就行了,其它的同理。
clf1 = setup(data = pokemon, target = 'Legendary', normalize = True)
若是還要用其餘的,在setup裏面加就行了,至於處理的順序不用咱們管,pipeline已經自動搞定了。
另外,PyCaret 的一大優勢是: Pipeline 可保存成二進制,輕鬆地在各環境之間相互遷移,好比大規模運行或是輕鬆部署到生產環境中。
模型訓練包括三個部分,模型比較,模型建立,模型調優。
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')
1. 集成模型
模型集成函數ensemble_model
能夠直接調用生成的模型對象,而後作集成處理。默認使用Bagging
方法用於模型集成,用戶也可函數中的method
參數將其轉換爲Boosting
。
# 建立一個決策樹模型 dt = create_model('dt') dt_bagged = ensemble_model(dt)
除此外,PyCaret還提供了blend_models
和 stack_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)
模型分析主要能夠作兩個事情: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)
模型調優後要將模型在測試集上進行測試,使用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)門戶生成。
# 建立模型 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粉絲,文章涵蓋爬蟲,數據分析、機器學習等大量乾貨和實戰項目講解,提供海量學習資源,期待你的關注,和我一塊兒學習。 轉載說明:未得到受權,禁止轉載。