gpt4 book ai didi

machine-learning - 为什么 sklearn.grid_search.GridSearchCV 在每次执行时返回随机结果?

转载 作者:行者123 更新时间:2023-11-30 08:34:53 25 4
gpt4 key购买 nike

我试图使用 sklearn.grid_search.GridSearchCV 在 Iris 数据集上获得决策树分类器的最佳特征。我使用 StratifiedKFold (sklearn.cross_validation.StratifiedKFold) 进行交叉验证,因为我的数据存在偏差。但每次执行 GridSearchCV 时,它都会返回一组不同的参数。
鉴于数据和交叉验证每次都相同,它不应该返回同一组最佳参数吗?

源代码如下:

from sklearn.tree import DecisionTreeClassifier
from sklearn.grid_search import GridSearchCV

decision_tree_classifier = DecisionTreeClassifier()

parameter_grid = {'max_depth': [1, 2, 3, 4, 5],
'max_features': [1, 2, 3, 4]}

cross_validation = StratifiedKFold(all_classes, n_folds=10)

grid_search = GridSearchCV(decision_tree_classifier, param_grid = parameter_grid,
cv = cross_validation)

grid_search.fit(all_inputs, all_classes)

print "Best Score: {}".format(grid_search.best_score_)
print "Best params: {}".format(grid_search.best_params_)

输出:

Best Score: 0.959731543624
Best params: {'max_features': 2, 'max_depth': 2}

Best Score: 0.973154362416
Best params: {'max_features': 3, 'max_depth': 5}

Best Score: 0.973154362416
Best params: {'max_features': 2, 'max_depth': 5}

Best Score: 0.959731543624
Best params: {'max_features': 3, 'max_depth': 3}

这是我最近制作的一个Ipython笔记本的摘录,引用了Randal S Olson的笔记本,可以在here找到.

编辑:它不是导致不同结果的 StratifiedKFoldrandom_state 参数,而是随机初始化的 DecisionTreeClassiferrandom_state 参数树并给出不同的结果(请参阅 documentation )。对于StratifiedKFold,只要将shuffle参数设置为False(默认),它就会生成相同的训练测试分割(请参阅文档)。

最佳答案

训练结果取决于交叉验证中训练数据的分割方式。每次运行时,数据都会随机分割,因此您会观察到答案中的微小差异。您应该使用 random_state parameter of StratifiedKFold确保每次训练数据的分割方式完全相同。

请参阅我的其他答案以了解有关随机状态的更多信息:

关于machine-learning - 为什么 sklearn.grid_search.GridSearchCV 在每次执行时返回随机结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42970400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com