决策树回归模型以最高的精度得到模型的最大深度值



使用默认参数,从X_train集和Y_train标签构建决策树回归器模型。将模型命名为dt_reg。

评估训练数据集上的模型准确性,并打印其分数。

在测试数据集上评估模型的准确性,并打印其分数。

预测X_test集前两个样本的房价并打印出来。(提示:使用predict((函数(

在X_train数据和Y_train标签上拟合多个决策树回归,最大深度参数值从2变为5。

评估每个模型在测试数据集上的准确性。

提示:使用for循环

以最高精度打印模型的最大深度值。

import sklearn.datasets as datasets
from sklearn.model_selection import train_test_split 
from sklearn.tree import DecisionTreeRegressor
import numpy as np
np.random.seed(100) 
boston = datasets.load_boston()
X_train, X_test, Y_train, Y_test = train_test_split(boston.data, boston.target, random_state=30)
print(X_train.shape)
print(X_test.shape)
dt_reg = DecisionTreeRegressor()   
dt_reg = dt_reg.fit(X_train, Y_train) 
print(dt_reg.score(X_train,Y_train))
print(dt_reg.score(X_test,Y_test))
y_pred=dt_reg.predict(X_test[:2])
print(y_pred)

我想要以最高精度打印模型的最大深度值。但是壁画剧本没有提交让我知道什么是错误的。

max_reg = None
max_score = 0  
t=()
for m in range(2, 6) :
rf_reg = DecisionTreeRegressor(max_depth=m)
rf_reg = rf_reg.fit(X_train, Y_train) 
rf_reg_score = rf_reg.score(X_test,Y_test)
print (m, rf_reg_score ,max_score) 
if rf_reg_score > max_score :
max_score = rf_reg_score
max_reg = rf_reg
t = (m,max_score) 
print (t)

如果您希望继续使用循环,可以创建另一个名为"best_max_depth"的变量,并在满足If语句条件的情况下将其值替换为dt_reg.max_depth[这是迄今为止最好的模型]。

然而,我建议您查看GridSearchCV,从最佳模型中提取参数,并循环使用不同的参数值。

max_reg = None
max_score = 0  
best_max_depth = None
t=()
for m in range(2, 6) :
rf_reg = DecisionTreeRegressor(max_depth=m)
rf_reg = rf_reg.fit(X_train, Y_train) 
rf_reg_score = rf_reg.score(X_test,Y_test)
print (m, rf_reg_score ,max_score) 
if rf_reg_score > max_score :
max_score = rf_reg_score
max_reg = rf_reg

best_max_depth = rf_reg.max_depth

t = (m,max_score) 
print (t)

试试这个代码-

myList = list(range(2,6))
scores =[]
for i in myList:
dt_reg = DecisionTreeRegressor(max_depth=i)
dt_reg.fit(X_train,Y_train)
scores.append(dt_reg.score(X_test, Y_test))
print(myList[scores.index(max(scores))])

最新更新