Я просматриваю код e1071
для SVM для данных Kaggle Titanic. Последнее, что я знал, эта часть его работала, но теперь я получаю довольно странную ошибку. Когда я пытаюсь построить свой файл data.frame, поэтому я могу представить kaggle, кажется, что мой прогноз - это размер моего набора тренировок вместо набора тестов.Мои строки не совпадают в моем коде сценария SVM для Kaggle
Проблема
Error in data.frame(PassengerId = test$passengerid, Survived = prediction) : arguments imply differing number of rows: 418, 714
Очевидно, они оба должны быть 418, и я не понимаю, что происходит не так?
Детали
Вот мой сценарий:
setwd("Path\\To\Data")
train <- read.csv("train.csv")
test <- read.csv("test.csv")
library("e1071")
bestModel = svm(Survived ~ Pclass + Sex + Age + Sex * Pclass, data = train, kernel = "linear", cost = 1)
prediction <- predict(bestModel, newData=test, type="response")
prediction[prediction >= 0.5] <- 1
prediction[prediction != 1] <- 0
prediction[is.na(prediction)] <- 0
Это линия, которая дает мне ошибку:
predictionSubmit <- data.frame(PassengerId = test$passengerid, Survived = prediction)
Попытки
У меня есть names(train)
и names(test)
, чтобы проверить, что мои имена переменных столбца совпадают. Вы можете найти данные here. Я знаю, что мой код предсказания можно оптимизировать в одну строку, но это не проблема. Я бы оценил вторую пару глаз по этому вопросу. Я думаю об использовании библиотеки kernlab
, но мне было интересно, есть ли синтаксическая проблема с сахаром, которую я пренебрегал здесь. Спасибо за ваши предложения и подсказки.
В тексте сообщения не было ошибок. Пройдите стандартные шаги по устранению неисправностей. Удалите объекты и снова запустите 'rm (предсказание, поезд, тест, bestModel)'. Запустите его снова. Перед созданием фрейма данных проверьте 'nrow (test)' и 'length (prediction)' –
bestModel создаст размер строки> размер строки для обучения. Вопрос в том, почему? Проблема заключается в 'bestModel ~ svm()'. Нет синтаксических ошибок, но все равно не работает. Это странно. – hlyates
Использовать 'прогнозирование [na.omit (имена (предсказание))]'. Я постараюсь выяснить, почему это необходимо. –