有没有一种有效的方法来使用 Python 处理决策树中的修剪?
目前我正在这样做:
def do_best_tree(Xtrain, ytrain, Xtest, ytest):
clf = DecisionTreeClassifier()
clf.fit(Xtrain, ytrain)
path = clf.cost_complexity_pruning_path(Xtrain, ytrain)
ccp_alphas = path.ccp_alphas
clfs = []
for ccp_alpha in tqdm(ccp_alphas):
clf = DecisionTreeClassifier(ccp_alpha=ccp_alpha)
clf.fit(Xtrain, ytrain)
clfs.append(clf)
return max(clfs, key=lambda x:x.score(Xtest, ytest))
但它超级慢(因为我创建并适应了很多树)。
使用 scikit-learn 或其他处理此问题的库是否有更有效的方法?