关于k折交叉验证的建议

时间:2015-11-16 15:56:24

标签: python svm cross-validation

我目前正在使用代码执行交叉验证方法,该方法使用支持向量机对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 个答案:

答案 0 :(得分:0)

尝试使用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]))

将为您提供指定

的最佳选项