【问题标题】:Iterating through multiple C values in R's ksvm遍历 R 的 ksvm 中的多个 C 值
【发布时间】:2018-10-29 21:31:57
【问题描述】:

是否有一种简单的方法可以遍历多个 C 值并显示前 5 个结果?

我有这样的 ksvm 设置:

# call ksvm
model <-  ksvm(as.matrix(data[,1:10]),as.factor(data[,11]),type="C-svc",kernel="vanilladot",C=100, scaled=TRUE)
# calculate a1.am
a <- colSums(model@xmatrix[[1]] * model@coef[[1]])
a
# calculate a0
a0 <- -model@b
a0
# view predictions
pred <- predict(model,data[,1:10])
pred
# get model accuracy
sum(pred == data[,11]) / nrow(data) 

想知道是否有一种简单的方法可以遍历 C 参数范围内的所有值(例如 0.00001 - 10000000)并仅打印前 5 个?

我是 R 新手,但我想我想做这样的事情:

allC = c(0.0001:10000000)
results=list()
for(i in 1:length(allC)){
  model <-  ksvm(as.matrix(data[,1:10]),as.factor(data[,11]),type="C-svc",kernel=vanilladot,C=allC[[i]],scaled=TRUE)
  results[[i]]=data.table(kernel=vanilladot,accuracy=sum(pred == data[,11]) / nrow(data))
}
rbindlist(results)

【问题讨论】:

    标签: r svm kernlab


    【解决方案1】:

    你可以使用 seq() 函数代替 allC = c(0.0001:10000000),详情见 ?seq。

    之后,将 rbindlist(results) 分配给一个对象:

    results_dt = rbindlist(results)
    results_dt[order(-accuracy)][1:5] #this will give you top 5 w.r.t accuracy
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 1970-01-01
      • 2014-04-28
      • 1970-01-01
      • 2017-04-01
      相关资源
      最近更新 更多