我正在尝试在sklearn中使用validation_curve函数。
train_scores, test_scores = validation_curve(DecisionTreeClassifier(), X_train, y_train,
param_name="max_depth",
scoring="f1",
param_range=list(range(5,15,2)),
cv=5)
有没有办法传递多个参数来绘制这条曲线。例如
param_name=["max_depth","min_samples_split"]
我在网上查了一下,找不到这样的例子。有什么建议吗?
https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.validation_curve.html 的文档指出您必须输入:
param_name : 字符串将更改的参数的名称。
param_range:阵列状,形状(n_values,)将计算的参数的值。
这意味着您不能提供多个参数来改变和测试。实际上,生成的图是双变量的,序轴是分数指标,横坐标是参数的变化。
我相信您可以通过测试一个参数同时保持固定另一个参数来拟合两个参数,即为声明估计器时固定的第一个参数的不同值创建多个验证曲线。
这种方法,翻译成代码,可以读成:
max_depth_range = list(range(5, 15, 2))
min_samples_split = list(range(2, 10, 1))
for k in min_samples_split:
train_scores, test_scores = validation_curve(DecisionTreeClassifier(min_samples_split=k),
X_train, y_train,
param_name="max_depth",
scoring="f1",
param_range=max_depth_range,
cv=5)
#do something here with train_scores & test_scores