关于 k 折交叉验证的建议
Posted
技术标签:
【中文标题】关于 k 折交叉验证的建议【英文标题】:Advice on k fold cross validation 【发布时间】:2016-02-17 19:02:05 【问题描述】:我目前正在使用代码对dicom图像进行支持向量机分类的交叉验证方法:
#Cross Validation using k-folds
clf = svm.SVC(kernel='linear')
scores = cross_validation.cross_val_score(clf,X,Y,cv=16))
print scores
print("Accuracy: %0.2f (+/- %0.2f)" % (scores.mean(),scores.std()*2))
如您所见,我目前正在使用 16 次折叠,我如何找出最佳使用次数?是不是越多越好?
另外,我发现在使用交叉验证时,我的准确度分数从 66% 到 100% 变化很大,通常平均准确率为 82% 到 85%。关于如何改进这一点,或者确保分类器从每个类中挑选相同数量的图像,有什么建议吗?
抱歉,我对 Python 很陌生!
感谢您的建议!
【问题讨论】:
【参考方案1】:尝试使用 GridSearchCV。例如,我可以创建一个管道,例如
pipeline = Pipeline([
('clf', LogisticRegression())
])
parameters =
'clf__C': (0.1, 1, 10, 20, 30)
所以,我在这里为我的 LogisticRegression() 分类器的 C 参数提供 5 个不同的选项,在我的管道中由 clf 表示
当然,您可以使用 SVC 代替 LogisticRegression()。那么
grid_search = GridSearchCV(pipeline, parameters, n_jobs=3, verbose=1, scoring='accuracy')
然后就像
bestParameters = grid_search.best_estimator_.get_params()
for param_name in sorted(parameters.keys()):
print ('\t %s: %r' % (param_name, bestParameters[param_name]))
会给你最好的一组选项来指定
【讨论】:
以上是关于关于 k 折交叉验证的建议的主要内容,如果未能解决你的问题,请参考以下文章
交叉验证(cross validation)是什么?K折交叉验证(k-fold crossValidation)是什么?