1、解释模型
解释复杂模型在机器学习中至关重要。 模型可解释性通过分析模型真正认为的重要内容来帮助调试模型。 在PyCaret中解释模型就像编写interpret_model一样简单。 该函数将训练有素的模型对象和图的类型作为字符串。 解释是基于SHAP(SHapley Additive exPlanations)实现的,并且仅适用于基于树的模型。 该函数仅在pycaret.classification和pycaret.regression模块中可用。
代码语言:javascript复制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)
代码语言:javascript复制interpret_model(xgboost, plot = 'correlation')
代码语言:javascript复制interpret_model(xgboost, plot = 'reason', observation = 10)
2、分配模型
在执行无监督实验(例如聚类,异常检测或自然语言处理)时,您通常会对模型生成的标签感兴趣,例如 数据点所属的群集标识是“群集”实验中的标签。 同样,哪个观察值是异常值,是“异常检测”实验中的二进制标记,而哪个主题文档属于自然语言处理实验中的标记。 这可以在PyCaret中使用assign_model函数实现,该函数将训练有素的模型对象作为单个参数。 此功能仅在pycaret.clustering,pycaret.anomaly和pycaret.nlp模块中可用。
代码语言:javascript复制# 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)
代码语言:javascript复制# 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)
代码语言:javascript复制# 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模块中可用。
代码语言:javascript复制# 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模块中可用。
代码语言:javascript复制# 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)