1、解釋模型
解釋復雜模型在機器學習中至關重要。 模型可解釋性通過分析模型真正認為的重要內容來幫助調試模型。 在PyCaret中解釋模型就像編寫interpret_model一樣簡單。 該函數將訓練有素的模型對象和圖的類型作為字符串。 解釋是基於SHAP(SHapley Additive exPlanations)實現的,並且僅適用於基於樹的模型。
該函數僅在pycaret.classification和pycaret.regression模塊中可用。
from pycaret.datasets import get_data diabetes = get_data('diabetes') # Importing module and initializing setup from pycaret.classification import * clf1 = setup(data = diabetes, target = 'Class variable') # creating a model xgboost = create_model('xgboost') # interpreting model interpret_model(xgboost)
interpret_model(xgboost, plot = 'correlation')
interpret_model(xgboost, plot = 'reason', observation = 10)
2、分配模型
在執行無監督實驗(例如聚類,異常檢測或自然語言處理)時,您通常會對模型生成的標簽感興趣,例如 數據點所屬的群集標識是“群集”實驗中的標簽。 同樣,哪個觀察值是異常值,是“異常檢測”實驗中的二進制標記,而哪個主題文檔屬於自然語言處理實驗中的標記。 這可以在PyCaret中使用assign_model函數實現,該函數將訓練有素的模型對象作為單個參數。
此功能僅在pycaret.clustering,pycaret.anomaly和pycaret.nlp模塊中可用。
# Importing dataset from pycaret.datasets import get_data jewellery = get_data('jewellery') # Importing module and initializing setup from pycaret.clustering import * clu1 = setup(data = jewellery) # create a model kmeans = create_model('kmeans') # Assign label kmeans_results = assign_model(kmeans)
# Importing dataset from pycaret.datasets import get_data anomalies = get_data('anomalies') # Importing module and initializing setup from pycaret.anomaly import * ano1 = setup(data = anomalies) # create a model iforest = create_model('iforest') # Assign label iforest_results = assign_model(iforest)
# Importing dataset from pycaret.datasets import get_data kiva = get_data('kiva') # Importing module and initializing setup from pycaret.nlp import * nlp1 = setup(data = kiva, target = 'en') # create a model lda = create_model('lda') # Assign label lda_results = assign_model(lda)
3、校准模型
在進行分類實驗時,您通常不僅希望預測類別標簽,而且還希望獲得預測的可能性。這種可能性使您充滿信心。某些模型可能會使您對類概率的估計不佳。校准良好的分類器是概率分類器,其概率輸出可以直接解釋為置信度。在PyCaret中校准分類模型就像編寫calibrate_model一樣簡單。這些功能采用經過訓練的模型對象和通過方法參數進行校准的方法。方法可以是對應於Platt方法的“ Sigmoid”,也可以是非參數方法的“等滲”。不建議將等滲校准用於校准樣品太少(<< 1000),因為它傾向於過擬合。此函數返回一個表格,其中包含經過分類驗證指標(准確性,AUC,召回率,精度,F1和Kappa)的k倍交叉驗證得分以及受過訓練的模型對象。
可以使用calibrate_model函數中的fold參數定義折疊次數。默認情況下,折疊倍數設置為10。默認情況下,所有指標均四舍五入到4位小數,可以使用calibrate_model中的round參數進行更改。
此功能僅在pycaret.classification模塊中可用。
# Importing dataset from pycaret.datasets import get_data diabetes = get_data('diabetes') # Importing module and initializing setup from pycaret.classification import * clf1 = setup(data = diabetes, target = 'Class variable') # create a model dt = create_model('dt') # calibrate a model calibrated_dt = calibrate_model(dt)
4、優化閾值
在分類問題中,false positives 幾乎永遠不會與false negatives相同。這樣,如果您正在優化類型1和類型2錯誤產生不同影響的業務問題,則可以通過分別定義 true positives, true negatives, false positives and false negatives損失 來優化分類器的概率閾值,以優化自定義損失函數。在PyCaret中優化閾值就像編寫optimize_threshold一樣簡單。它需要一個訓練有素的模型對象(一個分類器),並且損失函數僅由真陽性,真陰性,假陽性和假陰性表示。此函數返回一個交互圖,其中損失函數(y軸)表示為x軸上不同概率閾值的函數。然后顯示一條垂直線,代表該特定分類器的概率閾值的最佳值。然后,可以將使用optimize_threshold優化的概率閾值用於predict_model函數,以使用自定義概率閾值生成標簽。通常,所有分類器都經過訓練可以預測50%的陽性分類。
此功能僅在pycaret.classification模塊中可用。
# Importing dataset from pycaret.datasets import get_data credit = get_data('credit') # Importing module and initializing setup from pycaret.classification import * clf1 = setup(data = credit, target = 'default') # create a model xgboost = create_model('xgboost') # optimize threshold for trained model optimize_threshold(xgboost, true_negative = 1500, false_negative = -5000)