Python 决策树-是否过于合适?

Python 决策树-是否过于合适?,python,scikit-learn,classification,decision-tree,Python,Scikit Learn,Classification,Decision Tree,我正在建立一个树分类器,我想检查和修复可能的过度拟合。 以下是计算: dtc = DecisionTreeClassifier(max_depth=3,min_samples_split=3,min_samples_leaf=1, random_state=0) dtc_fit = dtc.fit(X_train, y_train) print("Accuracy using Decision Tree:" ,round(score, 1), "%") ('Accuracy using De

我正在建立一个树分类器,我想检查和修复可能的过度拟合。 以下是计算:

dtc = DecisionTreeClassifier(max_depth=3,min_samples_split=3,min_samples_leaf=1, random_state=0)
dtc_fit = dtc.fit(X_train, y_train)

print("Accuracy using Decision Tree:" ,round(score, 1), "%")

('Accuracy using Decision Tree:', 92.2, '%')


scores = cross_val_score(dtc_fit, X_train, y_train, cv=5)
print("Accuracy: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() * 2))
Accuracy: 0.91 (+/- 0.10)
为了得到更好的结果,我可以修改哪些可能的值,或者这些值已经很好了


谢谢你的帮助,我是一个初学者,因此不确定结果。

不确定它是否过合适,但你可以尝试一下,原因如下

  • 它会将您的数据集拆分为不同拆分的多个组合,因此您将了解决策树是否过度适合您的训练集(尽管这可能不是一种有效的了解方法)
  • 您可以通过制作一个包含各种参数及其值的字典来添加各种参数,如下所示

    from sklearn.grid_search import GridSearchCV
    
    parameters_dict = {"max_depth": [2,5,6,10], "min_samples_split" : [0.1, 0.2, 0.3, 0.4], "min_samples_leaf" = [0.1, 0.2, 0.3, 0.4], "criterion": ["gini","entropy"]}
    
    dtc = DecisionTreeClassifier(random_state= 0)
    
    grid_obj = GridSearchCV(estimator=dtc,param_grid=parameters_dict, cv=10)
    
    grid_obj.fit(X_train,y_train)
    
    #Extract the best classifier
    best_clf = grid_obj.best_estimator_
    
  • 此外,您还可以尝试找到最佳功能。(顺便说一句,这是一件可选的事情)

  • 您可以检查其他指标,如精度、召回率、f1分数等,以了解您的决策树是否过度拟合数据(或是否重视一个类而不是其他类)

  • 另外,作为补充,请确保您的数据不会出现类不平衡问题


这不是一个详尽的列表,也不一定是检查过度拟合的最佳方法,但您可以尝试一下。

数据集的大小是多少?您可能需要增加
min\u samples\u leaf
@erri的值。数据集的大小是368,它不是一个大数据集……它太小,无法实现真正的有效性。这个问题无法回答,因为它高度依赖于问题和数据。