Ошибка в предсказании svm

Я обучил модель SVM. Я хотел бы проверить это, но я столкнулся с ошибкой в ​​функции Forex (). Для простоты здесь я разделил тестовые и обучающие данные здесь неслучайным разделением 70/30.

library(e1071)

train <- mydata[1:9731, ] 
test  <- mydata[(9731+1):13901, ]

mysvm <- svm(formula = outcome ~ BW + GA, data = train, type = "C-classification", kernel = "linear", gamma = 1, cost = 2)    
predict(mysvm, newdata=test)

Сообщение об ошибке от прогноза ():

Error in names(ret2) <- rowns : 
  'names' attribute [4170] must be the same length as the vector [4106]

Заголовок данных выглядит так ...

> head(mydata)
    BW  outcome GA
1 2.00 Survived 34
2 2.81 Survived 41
3 1.85 Survived 35
4 2.23 Survived 32
5 1.21 Survived 34
6 2.91 Survived 37

У этого пользователя было такое же сообщение об ошибке. Проблема заключалась в том, что он не использовал фреймы данных. В моем случае это не проблема.

> class(test)
[1] "data.frame"
> class(train)
[1] "data.frame"

Я не уверен, почему возникает эта ошибка и что она означает. Трассировка () и отладка (прогноз) также не помогли.


person Nirvan    schedule 15.08.2015    source источник
comment
вы можете показать head(duput()) исходных данных? (мои данные)   -  person erasmortg    schedule 15.08.2015


Ответы (2)


Трудно предложить решение, потому что вы не предоставили свои данные. Однако я предполагаю, что у вас есть 64 строки со значениями NA для GA или BW в ваших тестовых данных. Если вы удалите строки с любыми NA, я думаю, ваш прогноз будет выполнен:

predict(mysvm, newdata = test[!rowSums(is.na(test)), ])

Это, конечно, означает, что вы не получите никаких прогнозов для этих строк. Как вы справитесь с этим, зависит от вас (например, вы можете вменять недостающие значения или что-то еще, подходящее для вашего конкретного варианта использования).

person Ciarán Tobin    schedule 15.08.2015

Я использую:

   model <- svm(y = labels, x = data, ...)

   pred <- predict(model, data)

и все нормально.

person Tan Dat    schedule 12.06.2016