我使用GridSearchCV来调整SVM分类器,然后绘制一条学习曲线。然而,除非我在绘制学习曲线之前设置一个新的分类器,否则我会遇到一个索引器,而且我不太清楚原因。在
我的简历/分类器设置如下:# 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”线处会出现以下错误:
^{pr2}$
IndexError: index 663 is out of bounds for size 70
但是,如果我换了一个新的Classifier,那么一切正常:# 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)
为什么会这样?在此之前,我非常感谢您,并欢迎您对我有问题的执行情况发表其他意见。在