我用python实现决策树。我使用网格搜索进行交叉验证,以识别树的最佳模型参数。
dtc = DecisionTreeClassifier()
parameter_grid = {'splitter': ['best', 'random'],
'min_samples_split': [2, 3, 4, 5, 6, 7, 8, 9, 10],
'min_samples_leaf': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'criterion': ['gini', 'entropy'],
'random_state': [0],
'max_depth':[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
}
cross_validation = StratifiedKFold(n_splits=10)
grid_search = GridSearchCV(dtc, param_grid=parameter_grid, cv=cross_validation)
grid_search.fit(x, y)
dtree = grid_search.best_estimator_
dtree.fit(x,y)
该图显示了结果树,其中grid_search.best_params_组合获得了最佳的grid_search.best_score_。
我不明白为什么树的左分支中的右终端节点仍然具有[97,148]的值。我不明白为什么在交叉验证和网格搜索过程中,模型参数的其他组合会再次拆分此终端节点,但没有得到更好的准确性。我真的没有这个终端节点的解释,一点也不纯粹。有人可以解释为什么具有这种终端节点的树比具有进一步拆分的树具有更好的准确性吗?