简体   繁体   English

遍历R的ksvm中的多个C值

[英]Iterating through multiple C values in R's ksvm

Is there an easy way to iterate through multiple C values and display the top 5 results? 有没有一种简单的方法可以迭代多个C值并显示前5个结果?

I have ksvm set up like this: 我有这样的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) 

and want to know if there's an easy way to iterate through all values in a range for the C parameter (say 0.00001 - 10000000) and print only the top 5? 并想知道是否有一种简便的方法来遍历C参数范围内的所有值(例如0.00001-10000000)并仅打印前5个?

I'm new to R, but I think I want to do something like this: 我是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)

instead of allC = c(0.0001:10000000), you can make use of seq() function, see ?seq for details. 可以使用seq()函数代替allC = c(0.0001:10000000),有关详细信息,请参见?seq。

After that, assign rbindlist(results) to an object: 之后,将rbindlist(results)分配给一个对象:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM