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

如何在caret中使用已调优参数构建SVM模型?

用caret基于最优参数直接构建SVM模型的方法

当你已经得到最优参数(sigma=0.1263203,C=4)后,有两种常用方式直接构建模型,避免重复调参:

方法一:在caret的train()中指定固定参数

直接通过tuneGrid参数传入最优参数,让train()跳过调参流程,直接用指定参数训练模型。同时保持预处理、训练控制等设置和调参阶段一致,确保模型结果一致。

修改后的代码如下:

library(caret)
data("mtcars")

set.seed(100)
mydata = mtcars[, -c(8,9)]

# 定义最优参数网格
tune_grid <- data.frame(sigma = 0.1263203, C = 4)

# 直接用最优参数训练模型
model_svmr_final <- train(
  hp ~ ., 
  data = mydata, 
  tuneGrid = tune_grid,  # 指定固定参数
  method = "svmRadial", 
  metric = "RMSE", 
  preProcess = c('center', 'scale'),
  trControl = trainControl(
    method = "repeatedcv", 
    number = 5, 
    repeats = 2, 
    verboseIter = FALSE  # 可关闭迭代日志减少输出
    )
  )

# 验证参数是否正确
model_svmr_final$bestTune

方法二:直接调用底层kernlab包的ksvm()函数

caret的svmRadial方法底层依赖kernlab包的ksvm(),直接调用该函数更轻量化,只需同步预处理步骤即可:

library(caret)
library(kernlab)
data("mtcars")

set.seed(100)
mydata = mtcars[, -c(8,9)]

# 执行和调参阶段一致的预处理
preProc <- preProcess(mydata[, -which(names(mydata) == "hp")], 
                      method = c('center', 'scale'))
data_processed <- predict(preProc, mydata)

# 用最优参数训练SVM模型
model_svmr_direct <- ksvm(hp ~ ., 
                          data = data_processed,
                          kernel = "rbfdot",  # 对应径向基核
                          kpar = list(sigma = 0.1263203),  # 设置sigma
                          C = 4)  # 设置惩罚参数C

# 查看模型详情
model_svmr_direct

额外提示

  • 务必保证预处理步骤和调参阶段完全一致,否则模型结果会出现偏差。
  • 若后续需要复用模型,可执行save(model_svmr_final, file = "svm_model.RData")保存模型,之后用load("svm_model.RData")直接加载,无需重新训练。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 01:20:34