多指标参数搜索与评估

机器学习中,模型的评估是一个至关重要的环节。scikit-learn库提供了多种评估指标,可以帮助从不同的角度衡量模型的性能。本文将介绍如何使用GridSearchCV进行多指标参数搜索,并展示如何通过图形化的方式评估这些指标。

首先,需要导入必要的库。这包括numpy用于数学运算,matplotlib用于绘图,以及scikit-learn库中的相关模块。

import numpy as np from matplotlib import pyplot as plt from sklearn.datasets import make_hastie_10_2 from sklearn.metrics import accuracy_score, make_scorer from sklearn.model_selection import GridSearchCV from sklearn.tree import DecisionTreeClassifier

接下来,生成一个数据集,用于后续的模型训练和评估。这里使用的是Hastie等人提出的10-2数据集,它是一个二分类问题。

X, y = make_hastie_10_2(n_samples=8000, random_state=42)

在进行参数搜索之前,需要定义评估指标。scikit-learn允许使用预定义的指标字符串,或者自定义的评估函数。在这个例子中,使用了AUC和准确率作为评估指标。

scoring = { "AUC": "roc_auc", "Accuracy": make_scorer(accuracy_score) }

现在可以设置GridSearchCV,进行参数搜索。选择了决策树分类器作为模型,并定义了一个参数网格。还设置了refit参数,以便在最佳参数设置下重新训练模型。

gs = GridSearchCV( DecisionTreeClassifier(random_state=42), param_grid={"min_samples_split": range(2, 403, 20)}, scoring=scoring, refit="AUC", n_jobs=2, return_train_score=True, ) gs.fit(X, y)

参数搜索完成后,可以获取搜索结果,并将其可视化。这包括训练集和测试集的评分,以及每个参数设置下的最佳评分。

results = gs.cv_results_ plt.figure(figsize=(13, 13)) plt.title("GridSearchCV evaluating using multiple scorers simultaneously", fontsize=16) plt.xlabel("min_samples_split") plt.ylabel("Score") ax = plt.gca() ax.set_xlim(0, 402) ax.set_ylim(0.73, 1)

使用不同的颜色和线型来区分不同的评估指标和样本类型(训练集和测试集)。此外,还在图中标记了每个指标下的最佳评分。

X_axis = np.array(results["param_min_samples_split"].data, dtype=float) for scorer, color in zip(sorted(scoring), ["g", "k"]): for sample, style in (("train", "--"), ("test", "-")): sample_score_mean = results["mean_%s_%s" % (sample, scorer)] sample_score_std = results["std_%s_%s" % (sample, scorer)] ax.fill_between(X_axis, sample_score_mean - sample_score_std, sample_score_mean + sample_score_std, alpha=0.1 if sample == "test" else 0, color=color) ax.plot(X_axis, sample_score_mean, style, color=color, alpha=1 if sample == "test" else 0.7, label="%s(%s)" % (scorer, sample))

最后,展示了整个脚本的运行时间,并提供了下载Jupyter笔记本和Python源代码的链接。

Total running time of the script: (0 minutes 8.618 seconds) Download Jupyter notebook: plot_multi_metric_evaluation.ipynb Download Python source code: plot_multi_metric_evaluation.py Download zipped: plot_multi_metric_evaluation.zip
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485