나는 주어진 자동차의 마일리지가 평균보다 높거나 낮은지를 예측하기 위해 SVM 분류기를 훈련해야하는 R의 응용 프로그램을 사용한 통계적 학습 소개의 371 페이지에 있는 연습 7을 완료하려고합니다 . 데이터는 데이터 프레임 Auto에 있으며 NA가없고 길이가 다르거 나 기타 명백하게 문제가되는 기능이 없습니다 (요인으로 저장된 문자열 열이 있지만 이미 처리했습니다).
다음 코드로이 작업을 수행합니다.
library("ISLR")
library("e1071")
set.seed(1)
m=dim(Auto)[1]
train=sample(1:m, ceiling(m/2), replace = FALSE)
train=sort(train)
med=median(Auto$mpg)
above_median=as.numeric(Auto$mpg[train]>=med)
length(above_median)
dim(Auto[train, -c(1,9)])
tune.out<-tune(svm, above_median ~ ., data=Auto[train,-c(1,9)], kernel="linear",
ranges=data.frame(cost=c(0.01, 0.03, 0.1, 0.3, 1, 3)), scale = FALSE)
반환하는
Error in model.frame.default(formula, data) :
variable lengths differ (found for 'cylinders')
모든 관련 길이가 196인지 확인했기 때문에 이것은 분명히 그렇지 않습니다. 또한 데이터에 NA가 없는지 확인했습니다.
이런 식으로 실행하면 작동합니다.
tmp <- Auto
tmp$above_median <- above_median
tune.out <- tune(svm, above_median ~ ., data=tmp[train,-c(1,9)], kernel = "linear",
ranges = data.frame(cost=c(0.01, 0.03, 0.1, 0.3, 1, 3)), scale = FALSE)
above_median
제공된 데이터 프레임 내부를 찾고 있지만 찾지 못하므로 Y의 길이는 0입니다. 결과적으로 첫 번째 열의 길이는 동일하지 않습니다.
추신 : tmp
원래 데이터 프레임을 변경하지 않기 위해 만들었습니다 . 당신의 운동이 운동이라고 생각하면 중요하지 않다고 생각합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다