【发布时间】:2013-05-23 14:07:21
【问题描述】:
如何在 sci-kit learn 中使用 GridSearchCV 获得一致的答案?我假设我得到不同的答案 b/c 不同的随机数导致每次运行时折叠都不同,尽管我的理解是下面的代码应该解决这个问题,因为 KFold 默认具有 shuffle=False。
clf = GridSearchCV(SVC(), param_grid, cv=KFold(n, n_folds=10))
【问题讨论】:
-
一些估算器有
random_state,这可能会改变结果。SVC应该是确定性的,正如您观察到的KFold。您确定脚本的其余部分是确定性的吗? -
非常肯定。
SVC的predict_proba()输出是确定性的吗?如果我没记错的话,会运行交叉验证来估计一些用于确定概率的参数,但这是在 LIBSVM 中完成的,我也认为是确定性的。我问 b/c 我实际上并没有使用SVC,而是我创建的一个名为ProbSVC的子类,它将predict映射到predict_proba -
看来
predict_proba()不是确定性的…… -
是的,
predict_proba进行了 5 倍(我认为)交叉验证来校准概率输出。此外,您应该使用Scorer接口而不是子类化 imho ;) -
在使用
Scorer之前等待开发版本发布...我还不够专业,无法使用最前沿:)
标签: python machine-learning scikit-learn