Как добавить символы подстановки в функцию kerdlab ksvm stringdot - PullRequest
0 голосов
/ 26 марта 2019

Я хотел бы использовать функцию stringdot в пакете kernlab для классификации последовательностей ДНК с их функцией SVM ksvm.Проблема в том, что stringdot не поддерживает встроенные символы (то есть 'N').Может ли быть написана пользовательская версия stringdot или другого ядра, которая поддерживает подстановочные знаки (т. Е. 'N' соответствует всему) и с той же эффективностью?

Например ...

library(kernlab)
library(Biostrings)
start_time <- Sys.time()

# Make training and validation data
dna <- DNAStringSet( c("CATG", "CATC", "CNNN", "GTAC", "GTAC", "GTAG") )
new <- DNAStringSet( c("CATG", "CATC", "CNNN", "GNNN", "GNNN", "GNNN") )
grp <- factor( c(1, 1, 1, 2, 2, 2) )

# Model and prediction
mod <- ksvm( as.list(dna), grp, type="C-svc", kernel="stringdot", 
             kpar=list( length=4, type="spectrum" ), 
             C=5, cross=0, prob.model=F )
pre <- predict( mod, as.list(new) )

# Print stuff
end_time <- Sys.time()
print( end_time - start_time )
print( grp == pre )

Должна иметь 100% точность прогноза:

[1]  TRUE  TRUE  TRUE TRUE TRUE TRUE

Но поскольку Ns рассматриваются как несоответствия, это дает:

[1]  TRUE  TRUE  TRUE FALSE FALSE FALSE

Есть ли способ исправить это и сохранить аналогичную эффективность?

Time difference of 0.1171031 secs

Спасибо!

...