构建决策树回归模型并预测样本的输出 - 机器学习

Posted

技术标签:

【中文标题】构建决策树回归模型并预测样本的输出 - 机器学习【英文标题】:Build Decision Tree Regression Model and predicting output from sample - Machine learning 【发布时间】:2020-05-27 14:06:35 【问题描述】:

我是机器学习的新手。当我使用来自 scikit-learn 模块的波士顿数据集练习具有默认参数的决策树回归模型时。

在这个链接解决方案(How to Build a Decision tree Regressor model)之后,我在训练数据集上打印了模型精度

print(dt_reg.score(X_train,Y_train)))
print(dt_reg.score(X_test,Y_test)))

现在,我面临以下问题:打印 X_test 集的前两个样本的预测房价。为此,我写如下,但没有得到正确的输出。请您帮我预测 X_test 数据集的前 2 个样本。

predicted = dt_reg.predict(X_test)

for i in range(2):
    print("Predict housing price",predicted[i])

【问题讨论】:

【参考方案1】:

你可以像下面这样使用:

我假设你先写了这段代码,

from sklearn import datasets, model_selection, tree

boston = datasets.load_boston()

x_train, x_test, y_train, y_test = model_selection.train_test_split(boston.data,boston.target, random_state=30)

dt  = tree.DecisionTreeRegressor()

dt_reg = dt.fit(x_train, y_train)

然后将预测的 y 值放入 y_pred 变量中,如下所示:

y_pred = dt_reg.predict(X_test)

最后,您可以使用:

y_pred[0:n]

n 显示您要显示的结果数。用 2 代替 "n"

【讨论】:

【参考方案2】:

出于演示目的,让我们看看完整的代码。假设您像这样训练回归模型:

from sklearn import datasets, model_selection, tree

boston = datasets.load_boston()

x_train, x_test, y_train, y_test = model_selection.train_test_split(boston.data,boston.target, random_state=30)

dt  = tree.DecisionTreeRegressor()

dt_reg = dt.fit(x_train, y_train)

现在打印traintest 分数:

print(dt_reg.score(x_train, y_train))
print(dt_reg.score(x_test, y_test))
>> 1.0
>> 0.5826465689845075

让我们看看测试数据的预测是什么样子的:

predicted = dt_reg.predict(x_test)
print(predicted)
>> array([18.2, 12.8, 20.1, 30.1, 14.5, .....])

现在选择并打印前两个测试样本的预测输出:

for i in predicted[:2]:
    print(i)
>> 18.2
>> 12.8

【讨论】:

以上是关于构建决策树回归模型并预测样本的输出 - 机器学习的主要内容,如果未能解决你的问题,请参考以下文章

机器学习中---分类模型--决策树模型

机器学习系列(三十六)——回归决策树与决策树总结

从机器学习输出中获取输入

机器学习笔记之三CART 分类与回归树

机器学习——树回归

机器学习基本概念和模型训练基本问题