正如标题所示,我的目标是使用L1罚分(套索)执行时间序列交叉验证。 由于数据框是时间序列格式,因此显然,时间序列分析的结果应该比常规简历更合适。
这是我尝试过的代码行
library(caret)
library(ggplot2)
library(pls)
economics
timeSlices <- createTimeSlices(1:nrow(economics),
initialWindow = 36, horizon = 12, fixedWindow = FALSE)
trainSlices <- timeSlices[[1]]
testSlices <- timeSlices[[2]]
这允许为训练集创建两个切片(总是再获取一个观测值),同时保持测试集的长度不变。 问题出在这里
plsFitTime <- train(unemploy ~ pce + pop + psavert,
data = economics[trainSlices[[1]],],
method = "glmnet",
alpha = 1)
这是错误
出了点问题;所有RMSE指标值均丢失:
RMSE Rsquared MAE
Min. : NA Min. : NA Min. : NA
1st Qu.: NA 1st Qu.: NA 1st Qu.: NA
Median : NA Median : NA Median : NA
Mean :NaN Mean :NaN Mean :NaN
3rd Qu.: NA 3rd Qu.: NA 3rd Qu.: NA
Max. : NA Max. : NA Max. : NA
NA's :9 NA's :9 NA's :9
Error: Stopping
In addition: Warning message:
In nominalTrainWorkflow(x = x, y = y, wts = weights, info = trainInfo, :
There were missing values in resampled performance measures.
我真的不明白这可能是什么问题。
然后我的最终目标是表演
pred <- predict(plsFitTime,economics[testSlices[[1]],])
true <- economics$unemploy[testSlices[[1]]]
有什么建议吗?
答案 0 :(得分:1)
如果您查看警告:
50:Resample17的模型拟合失败:alpha = 0.55,lambda = 42.28 (函数[x,y,family = c(“高斯”,“二项式”,“泊松”,:
形式参数“ alpha”与多个实际参数匹配
默认情况下,glamnet的训练是在lambda和alpha上完成的。并且您指定的Alpha与插入符号生成的Alpha相冲突。
如果您需要固定的Alpha,则应在tuneGrid中指定它。
def payment(arg):
letters = {'B': 2.00, 'W': 2.50, 'S': 1.50}
order = 0
for item, value in letters.items():
order += arg.count(item)*value
return(order)
print(payment('BBSWS'))
您可以检查超级参数here