You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过循环测试sklearn决策树多组max_depth参数取值

解答

完全可以通过循环批量测试max_depth的不同取值,不需要手动逐个修改参数重跑。
你只需要遍历目标取值区间,每次实例化对应参数的决策树模型、完成训练、记录验证集上的评估指标,最后对比所有结果就能选出表现最优的参数。
针对你要测试10到15区间取值的需求,参考实现代码如下:

from sklearn import tree
from sklearn.metrics import accuracy_score

# 存储不同max_depth对应的模型和验证集表现
result_record = {}

# range是左闭右开区间,要取到15需要把上界设为16
for depth in range(10, 16):
    # 初始化对应参数的决策树
    clf = tree.DecisionTreeClassifier(max_depth=depth)
    # 训练模型
    clf.fit(X_train, y_train)
    # 在验证集上计算预测效果
    val_pred = clf.predict(X_val)
    val_acc = accuracy_score(y_val, val_pred)
    # 保存结果
    result_record[depth] = {
        "model": clf,
        "val_accuracy": val_acc
    }

# 输出所有参数的效果对比
for d, info in result_record.items():
    print(f"max_depth = {d},验证集准确率:{info['val_accuracy']:.4f}")

几个需要注意的点:

  • 参数筛选过程不要用测试集做评估,会造成数据泄露,必须使用独立划分的验证集;如果想要结果更稳定,也可以在循环里搭配交叉验证计算平均得分。
  • 如果后续需要同时测试多个参数的不同取值,不用自己手写多层循环,可以直接用scikit-learn内置的GridSearchCV做网格搜索,本质也是遍历参数组合,还自带交叉验证逻辑,使用更方便。如果只是单测max_depth这一个参数,上面的手写循环足够轻量好改。

内容的提问来源于stack exchange,提问作者OccamsSafetyRazor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 01:25:06