我正在尝试使用randomforest进行时间序列分析。 PFB我的代码在R中使用随机森林进行时间序列预测
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)
我得到一个固定的结果,当我使用预测功能测试数据set.All预测值369,我试着再数据集我得到了同样的结果。谁能告诉我我在这里做错了什么?
什么是应该预测销售?目前我只看到日期,以及两个因素(产品和城市),每个都有一个等级。从一些功能工程开始。例如,尝试从日期中提取星期几,并将其作为7级因子。 – JanLauGe
不知道'slice'来自哪里,'training'和'testing'数据集似乎只限于2个值。可能缺少一个逗号来选择第一列和第四列训练=训练[,c(1,4)]'。 – nya
也可以尝试'testing <-slice(SubSales,(train_len + 1):test_len)'以查看括号尝试'1 + 2:5'的效果,并与您的预期结果进行比较。没有括号,这两个切片基本上重叠,从而破坏了分离的目的。强烈建议''caret'包中的'createDataPartition'函数执行此类任务 – OdeToMyFiddle