在上一篇文章中,介绍了Sklearn使用决策树训练分类模型,但在模型构建过程中,出现了拟合的问题。本文主要介绍两种剪枝方式,并使用GridSearchCV网格搜索方式,找到最优参数。
剪枝方法
max_deep:树的最大深度
min_samples_leaf:叶子节点所需的最小样本数,可以是数字也可以是比例
代码示例
classifier1 = DecisionTreeClassifier(max_depth=6) classifier2 = DecisionTreeClassifier(min_samples_leaf=6) classifier3 = DecisionTreeClassifier(max_depth=6, min_samples_leaf=6)
OUTPUT
score_train: 0.9378571428571428 score_test: 0.8933333333333333 score_train: 0.9428571428571428 score_test: 0.9066666666666666 score_train: 0.9185714285714286 score_test: 0.9
GridSearchCV
GridSearchCV可以拆分为两个部分,GridSearch(网格搜索)和CV(交叉验证)。网格搜索即在指定的参数范围内,按步长依次调整参数,在所有参数组合中,找到验证精度最高的参数。K折CV验证,即将训练数据分成K份,取其中一份作为验证集,其余K-1份作为训练集,重复k次。
代码示例
from sklearn.model_selection import GridSearchCV classifier = DecisionTreeClassifier() params = { 'max_depth': range(1, 10), 'min_samples_leaf': range(1, 20) } grid_search = GridSearchCV( classifier, param_grid = params, scoring = 'accuracy', cv=5 ) grid_search.fit(data, target) print(grid_search.best_params_) # OUTPUT # {'max_depth': 7, 'min_samples_leaf': 12}
本文为 陈华 原创,欢迎转载,但请注明出处:http://ichenhua.cn/read/255
- 上一篇:
- 顺序查找算法和二分查找算法
- 下一篇:
- Sklearn决策树泰坦尼克号幸存者预测