我正在审查我的 e1071
代码,用于进行Kaggle Titanic数据的SVM . 最后我知道,这一部分是有效的,但现在我得到了一个相当奇怪的错误 . 当我尝试构建我的data.frame所以我可以提交给kaggle时,似乎我的预测是我的训练集的大小而不是测试集 .
Problem
data.frame中的错误(PassengerId = test $ passengerid,Survived = prediction):参数意味着行数不同:418,714
显然,他们都应该是418,我不明白出了什么问题?
Details
这是我的脚本:
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)
Attempts
我使用了 names(train)
和 names(test)
来验证我的列变量名是否相同 . 你可以找到数据here . 我知道我的预测代码可以优化为一行,但这不是问题 . 我很欣赏这个问题的第二双眼睛 . 我正在考虑使用 kernlab
库,但想知道是否存在我在这里忽略的合成糖问题 . 感谢您的建议和线索 .
1 回答