Использование пакета penalizedSVM
R, я пытаюсь сделать выбор функции. Существует список из нескольких data.frames, называемых trainingdata.Выбор функции SVM с использованием SCAD
trainingdata <-lapply(trainingdata, function(data)
{
levels(data$label) <- c(-1, 1)
train_x<-data[, -1]
train_x<-data.matrix(train_x)
trainy<-data[, 1]
print(which(!is.finite(train_x)))
scad.fix<-svm.fs(train_x, y=trainy, fs.method="scad",
cross.outer=0, grid.search="discrete",
lambda1.set=lambda1.scad, parms.coding="none",
show="none", maxIter=1000, inner.val.method="cv",
cross.inner=5, seed=seed, verbose=FALSE)
data <- data[c(1, scad.fix$model$xind)]
data
})
Некоторые итерации идут хорошо, но затем на одном data.frame. Я получаю следующее сообщение об ошибке.
[1] "feature selection method is scad"
Error in svd(m, nv = 0, nu = 0) : infinite or missing values in 'x'
Calls: lapply ... scadsvc -> .calc.mult.inv_Q_mat2 -> rank.condition -> svd
Используя следующий вызов, я также проверки, является ли х действительно бесконечна, но вызов возвращает 0 для всех предыдущих и текущей data.frame, где произошла ошибка.
print(which(!is.finite(train_x)))
Есть ли другой способ проверить бесконечные значения? Что еще можно сделать, чтобы исправить эту ошибку? Есть ли способ определить индекс текущего кадра данных, обрабатываемый в течение нескольких секунд?
Спасибо. После обновления кода я все равно получаю такое же сообщение об ошибке. Хотя я вручную проверил данные и не было никаких значений INF. – Shahzad
@Shahzad, вероятно, тогда бесконечные значения связаны с некоторыми шагами вычислений в функции 'svm.fs' ... – agstudy
Сообщение http://stackoverflow.com/questions/4906995/matrix-calculation-error предполагает, что существует условие в начале функции svd if (any (! is.finate (x))) stop ("бесконечные или отсутствующие значения в 'x'") – Shahzad