# 先来确定一个字典
# 这个字典保存就是所有参数大致的一个最优的范围
Xtrain, Xtest, Ytrain, Ytest = train_test_split(X, Y, test_size = 0.3, random_state = 41)
params = {
\'max_depth\' : [2,3,4,5,6,7],
\'min_samples_leaf\' : [6,7,8,9],
\'min_impurity_decrease\' : [0, 0.005,0.01,0.015,0.02]
}
# 导入sklearn明星之一
from sklearn.model_selection import GridSearchCV
# 实例化决策树模型
model = DecisionTreeClassifier()
# 构建网格搜索对象
gs_model = GridSearchCV(model, params, cv = 5, scoring = \'accuracy\')
# 非常重要一点
# gs_model继承了所有的model的功能,放进去决策树模型,gs_model继承了它, gs_model也是一个决策树模型
# 不仅仅gs_model是一个决策树模型,而且它在训练的过程中,会自动通过交叉验证去找最优的参数
gs_model.fit(Xtrain, Ytrain)
# 数据量很少,所以训练的特别快
# 可以将最优的参数拿出来
print(gs_model.best_params_)
# 具体最优参数下交叉验证的精准度是多少了
print(gs_model.best_score_)
# 最好的参数已经找到了,其实对于gs_model来说,它就是一个决策树,最优的参数已经保存到了gs_model
gs_model.score(Xtrain, Ytrain), gs_model.score(Xtest, Ytest)