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

SciKitLearn设置max_depth=10但决策树实际深度为34如何解决

问题根源

核心错误是变量名笔误:
你初始化时传入max_depth=10的决策树实例存放在变量AD5中,但训练时调用fit()方法的对象是另一个名为AD的模型实例——这个实例没有配置深度限制(scikit-learn决策树默认参数max_depth=None,会持续分裂节点直到满足叶子节点纯度/最小样本数等停止条件)。你把AD.fit()的返回值重新赋值给AD5后,AD5实际指向的是这个无深度约束的训练后模型,打印出34的深度是无约束训练的正常结果,和你最初设置的max_depth=10参数无关。

修复方法

修正变量名,确保训练操作作用在你初始化时配置了深度参数的模型实例上,修正后的代码如下:

from sklearn import tree

# 初始化时指定最大深度为10
AD5 = tree.DecisionTreeRegressor(max_depth=10)
# 调用正确的模型实例执行训练,fit为原地操作,无需重新赋值变量
AD5.fit(X_train, Y_train)
# 打印实际树深,结果必然小于等于10
print(AD5.tree_.max_depth)

运行上述代码后,输出的模型最大深度不会超过你设置的10,问题即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 21:45:46