作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 GridSearchCV 来调整 SVM 分类器,然后绘制学习曲线。然而,除非我在绘制学习曲线之前设置一个新的分类器,否则我会遇到 IndexError 并且我不太确定为什么。
我的简历/分类器设置如下:
# Set up classifier
clf_untuned = OneVsRestClassifier(SVC(kernel='rbf', random_state=0, max_iter=1000))
cv = cross_validation.ShuffleSplit(data_image.shape[1], n_iter=10,
test_size=0.1, random_state=0)
# Use cross validation / grid search to find optimal hyperparameters
if TRAINING_CROSS_VALIDATION == 1:
params = {
...
}
clf_tuned = GridSearchCV(clf_untuned, cv=cv, param_grid=params)
clf_tuned.fit(x_train, y_train)
print('Best parameters: %s' % clf_tuned.best_params_)
else:
clf_tuned = OneVsRestClassifier(SVC(kernel='rbf',
C=100, gamma=0.00001, random_state=0, verbose=0))
clf_tuned.fit(x_train, y_train)
然后我继续绘制学习曲线,其中plot_learning_curve 复制了 sklearn 示例 ( http://scikit-learn.org/stable/auto_examples/model_selection/plot_learning_curve.html )。如果我使用以下代码,则会在plot_learning_curve 中的“learning_curve”行收到以下错误:
# Plot learning curve for best params -- yields IndexError
plot_learning_curve(clf_tuned, title, x_train, y_train, ylim=(0.6, 1.05), cv=cv)
IndexError: index 663 is out of bounds for size 70
但是,如果我启动一个新的分类器,那么一切正常:
# Plot learning curve for best params -- functions correctly
estimator = OneVsRestClassifier(SVC(kernel='rbf',
C=100, gamma=0.00001, random_state=0, verbose=0))
plot_learning_curve(estimator, title, x_train, y_train, ylim=(0.6, 1.05), cv=cv)
这是为什么呢?非常感谢,欢迎对我的可疑实现提出其他意见。
最佳答案
通过将网格搜索获得的最佳估计器传递为 clf_tuned.best_estimator_ 解决了该问题
关于Python sklearn : why must I set up a new estimator to plot a learning curve?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37149979/
我是一名优秀的程序员,十分优秀!