Я использую пакет биокондуктора MLSeq
на Ubuntu с R версии 3.1.2. Я пробовал работать через the example provided by the package, и это работает отлично. Тем не менее, я хочу использовать метод bagsvm
для функции classify
, поэтому в chunk 14
, я изменил код изФункция каретки 'train' не подходит для мешков svm
svm <- classify(data = data.trainS4, method = "svm", normalize = "deseq",
deseqTransform = "vst", cv = 5, rpt = 3, ref = "T")
в
bagsvm <- classify(data = data.trainS4, method = "bagsvm", normalize = "deseq",
deseqTransform = "vst", cv = 5, rpt = 3, ref = "T")
который произвел ошибку:
Something is wrong; all the Accuracy metric values are missing:
Accuracy Kappa
Min. : NA Min. : NA
1st Qu.: NA 1st Qu.: NA
Median : NA Median : NA
Mean :NaN Mean :NaN
3rd Qu.: NA 3rd Qu.: NA
Max. : NA Max. : NA
NA's :1 NA's :1
Error in train.default(counts, conditions, method = "bag", B = B, bagControl = bagControl(fit = svmBag$fit, :
Stopping
In addition: There were 17 warnings (use warnings() to see them)
Предупреждения:
Warning messages:
1: executing %dopar% sequentially: no parallel backend registered
2: In eval(expr, envir, enclos) :
model fit failed for Fold1.Rep1: vars=150 Error in fitter(btSamples[[iter]], x = x, y = y, ctrl = bagControl, v = vars, :
task 1 failed - "could not find function "lev""
предупреждение-затем повторяется 14 раз следует:
17: In nominalTrainWorkflow(x = x, y = y, wts = weights, info = trainInfo, ... :
There were missing values in resampled performance measures.
traceback()
производство
4: stop("Stopping") 3: train.default(counts, conditions, method = "bag", B = B, bagControl = bagControl(fit = svmBag$fit, predict = svmBag$pred, aggregate = svmBag$aggregate), trControl = ctrl, ...) 2: train(counts, conditions, method = "bag", B = B, bagControl = bagControl(fit = svmBag$fit, predict = svmBag$pred, aggregate = svmBag$aggregate), trControl = ctrl, ...) 1: classify(data = data.trainS4, method = "bagsvm", normalize = "deseq", deseqTransform = "vst", cv = 5, rpt = 3, ref = "T")
Я думал, что проблема может быть, что kernlab
библиотеки, которую я думаю, MLSeq код использует Ждет» t загрузился, поэтому я попробовал
library(kernlab)
bagsvm <- classify(data = data.trainS4, method = "bagsvm", normalize = "deseq",
deseqTransform = "vst", cv = 5, rpt = 3, ref = "T")
который привел к той же ошибке, но th е предупреждения изменено на:
Warning messages: 1: In eval(expr, envir, enclos) : model fit failed for Fold1.Rep1: vars=150 Error in fitter(btSamples[[iter]], x = x, y = y, ctrl = bagControl, v = vars, : task 1 failed - "no applicable method for 'predict' applied to an object of class "c('ksvm', 'vm')""
повторяют 15 раз с последующим
16: In nominalTrainWorkflow(x = x, y = y, wts = weights, info = trainInfo, ... :
There were missing values in resampled performance measures.
Я не считаю, что это проблема специфична для MLSeq
как я попытался запустить функцию train
, как
ctrl <- trainControl(method = "repeatedcv", number = 5,
repeats = 3)
train <- train(counts, conditions, method = "bag", B = 100,
bagControl = bagControl(fit = svmBag$fit, predict = svmBag$pred,
aggregate = svmBag$aggregate), trControl = ctrl)
где counts
- это кадр данных с данными RNASeq, а conditions
- фактор с классами, и я получил тот же результат s. Буду признателен за любую оказанную помощь.
Я попробовал ваше предложение, и в данных не было отсутствующих значений. Когда я попытался увеличить значение «B» до 1000, я получил те же ошибки, но предупреждения изменились на «In .local (x, ...): Variable (s)» constant. Невозможно масштабировать данные. «Я пробовал все это прямо в функции« train », как показано в последней строке кода выше, поэтому он не может быть специфичным для реализации' MLSeq' с помощью 'bagsvm'. – Barker
В нем говорится, что «переменные константы» b/c у вас есть несколько уровней, которые представлены только один раз, к тому времени, когда вы разбиваете на 1000 групп. Если ни одно из предложений не работает, найдите другой набор данных, который, как вы знаете, будет чистым, и посмотрите, будет ли он работать для вас. –
Все ошибки и предупреждения, которые я перечислял, взяты из набора данных, предоставленного создателями пакета 'MLSeq', а не мои данные. Есть ли другой источник данных, который вы рекомендуете, или лучший способ оценить данные как «чистые»? Однако я не думаю, что проблема заключается в данных. Если вы посмотрите на ответ, опубликованный ниже, я смог заставить эту функцию работать, сохраняя функцию «предсказать» для классификатора в другой переменной, но я не знаю, почему это исправлено. – Barker