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

观看数据科学教程遇TypeError,求解决并尝试DecisionTreeRegressor

问题解决与DecisionTreeRegressor使用指南

1. 修复TypeError错误

你遇到的错误根源是参数名拼写错误:min_sample_leaf 应该改为 min_samples_leaf(注意是复数形式的samples)。Scikit-learn的DecisionTreeClassifier类不存在min_sample_leaf这个参数,正确的参数名是min_samples_leaf,用于指定每个叶节点必须包含的最小样本数量。

另外,原代码里的1-5是算术运算,结果为0,这会导致x只取数据集的第0列,大概率不符合你的需求,应该改成1:5来选取索引1到4的列(Python切片遵循左闭右开规则)。

修正后的完整代码:

x = balance_data.values[:, 1:5]
y = balance_data.values[:, 0]

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.3, random_state = 100)

# 修正参数名
clf_entropy = DecisionTreeClassifier(criterion='entropy', random_state=100, max_depth=3, min_samples_leaf=5)
clf_entropy.fit(x_train, y_train)

2. 切换到DecisionTreeRegressor

如果你想尝试用于回归任务的DecisionTreeRegressor,可以按照以下步骤操作:

导入所需类

首先确保从sklearn.tree导入回归器:

from sklearn.tree import DecisionTreeRegressor

初始化并训练回归器

DecisionTreeRegressor的多数参数和DecisionTreeClassifier通用,比如max_depth、min_samples_leaf、random_state等。回归任务默认的评价准则是squared_error(均方误差),你也可以指定absolute_error、friedman_mse等其他准则。

示例代码:

# 初始化回归模型
regressor = DecisionTreeRegressor(max_depth=3, min_samples_leaf=5, random_state=100)
# 训练模型
regressor.fit(x_train, y_train)
# 生成预测结果
y_pred = regressor.predict(x_test)

回归模型的评估

回归任务的评估指标和分类任务不同,常用均方误差(MSE)、R²分数来衡量模型性能:

from sklearn.metrics import mean_squared_error, r2_score

# 计算均方误差
mse = mean_squared_error(y_test, y_pred)
# 计算R²分数
r2 = r2_score(y_test, y_pred)

print(f"均方误差: {mse:.2f}")
print(f"R²分数: {r2:.2f}")

注意:DecisionTreeRegressor适用于预测连续数值型标签,所以你的y需要是连续数据,而非分类任务中的离散类别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 20:12:58