Я реализую деревья решений с помощью Python.Я делаю перекрестную проверку с помощью grid-поиска, чтобы определить оптимальные параметры модели дерева.
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_.
![enter image description here](https://i.stack.imgur.com/BDeme.jpg)
Я не понимаю, почему правый конечный узел в левой ветви дерева все еще имеет значения = [97, 148].Я не понимаю, почему другие комбинации параметров модели, которые снова разделяют этот конечный узел, не получают лучшую точность при перекрестной проверке и поиске по сетке.У меня действительно нет объяснения этому терминальному узлу, совсем не чисто.Может кто-нибудь объяснить, почему дерево с таким терминальным узлом получает лучшую точность, чем дерево с дальнейшим разбиением?