在机器学习领域,评估模型性能是一个至关重要的步骤。scikit-learn库提供了一个强大的工具——评分器(scorer),它允许通过任意的性能指标或损失函数来衡量模型的表现。评分器是一个包装器,它接受一个性能指标或损失函数,并以特定的签名调用该函数。具体来说,评分器的调用签名为:scorer(estimator, X, y_true, **kwargs)。这种形式的评分器可以在所有支持评分参数的scikit-learn估计器或函数中使用。
评分器的一个重要参数是response_method,它允许指定使用估计器的哪种方法来获取预测结果,以供评分/损失函数使用。response_method的可选值包括“predict_proba”、“decision_function”和“predict”,或者这些字符串的列表或元组。如果response_method是一个字符串,它对应于要返回的方法名称;如果是一个列表或元组,它提供了按偏好顺序排列的方法名称。返回的方法是列表中的第一个且由估计器实现的方法。如果response_method为None,它等同于“predict”。需要注意的是,从scikit-learn 1.6版本开始,将None等同于‘predict’的做法已被弃用,并将在1.8版本中移除。
评分器的另一个关键参数是greater_is_better,它是一个布尔值,默认为True。这个参数决定了评分函数(score_func)是作为评分函数(高值表示好)还是损失函数(低值表示好)。如果是后者,评分器对象将对score_func的结果进行符号翻转。此外,评分器还接受额外的参数**kwargs,这些参数将被传递给score_func。
评分器的返回值是一个可调用对象,它返回一个标量分数;分数越高表示性能越好。下面是一个使用评分器的示例:
from sklearn.metrics import fbeta_score, make_scorer
ftwo_scorer = make_scorer(fbeta_score, beta=2)
from sklearn.model_selection import GridSearchCV
from sklearn.svm import LinearSVC
grid = GridSearchCV(LinearSVC(), param_grid={'C': [1, 10]}, scoring=ftwo_scorer)
在scikit-learn 1.5版本中,引入了一些新特性,包括直方图梯度提升树、梯度提升回归的预测区间、时间序列预测的滞后特征,以及在cross_val_score和GridSearchCV上进行多指标评估的演示。此外,还展示了如何针对成本敏感学习进行决策阈值的后调优。这些新特性进一步增强了scikit-learn在机器学习领域的应用能力,为用户提供了更多的灵活性和选择。