You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过K折交叉验证结合GridSearchCV微调SVM超参数

SVM模型结合GridSearchCV与自定义KFold的实现方案

你实例化的KFold对象可以直接传入GridSearchCV的cv参数,无需手动编写K折遍历逻辑,GridSearchCV会自动基于你指定的拆分规则完成超参数搜索和交叉验证,调整后的代码如下:

import numpy as np
from sklearn import svm
from sklearn.model_selection import KFold, GridSearchCV
from sklearn.metrics import accuracy_score, precision_score, f1_score, recall_score

# 原有数据处理逻辑不变
X = Corpus.drop(['text','ManipulativeTag','compound'],axis=1).values  # 这里因为适配朴素贝叶斯需求去掉了compund列
y = Corpus['ManipulativeTag'].values

# 原有KFold定义不变,复用你设定的拆分规则:5折、打乱、固定随机种子
kf = KFold(n_splits=5, shuffle=True, random_state=1)

# 定义SVM基模型
base_svm = svm.SVC(random_state=1111, probability=True)

# 定义超参数搜索网格,可根据需求调整参数取值范围
grid_param = {
    'C': [0.1, 1, 10, 100],
    'kernel': ['linear', 'rbf', 'poly']
}

# 初始化GridSearchCV,直接传入自定义的kf作为cv参数
grid_search = GridSearchCV(
    estimator=base_svm,
    param_grid=grid_param,
    # 同时统计你需要的所有评估指标
    scoring=['accuracy', 'precision', 'f1', 'recall'],
    # 最优参数选择基于准确率,可根据需求调整为其他指标
    refit='accuracy',
    cv=kf,
    n_jobs=-1
)

# 执行超参数搜索,自动完成K折交叉验证
grid_search.fit(X, y)

# 获取最优超参数
print("最优超参数:", grid_search.best_params_)
# 获取训练完成的最优SVM模型
best_svm = grid_search.best_estimator_

# 查看各折的各指标得分,和你原有手动统计的结果逻辑完全一致
cv_results = grid_search.cv_results_
for i in range(5):
    print(f"第{i}折准确率:", cv_results[f'split{i}_test_accuracy'][grid_search.best_index_])
    print(f"第{i}折精确率:", cv_results[f'split{i}_test_precision'][grid_search.best_index_])
    print(f"第{i}折F1值:", cv_results[f'split{i}_test_f1'][grid_search.best_index_])
    print(f"第{i}折召回率:", cv_results[f'split{i}_test_recall'][grid_search.best_index_])

关键改动说明

  • 无需保留原有手动遍历KFold拆分的循环逻辑,GridSearchCV内置了交叉验证流程,会自动复用你定义的kf的拆分规则
  • scoring参数支持传入多指标列表,你不需要手动计算每个折的评估得分,所有结果会保存在cv_results_属性中
  • refit参数指定了用哪个指标选择最优超参数,选择完成后会自动用全量数据重新训练最优模型

内容的提问来源于stack exchange,提问作者deLaJU

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 19:18:02