随机林错误:`[.data.frame`(data,all.vars(Terms),drop=FALSE)中的错误:选择了未定义的列

随机林错误:`[.data.frame`(data,all.vars(Terms),drop=FALSE)中的错误:选择了未定义的列,r,time-series,rstudio,random-forest,R,Time Series,Rstudio,Random Forest,我正在尝试使用随机林构建时间序列模型。但是,每次运行代码时,我都会犯同样的错误,即: [.data.frame中出错(数据,所有.vars(术语),drop=FALSE): 选择未定义的列 我非常了解随机森林背后的大部分理论,但还没有运行过多少使用它的代码 这是我的密码: library(randomForest) library(caret) fitControl <- trainControl( method = "repeatedcv", number = 10, re

我正在尝试使用随机林构建时间序列模型。但是,每次运行代码时,我都会犯同样的错误,即:

[.data.frame
中出错(数据,所有.vars(术语),drop=FALSE): 选择未定义的列

我非常了解随机森林背后的大部分理论,但还没有运行过多少使用它的代码

这是我的密码:

library(randomForest)
library(caret)

fitControl <- trainControl(
  method = "repeatedcv",
  number = 10,
  repeats = 1,
  classProbs = FALSE,
  verboseIter = TRUE,
  preProcOptions=list(thresh=0.95,na.remove=TRUE,verbose=TRUE))

set.seed(1234)

rf_grid <- expand.grid(mtry = c(1:6))

fit <- train(df.ts[,1]~.,
         data=df.ts[,2:6],
         method="rf",
         preProcess=c("center","scale"),
         tuneGrid = rf_grid,
         trControl=fitControl,
         ntree = 200,
         metric="RMSE")
库(随机林)
图书馆(插入符号)

fitControl公式应与
data
中变量的名称相对应。例如
y~。
使用
data
中的所有其他变量预测
y
。或者,您可以使用
y=df.ts[,1],x=df.ts[,-1]
而不是
公式
数据

因此,正确的语法应该是:

fit <- train(ts.t ~ .,
             data=df.ts,
             method="rf",
             preProcess=c("center","scale"),
             tuneGrid = rf_grid,
             trControl=fitControl,
             ntree = 200,
             metric="RMSE") 
fit
库(随机森林)
图书馆(插入符号)

fitControl只需使用插入符号::train(var~,Data)
而不是
train(Data$var~,Data=Data)
就可以了。对我来说,使用
classProbs=TRUE
代替
classProbs=FALSE
也可以了

fit <- train(ts.t ~ .,
             data=df.ts,
             method="rf",
             preProcess=c("center","scale"),
             tuneGrid = rf_grid,
             trControl=fitControl,
             ntree = 200,
             metric="RMSE") 
library(randomForest)
library(caret)

fitControl <- trainControl(
  method = "repeatedcv",
  number = 10,
  repeats = 1,
  classProbs = FALSE,
  verboseIter = TRUE,
  preProcOptions=list(thresh=0.95,na.remove=TRUE,verbose=TRUE))

set.seed(1234)

rf_grid <- expand.grid(mtry = c(1:6))

fit <- train(ts.t~.,
         data=df.ts[,1:6],
         method="rf",
         preProcess=c("center","scale"),
         tuneGrid = rf_grid,
         trControl=fitControl,
         ntree = 200,
         metric="RMSE")