2016-06-07 3 views
0

Я использую e1071 Пакет для создания модели VM и предсказания в R. my_data образца CSV-файла:ошибка модели SVM при создании предсказания

Kupno,X1,X2,X3,X4 
0,1,22,1,4.961566871 
1,2,18,0,6.316553966 
... 10000 lines 

Мой R Код:

library(e1071) 

model <- svm(data = my_data, y = my_data['Kupno'], x = my_data['X1']) 
plot(model,data=my_data,fill=TRUE) 
index <- 1:nrow(my_data) 
testindex <- sample(index, trunc(length(index)/3)) 
testset <- my_data[testindex,] 
trainset <- my_data[-testindex,] 
model <- svm(data = my_data, y = my_data['Kupno'], x = my_data['X1']) 
prediction <- predict(model, testset) 

И я имеют три проблемы:

  1. команда участка не генерирует никаких ошибок, но также и график не отображается. Участок для сюжета (my_data) отображается правильно.
  2. Последняя ошибка команды возврата:

    'scale.default (NewData [, объект $ масштабируется, падение = FALSE], центр = объект $ x.scale $ "масштабируется: центр",': длина «центр» должно быть равно числу столбцов «х»

  3. у меня есть четыре колонки X, и я не знаю, как передать четыре Dimention X модели SVM.

Tha nks много за помощь!

+0

Почему вы не используете интерфейс формулы, как это сделано в [документации] (http://www.inside-r.org/node/57517)? –

ответ

0

Позвольте мне попытаться ответить на ваши вопросы индивидуально.

  1. Вы пытаетесь построить SVM, который подходит только с использованием 1 предиктора, поэтому ваша классификация была создана только в 1 измерении. Это по существу просто линия. Это обсуждалось в this thread.

  2. Вы помечаете ошибку из-за проблемы с вашими измерениями. В вашей модели вы строите только один предиктор X1. Однако, когда вы создаете свой фрейм данных тестов, вы также включаете переменные X2-X4. Когда вы пытаетесь предсказать на этом наборе тестов, функция помещает ошибку, потому что она пытается поместить вашу 1 модель предсказателя на данные с 4-мя предикторами.

    В частности, ошибка означает, что объект center = object$x.scale$"scaled:center" имеет длину 1 и что x имеет 4 столбца.

  3. Самый простой способ сделать это, чтобы просто использовать формулу интерфейс

    модель < - (. Kupno ~, данные = my_data) SVM

    ~. говорит модель регрессировать на все столбцы в вашем наборе данных.

Смежные вопросы