ध्यान दें कि आपके द्वारा पोस्ट किया गया मूल प्रश्न, समय की देखभाल करता है, और आपको समय-समय पर हाथों को बनाने की ज़रूरत नहीं है।
हालांकि, डेटा को विभाजित करने के लिए createTimeSlices
का उपयोग करने के लिए और फिर मॉडल का प्रशिक्षण और परीक्षण करने के लिए इसका उपयोग करना है।
चरण 0: डेटा और trainControl
की स्थापना: (अपने प्रश्न से)
library(caret)
library(ggplot2)
library(pls)
data(economics)
चरण 1: डेटा के सूचकांक के लिए timeSlices बनाना:
timeSlices <- createTimeSlices(1:nrow(economics),
initialWindow = 36, horizon = 12, fixedWindow = TRUE)
यह एक सूची बनाता है प्रशिक्षण और परीक्षण समय स्लाइस।
> str(timeSlices,max.level = 1)
## List of 2
## $ train:List of 431
## .. [list output truncated]
## $ test :List of 431
## .. [list output truncated]
समझ में आसानी के लिए, मैं अलग चर में उन्हें बचत कर रहा हूँ:
trainSlices <- timeSlices[[1]]
testSlices <- timeSlices[[2]]
चरण 2: के पहले पर प्रशिक्षण trainSlices
:
plsFitTime <- train(unemploy ~ pce + pop + psavert,
data = economics[trainSlices[[1]],],
method = "pls",
preProc = c("center", "scale"))
चरण 3: पर परीक्षण trainSlices
का पहला:
pred <- predict(plsFitTime,economics[testSlices[[1]],])
चरण 4: प्लॉटिंग:
true <- economics$unemploy[testSlices[[1]]]
plot(true, col = "red", ylab = "true (red) , pred (blue)", ylim = range(c(pred,true)))
points(pred, col = "blue")
फिर आप सभी स्लाइस के लिए ऐसा कर सकते हैं:
for(i in 1:length(trainSlices)){
plsFitTime <- train(unemploy ~ pce + pop + psavert,
data = economics[trainSlices[[i]],],
method = "pls",
preProc = c("center", "scale"))
pred <- predict(plsFitTime,economics[testSlices[[i]],])
true <- economics$unemploy[testSlices[[i]]]
plot(true, col = "red", ylab = "true (red) , pred (blue)",
main = i, ylim = range(c(pred,true)))
points(pred, col = "blue")
}
जैसा कि पहले उल्लेख, timeSlicing की इस तरह एक कदम में अपने मूल कार्य द्वारा किया जाता है:
> myTimeControl <- trainControl(method = "timeslice",
+ initialWindow = 36,
+ horizon = 12,
+ fixedWindow = TRUE)
>
> plsFitTime <- train(unemploy ~ pce + pop + psavert,
+ data = economics,
+ method = "pls",
+ preProc = c("center", "scale"),
+ trControl = myTimeControl)
> plsFitTime
Partial Least Squares
478 samples
5 predictors
Pre-processing: centered, scaled
Resampling: Rolling Forecasting Origin Resampling (12 held-out with a fixed window)
Summary of sample sizes: 36, 36, 36, 36, 36, 36, ...
Resampling results across tuning parameters:
ncomp RMSE Rsquared RMSE SD Rsquared SD
1 1080 0.443 796 0.297
2 1090 0.43 845 0.295
RMSE was used to select the optimal model using the smallest value.
The final value used for the model was ncomp = 1.
उम्मीद है कि इससे मदद मिलती है !!
अगर आप परिभाषित आप "मॉडल मूल्यांकन" क्या मतलब है यह मदद मिलेगी। – topepo
मैंने अपना प्रश्न संपादित कर लिया है। शायद अभी समझना आसान है? –
1. पैकेज 'pls' को स्थापित करने की आवश्यकता है 2. यदि आप केवल नमूने के आदेश (महीने या वर्ष विशेष रूप से नहीं) के बारे में चिंतित हैं, तो आप उन्हें एक संख्यात्मक आईडी दे सकते हैं और आप अभी भी बूटस्ट्रैपिंग 3 का उपयोग कर सकते हैं। एक ग्लम के रूप में सरल कुछ का उपयोग क्यों नहीं करते? –