簡體   English   中英

遍歷R的ksvm中的多個C值

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

有沒有一種簡單的方法可以迭代多個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)

可以使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM