Итерация по нескольким значениям C в R's ksvm - PullRequest
0 голосов
/ 19 мая 2018

Есть ли простой способ перебирать несколько значений 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)

1 Ответ

0 голосов
/ 19 мая 2018

вместо allC = c (0,0001: 10000000), вы можете использовать функцию seq (), подробнее см.? Seq.

После этого присвойте объекту rbindlist (результаты):

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