2017-12-12 15 views
0

목록을 사용하여 누락 된 값의 예측을 작성한 다음 누락 된 값을 다시 목록에 기록하려고합니다. 예측에 만족하지만 그 후에 붙어 있습니다. 새로 발견 된 값을 my_list에 다시 쓰려면 어떻게해야합니까? 당신이 어떤 재생 가능한 최소한의 데이터 세트를 제공하지 않기 때문에예측 후에 목록의 항목을 바꾸려면 어떻게해야합니까?

#my_list is a list with cars, some are missing MPG 

# These cars have no MPG 
empty_rows <- subset(my_list, cartable.mpg=='0') 

#These have an MPG, we'll use them to build our model 
usable_rows <- subset(my_list, cartable.mpg !='0') 

#Do a regression based on mpg,cylinders and weight 
fitted_lm = lm(as.numeric(cartable.mpg) ~ as.numeric(cartable.cyl)+as.numeric(cartable.wt), usable_rows) 

#Predict the missing rows 
filled_rows <- predict(fitted_lm, empty_rows) 

답변

1

, 여기 mtcars를 사용하는 예입니다.

요약하면 mtcars을 모델링에 사용 된 교육 데이터 세트와 응답 변수가 제거 된 테스트 데이터 세트 (이 경우 mpg)로 나눕니다. 그런 다음 선형 모델 lm(mpg ~ wt)을 작성하고 모델을 사용하여 테스트 데이터 세트에 대해 mpg을 예측하십시오.

# Training sample is half the full sample 
# Set fixed RNG seed for reproducibility 
set.seed(2017); 
idx <- sample(nrow(mtcars)/2); 

# Training sample to build the model 
df.train <- mtcars[idx, ]; 

# Test sample without response variable in column 1 
df.test <- mtcars[-idx, -1]; 

# Linear model 
fit <- lm(mpg ~ wt, data = df.train); 

# Prediction for test sample 
pred <- predict(fit, df.test); 
df.test <- cbind.data.frame(
    mpg = pred, 
    df.test); 

# Bind data for training and test sample and flag which one is which 
df <- rbind.data.frame(
    cbind.data.frame(df.train, train = TRUE), 
    cbind.data.frame(df.test, train = FALSE)); 

df[, c("mpg", "wt", "train")]; 
#       mpg wt train 
#Cadillac Fleetwood 10.40000 5.250 TRUE 
#Merc 230   22.80000 3.150 TRUE 
#Duster 360   14.30000 3.570 TRUE 
#Hornet 4 Drive  21.40000 3.215 TRUE 
#Merc 280   19.20000 3.440 TRUE 
#Lincoln Continental 10.40000 5.424 TRUE 
#Mazda RX4   21.00000 2.620 TRUE 
#Merc 450SL   17.30000 3.730 TRUE 
#Merc 280C   17.80000 3.440 TRUE 
#Mazda RX4 Wag  21.00000 2.875 TRUE 
#Hornet Sportabout 18.70000 3.440 TRUE 
#Merc 450SE   16.40000 4.070 TRUE 
#Valiant    18.10000 3.460 TRUE 
#Merc 450SLC   15.20000 3.780 TRUE 
#Merc 240D   24.40000 3.190 TRUE 
#Datsun 710   22.80000 2.320 TRUE 
#Chrysler Imperial 10.17314 5.345 FALSE 
#Fiat 128   24.32264 2.200 FALSE 
#Honda Civic   26.95458 1.615 FALSE 
#Toyota Corolla  25.96479 1.835 FALSE 
#Toyota Corona  23.13039 2.465 FALSE 
#Dodge Challenger 18.38390 3.520 FALSE 
#AMC Javelin   18.76632 3.435 FALSE 
#Camaro Z28   16.94420 3.840 FALSE 
#Pontiac Firebird 16.92171 3.845 FALSE 
#Fiat X1-9   25.51488 1.935 FALSE 
#Porsche 914-2  24.59258 2.140 FALSE 
#Lotus Europa  27.41348 1.513 FALSE 
#Ford Pantera L  19.95856 3.170 FALSE 
#Ferrari Dino  21.75818 2.770 FALSE 
#Maserati Bora  18.15895 3.570 FALSE 
#Volvo 142E   21.71319 2.780 FALSE 
+0

고맙습니다! 멋지다, 많이 배웠다 – ernesto

+0

@ernesto 걱정하지 마라. 도와 줘서 기뻐요! –