Я работаю с набором данных, который имеет 170 объектов и 26000 наблюдений. Когда я подгоняю модель DecisionTreeClassifier к этому набору данных без каких-либо ограничений, он создает дерево со всеми 170 объектами и 8173 узлами. Тем не менее, когда я пытаюсь ограничить возможности дерева с помощью max_leaf_nodes и max_features (как показано ниже) и выводить на печать функции полученного дерева, они не учитывают параметры, которые я передаю классификатору. Почему это происходит? На данный момент я не позаботился о том, чтобы очистить набор данных коллинеарных переменных, поэтому я полагаю, что это может повлиять на мою классификацию, но я все еще удивлен, что функция, кажется, игнорирует параметры, которые я ей предоставляю (но это не кажется полностью игнорировать их, поскольку оно не создает того же дерева, что и без каких-либо ограничений).
tuned_tree = DecisionTreeClassifier(max_leaf_nodes=1000, max_features=40)
tuned_tree.fit(X_train, y_train)
print("Number of features: {}".format(tuned_tree.tree_.n_features))
print("Number of nodes (leaves): {}".format(tuned_tree.tree_.node_count),"\n")
Вывод:
Количество функций: 170
Количество узлов (листьев): 1999