new.y = predict(model, newx = new.x)
, new.y의 길이가 new.xR에, 수익률에게 잘못된 길이
코드의 행 길이 다른 을 예측하는 것은 여기에 있습니다 :
install.packages('ISLR')
library(ISLR)
fix(Hitters) # load data
Hitters = na.omit(Hitters) # remove NA
x = model.matrix(Salary ~ ., Hitters)[ , -1]
y = Hitters$Salary
set.seed(1)
train = sample(1:nrow(x), nrow(x)/2) # random sampling
test = (-train)
lm.fit = lm(y ~ x, subset=train)
lm.pred = predict(lm.fit, newx = x[test,])
dim(x[test,]) # output 132*19
length(lm.pred) # output 131
length(y[test]) # output 132
아무도 왜 길이 알고 있나요 틀렸어? 감사!
업데이트 : 실수는 newx = x[test, ]
입니다. predict
에 의해 인식되지 않았습니다. 감사합니다! 은 더 분명하게하려면 다음과 같은 일을해야 1, 2 코드에서 test
을 정의
install.packages('ISLR')
library(ISLR)
fix(Hitters) # load data
Hitters = na.omit(Hitters) # remove NA
x = model.matrix(Salary ~ ., Hitters)[ , -1]
y = Hitters$Salary
set.seed(2)
train = sample(1:nrow(x), 150) # random sampling (specify size for testing)
test = (1:nrow(x))[-train]
lm.fit = lm(y ~ x, subset=train)
lm.pred = predict(lm.fit, newx = x[test,])
dim(x[test,]) # output 113 19
length(lm.pred) # output 150 - still using training data
lm.fit = lm(Salary ~ ., data = Hitters, subset = train)
lm.pred = predict(lm.fit, newdata = Hitters[test,])
dim(x[test,]) # output 113 19
length(lm.pred) # output 113
방법. 테스트 :
x = c('A','B','C','D','E')
set.seed(2)
n = length(x)
train = sample(1:n, n/2) # random sampling
test = -train
test # output -1 -3
x[test] # output "B" "D" "E"
test = (1:n)[-train]
test # output 2 4 5
x[test] # output "B" "D" "E"
'newx'은'홍보에 대한 유효한 옵션이 아닙니다 edict.lm'. 'x [test,]'는 사용되지 않습니다. –
또한'test'의 값을 확인 했습니까? –
안녕하세요 @ 파스칼, 고마워요! 'newx'는 사용되지 않았습니다 ... –