我是scikit learn的新手,所以请原谅我的无知。使用GridsearchCV,我正在尝试优化DecisionTreeRegressor。我使参数空间越宽,评分就越差。
将min_samples_split设置为 range(2,10) 会给我一个 -0.04 的neg_mean_squared_error。当将其设置为范围(2,5)时,分数为-0.004。
simple_tree =GridSearchCV(tree.DecisionTreeRegressor(random_state=42), n_jobs=4, param_grid={'min_samples_split': range(2, 10)}, scoring='neg_mean_squared_error', cv=10, refit='neg_mean_squared_error')
simple_tree.fit(x_tr,y_tr).score(x_tr,y_tr)
与不太广泛的网格搜索相比,我希望更广泛的网格搜索获得相同或更积极的分数。
你是对的,当你有更多的参数时,你应该有一个接近0的指标......如果你真的每次都比较相同的模型。您提供的代码中不是这种情况,因为您尚未在决策树中设置random_state
参数。
做DecisionTreeRegressor(random_state = 42)
(或任何整数),你应该有更明智的结果。
使用 simple_tree.best_score_ 给出所有 CV 折叠的平均最佳分数。