我正在尝试使用随机森林进行时间序列分析。以下是我的代码:
Subsales<-read.csv('Sales.csv')
head(Subsales)
示例数据:
Date SKU City Sales
<date> <chr> <chr> <dbl>
1 2014-08-11 Vaseline Petroleum Jelly Pure 60 ml Jeddah1 378
2 2014-08-18 Vaseline Petroleum Jelly Pure 60 ml Jeddah1 348
3 2014-08-25 Vaseline Petroleum Jelly Pure 60 ml Jeddah1 314
4 2014-09-01 Vaseline Petroleum Jelly Pure 60 ml Jeddah1 324
5 2014-09-08 Vaseline Petroleum Jelly Pure 60 ml Jeddah1 352
6 2014-09-15 Vaseline Petroleum Jelly Pure 60 ml Jeddah1 453
####Length of training & testing set Splitting it 80-20####
train_len=round(nrow(SubSales)*0.8)
test_len=nrow(SubSales)
######Splitting dataset into training and testing#####
#### Training Set
training<-slice(SubSales,1:train_len)
#### Testing Set
testing<-slice(SubSales,train_len+1:test_len)
training=training[c(1,4)]
testing=testing[c(1,4)]
library(randomForest)
set.seed(1234)
regressor = randomForest(formula=Sales~.,
data=training,
ntree=100)
y_pred = predict(regressor,newdata = testing)
当我在测试数据集上使用predict函数时,结果一直不变。所有预测值都是369,我已经尝试了另一个数据集,结果也相同。有人能告诉我我在这里做错了什么吗?
slice
来自哪里,那么training
和testing
数据集似乎被限制为2个值。也许缺少一个逗号以选择第一和第四列training=training[, c(1,4)]
。 - nyatesting<-slice(SubSales, (train_len+1) :test_len)
命令,并观察括号的效果。同时,尝试运行1+2:5
并与您预期的结果进行比较。如果没有括号,这两个切片实际上会重叠,从而失去了分离的目的。强烈建议在此类任务中使用caret
包中的createDataPartition
函数。 - Silence Dogood