【问题标题】:Is Cross Validation necessary when using SKlearn SVC probability True使用 SKlearn SVC 概率时是否需要交叉验证 True
【发布时间】:2021-08-29 03:31:43
【问题描述】:

我目前正在调整我的 SVM 分类器的超参数。 我当前的实现使用带有 brier_score_loss 评分指标的 SKlearn gridsearchCV。

通过阅读文档,brier_score_loss 将概率作为输入,并为 SKlearn SVC 实现概率 = True 在内部进行 5 折交叉验证。

是否需要对gridsearch进行交叉验证,还是内部5折交叉验证就足够了?

例如,下面我有两种实现,一种使用 5-fold gridsearchCV,另一种仅使用 1 fold。

params = {
    "C": np.logspace(-3, 17, 21),
    "gamma": np.logspace(-20, 1, 21)
    }

grid_search_5_fold = GridSearchCV(estimator = SVC(probability = True), 
                           param_grid = params, 
                           scoring = 'neg_brier_score',
                           n_jobs = -1, 
                           verbose = 2)

grid_search_1_fold = GridSearchCV(estimator = SVC(probability = True), 
                           param_grid = params, 
                           scoring = 'neg_brier_score',
                           n_jobs = -1, 
                           verbose = 2,
                           cv = 1)

grid_search_5_fold.fit(x_train, y_train)

grid_search_1_fold.fit(x_train, y_train)

【问题讨论】:

    标签: python machine-learning scikit-learn svm hyperparameters


    【解决方案1】:

    你可以这样做

    # parameter space for SVM
    # ------------------------
    parameter_space = {'kernel':('linear', 'rbf'), 'C':[0.1,1,10]}
    
    
    # SVM
    clf = GridSearchCV(svm.SVC(gamma='auto'), parameter_space, n_jobs = -1, refit = True, 
    verbose = 10, cv = 5) 
    

    【讨论】:

    • 您好,refit参数不是只有找到最佳超参数后才适合模型吗?我真的只是想确定概率 = True SVC 参数的内部 5 折交叉验证是否足够,或者在网格搜索期间是否需要额外的交叉验证。
    猜你喜欢
    • 1970-01-01
    • 2012-12-31
    • 2019-09-29
    • 2018-08-16
    • 2015-06-11
    • 2018-10-24
    • 2021-11-24
    • 2018-04-26
    • 1970-01-01
    相关资源
    最近更新 更多