在机器学习领域,评估模型性能是一个至关重要的步骤。scikit-learn库提供了一个名为make_scorer
的函数,它允许根据任意的性能度量或损失函数来创建一个评分器。这个评分器可以被用在所有支持scoring
参数的scikit-learn估计器或函数中。
通过make_scorer
函数,可以指定一个估计器的方法来获取预测结果,以供评分或损失函数使用。这个参数被称为response_method
,它可以是字符串、列表或元组,表示估计器的方法名称。如果设置为None
,则默认使用"predict"
方法。
此外,make_scorer
函数还提供了greater_is_better
参数,用于指示评分函数是分数函数(默认情况下,分数越高越好)还是损失函数(分数越低越好)。如果是后者,评分器对象将会对score_func
的结果进行符号翻转。
需要注意的是,needs_proba
和needs_threshold
参数在scikit-learn 1.4版本中已被弃用,并将在1.6版本中移除。取而代之的是使用response_method
参数来指定需要的概率估计或决策函数。
在实际应用中,可以通过以下代码创建一个评分器,并将其用于模型选择和参数调优。例如,可以使用fbeta_score
作为评分函数,并设置beta=2
来创建一个F2分数评分器。然后,可以将这个评分器用于GridSearchCV
进行参数网格搜索,以找到最佳的模型参数。
from sklearn.metrics import fbeta_score, make_scorer
from sklearn.model_selection import GridSearchCV
from sklearn.svm import LinearSVC
ftwo_scorer = make_scorer(fbeta_score, beta=2)
grid = GridSearchCV(LinearSVC(), param_grid={'C': [1, 10]}, scoring=ftwo_scorer)
scikit-learn 1.5版本带来了许多新特性,包括直方图梯度提升树、梯度提升回归的预测区间、时间序列预测的滞后特征,以及在cross_val_score
和GridSearchCV
上进行多指标评估的演示。此外,还提供了针对成本敏感学习后调整决策阈值的功能。