我是scikit学习的新手,请原谅我的无知。使用GridsearchCV,我正在尝试优化DecisionTreeRegressor。我设置的参数空间越广,得分就越差。
将min_samples_split设置为range(2,10)会使我的neg_mean_squared_error为-0.04。设置为range(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 :(得分:2)
您是对的,当有更多参数时,应该有一个接近0的指标。如果您确实每次都在比较 相同 模型。在您提供的代码中情况并非如此,因为您尚未在决策树中设置random_state
参数。
执行DecisionTreeRegressor(random_state = 42)
(或任何整数),您应该得到更明智的结果。
答案 1 :(得分:0)
使用simple_tree.best_score_可以得出所有CV折叠的平均最佳分数。