【发布时间】:2020-05-01 19:40:06
【问题描述】:
我正在处理一个包含 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
【问题讨论】:
标签: python scikit-learn