我有一个任务,它要求我:
使用超参数调优从前面的步骤中改进模型的性能,并根据您选择的度量(或度量)使用网格搜索来选择最终的最优模型。选择一个给定任务的最优模型(在特定领域上比较多个回归者)需要选择性能度量,例如,R2(确定系数)和/或RMSE (根均方误差)来比较模型的性能。
我使用这段代码进行超参数调优:
model_example = GradientBoostingRegressor()
parameters = {'learning_rate': [0.1, 1],
'max_depth': [5,10]}
model_best = GridSearchCV(model_example,
param_grid=parameters,
cv=2,scoring='r2').fit(X_train_new,y_train_new)
model_best.best_estimator_我发现了我选择的学习rate=0.1和max_dept=5作为性能度量,但是当我使用这段代码提供我最好的模型时,它对我的模型的准确性没有任何影响:
my_best_model = GradientBoostingRegressor(learning_rate=0.1,
max_depth=5).fit(X_train_new,y_train_new)
my_best_model.score(X_train_new,y_train_new)你知道我的工作有什么问题吗?
发布于 2019-03-14 19:01:56
尝试将random_state设置为GradientBoostingRegressor()的参数。例如,GradientBoostingRegressor(random_state=1)。
然后,该模型将在相同的数据上产生相同的结果。如果没有这个参数,就会有一个随机性因素,使得比较不同的模型很困难。
在火车测试分割上设置一个随机状态也会对此有所帮助.
https://stackoverflow.com/questions/55170063
复制相似问题