以下使用scikit-learn中数据集进行分享。
如果选用随机森林作为最终的模型,那么找出它的最佳参数可能有1000多种组合的可能,你可以使用使用穷尽的网格搜索(Exhaustive Grid Seaarch)方法,但时间成本将会很高(运行很久...),或者使用随机搜索(Randomized Search)方法,仅分析超参数集合中的子集合。
该例子以手写数据集为例,使用支持向量机的方法对数据进行建模,然后调用scikit-learn中validation_surve方法将模型交叉验证的结果进行可视化。需要注意的是,在使用validation_curve方法时,只能验证一个超参数与模型训练集和验证集得分的关系(即二维的可视化),而不能实现多参数与得分间关系的可视化。以下搜索的参数是gamma,需要给定参数范围,用param_range进行传递,评分策略用scoring参数进行传递。其代码示例如下所示:
print(__doc__)import matplotlib.pyplot as pltimport numpy as npfrom sklearn.datasets import load_digitsfrom sklearn.svm import SVCfrom sklearn.model_selection import validation_curveX, y = load_digits(return_X_y=True)param_range = np.logspace(-6, -1, 5)train_scores, test_scores = validation_curve( SVC(), X, y, param_name="gamma", param_range=param_range, scoring="accuracy", n_jobs=1)train_scores_mean = np.mean(train_scores, axis=1)train_scores_std = np.std(train_scores, axis=1)test_scores_mean = np.mean(test_scores, axis=1)test_scores_std = np.std(test_scores, axis=1)plt.title("Validation Curve with SVM")plt.xlabel(r"$gamma$")plt.ylabel("Score")plt.ylim(0.0, 1.1)lw = 2plt.semilogx(param_range, train_scores_m