Kaggle Titanic 데이터에 대한 SVM 코드 e1071
을 검토 중입니다. 내가 아는 마지막 순간,이 부분이 작동했지만, 지금은 다소 이상한 오류가 발생합니다. kaggle에 제출할 수 있도록 data.frame을 만들려고 할 때 내 예측은 테스트 세트 대신 내 교육 세트의 크기 인 것 같습니다.내 행이 Kaggle의 SVM 스크립팅 코드에서 일치하지 않습니다.
문제 분명히
Error in data.frame(PassengerId = test$passengerid, Survived = prediction) : arguments imply differing number of rows: 418, 714
, 그들은 모두 418해야하며, 내가 잘못 무슨 일이 일어나고 있는지 이해가 안 돼요?
predictionSubmit <- data.frame(PassengerId = test$passengerid, Survived = prediction)
시도 내가 가진
이 나에게 오류를 제공 라인이
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
:
세부 여기
내 스크립트입니다 names(train)
및 names(test)
을 사용하여 내 열 변수 이름이 같은지 확인하십시오. 데이터 here을 찾을 수 있습니다. 예측 코드를 한 줄로 최적화 할 수 있다는 것을 알고 있지만 여기에는 문제가 없습니다. 나는이 문제에 대해 두 번째 눈빛을 감상 할 것이다. 내가 kernlab
라이브러리를 사용하려고 생각하고 있지만, 여기에 소홀히하고있는 syntatical sugar 문제가 있는지 궁금해하고있었습니다. 당신의 제안과 단서를 가져 주셔서 감사합니다.
구문에 오류가없는 것으로 보입니다. 표준 문제 해결 단계를 수행하십시오. 객체를 제거하고'rm (prediction, train, test, bestModel)'을 다시 시작하십시오. 다시 실행하십시오. 데이터 프레임을 만들기 전에,'nrow (test)'와'length (prediction)'을 확인하십시오. –
bestModel은 훈련을위한 행 크기> 행 크기를 생성합니다. 질문은, 왜? 문제는'bestModel ~ svm()'에 있습니다. 구문 오류는 없지만 여전히 작동하지 않습니다. 이상해. – hlyates
'prediction [na.omit (names (prediction))]'을 사용하십시오. 왜 이것이 필요한지 알아 내려고 노력할 것입니다. –