我正在构建树分类器,我想检查并修复可能的过度拟合。 这些是计算结果:
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)
为了获得更好的结果,我可以修正哪些可能的值?也许这些值已经很好了?
谢谢您的帮助,我是一个初学者,因此不确定结果。
答案 0 :(得分:0)
不确定确切是否过拟合,但由于以下原因,您可以尝试gridSearchCV
您可以通过创建各种参数及其值的字典来添加各种参数
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_
您也可以尝试Recursive Feature Elimination with CV来找到最佳功能。 (顺便说一下,这是可选的操作)
您可以检查其他指标,例如精度,召回率,f1-分数等,以了解您的决策树是否未过度拟合数据(或相对于其他类别重视一类)
此外,请注意,您的数据不会受到类不平衡问题的困扰。
这不是详尽的清单,也不一定是检查过度拟合的最佳方法,但您可以尝试一下。