나는 기계 학습 모델을 생성하기 위해 여기에있는 솔루션을 적용하기 위해 노력하고있어에서 목록 벡터를 서브 세트 is.na lapply 사용하고!는 R
은 여기에 더미 데이터의 설정 : 여기
data_pred <- data.frame(x1 = 1:10, x2 = 11:20, x3 = 21:30)
data_resp <- data.frame(y1 = c(1:5, NA, 7:10), y2 = c(NA, 2, NA, 4:10))
측정 R의 각 열에
data_pred
에서 예측 모델링 내
for()
루프 방법이었다
caret
패키지를 사용
data_resp
에 esponses는 :
# data_pred contains predictors
# data_resp contains one column per measurement
# 1 matching row per observation in both data_pred and data_resp
for (i in 1:ncol(data_resp)) {
train(x = data_pred[!is.na(data_resp[, i]), ],
y = data_resp[!is.na(data_resp[, i], i],
...)
}
지금 나는 많은 장점을 가지고 있다고 생각
lapply
와 동일한 기능을 수행 할 노력하고있어. 나는 각각의 응답에 대해 비 NA 사례만으로 모델링 할 수 있도록
!is.na()
표준을 변환하는 데 문제가 있습니다. ,
models <- list(NULL)
models$rf <- lapply(as.list(data_resp), rf_func)
NA
의를 처리 할 수 randomForest
때문에 잘 작동 :
rf_func <- function(y) {
train(x = data_pred,
y = y,
method = "rf",
tuneGrid = data.frame(.mtry = 3:6),
nodesize = 3,
ntrees = 500,
trControl = trControl) }
이 그런 결과를 저장하고 data_resp
에 기능을 적용 할 빈 목록을 작성 : 여기 lapply
방법을 테스트하는 내 초기 기능이었다 하지만 다른 방법으로는 할 수 없기 때문에 각 data_resp
요소와 해당 예측 자의 해당 행을 제거해야합니다.
train(x = data_pred_scale[!is.na(y), ],
y = y[!is.na(y)],
... }
나는 또한 내가 lapply
에 data.frame 방법 (df[!is.na(df2), ]
)를 번역하려면 어떻게 y[[!is.na(y)]]
를 시도?
이것은 다소 이상한 설정입니다. 대부분의 사람들은 하나의 y 변수를 가지며 x 변수의 여러 조합을 기반으로 모델을 학습하려고합니다. 당신은 그 반대입니다. –
@HongOoi 나는'x's와 많은 측정 된 응답의 집합'y'를 가지고 있습니다. 나는 각각의'y '를 한 번에 하나씩 예측하기 위해'x'를 사용하고 싶습니다. 화학 공식을 생각해보십시오. 다양한 성분 ('x's)을 가진 화합물을 공식화하고 다양한 온도, 모듈러스, 융점 등의 결과 점도를 모델링하고 싶다고 상상해보십시오. 더 이해가 되나요? * x가 사용하는 *을 알아내는 것은 다른 (중요한) 질문입니다 -하지만 나는 여전히 각각의'y'에 대해'x'의 부분 집합을 모델링 할 필요가 있습니다. 이것은 제가하려고하는 것입니다 위. – Hendy
아무 문제 없어, 나는 단지 호기심이었습니다. –