我正试图用汽车预测时间序列。阿里玛。我需要的是分割训练和测试数据,以查看模型指标。我的日期范围是2016年12月至2020年1月。我需要2018年12月之前的列车数据,以及之后的测试。
除此之外,我还需要每个id的指标RMSE和MSE。这是我的数据的一个例子:
x<- tibble::tribble(
~ID, ~Date, ~Value,
1L, "01-12-2016", 48L,
1L, "01-01-2017", 10055L,
1L, "01-02-2017", 650L,
1L, "01-03-2017", 8255L,
1L, "01-04-2017", 3680L,
1L, "01-05-2017", 2180L,
1L, "01-06-2017", 2790L,
1L, "01-07-2017", 3805L,
1L, "01-08-2017", 2811L,
1L, "01-09-2017", -225L,
1L, "01-10-2017", -232L,
1L, "01-11-2017", -243L,
1L, "01-12-2017", -217L,
1L, "01-01-2018", -256L,
1L, "01-02-2018", -277L,
1L, "01-03-2018", -3L,
1L, "01-04-2018", -247L,
1L, "01-05-2018", 88L,
1L, "01-06-2018", -260L,
1L, "01-07-2018", -228L,
1L, "01-08-2018", -285L,
1L, "01-09-2018", -321L,
1L, "01-10-2018", -265L,
1L, "01-11-2018", -302L,
1L, "01-12-2018", -11968L,
1L, "01-01-2019", 5435L,
1L, "01-02-2019", 6694L,
1L, "01-03-2019", 4750L,
1L, "01-04-2019", 3747L,
1L, "01-05-2019", 3727L,
1L, "01-06-2019", 3252L,
1L, "01-07-2019", 1691L,
1L, "01-08-2019", 2489L,
1L, "01-09-2019", -182L,
1L, "01-10-2019", 3926L,
1L, "01-11-2019", 326L,
1L, "01-12-2019", -1047L,
1L, "01-01-2020", 14L,
2L, "01-12-2016", -241L,
2L, "01-01-2017", -262L,
2L, "01-02-2017", -231L,
2L, "01-03-2017", -203L,
2L, "01-04-2017", -226L,
2L, "01-05-2017", -223L,
2L, "01-06-2017", -300L,
2L, "01-07-2017", -259L,
2L, "01-08-2017", -241L,
2L, "01-09-2017", -225L,
2L, "01-10-2017", -227L,
2L, "01-11-2017", -243L,
2L, "01-12-2017", -217L,
2L, "01-01-2018", -256L,
2L, "01-02-2018", -277L,
2L, "01-03-2018", 0L,
2L, "01-04-2018", -247L,
2L, "01-05-2018", -274L,
2L, "01-06-2018", -264L,
2L, "01-07-2018", -227L,
2L, "01-08-2018", -275L,
2L, "01-09-2018", -325L,
2L, "01-10-2018", -269L,
2L, "01-11-2018", -306L,
2L, "01-12-2018", -264L,
2L, "01-01-2019", -308L,
2L, "01-02-2019", -332L,
2L, "01-03-2019", -260L,
2L, "01-04-2019", -300L,
2L, "01-05-2019", -302L,
2L, "01-06-2019", -291L,
2L, "01-07-2019", -284L,
2L, "01-08-2019", -288L,
2L, "01-09-2019", -272L,
2L, "01-10-2019", 0L,
2L, "01-11-2019", 0L,
2L, "01-12-2019", -17107L,
2L, "01-01-2020", 3500L,
3L, "01-12-2016", 1940L,
3L, "01-01-2017", 1753L,
3L, "01-02-2017", 2758L,
3L, "01-03-2017", 2539L,
3L, "01-04-2017", -9078L,
3L, "01-05-2017", 5215L,
3L, "01-06-2017", 1796L,
3L, "01-07-2017", -8424L,
3L, "01-08-2017", 19868L,
3L, "01-09-2017", 10707L,
3L, "01-10-2017", 8985L,
3L, "01-11-2017", 3058L,
3L, "01-12-2017", 2469L,
3L, "01-01-2018", 21L,
3L, "01-02-2018", 1039L,
3L, "01-03-2018", 2875L,
3L, "01-04-2018", -2678L,
3L, "01-05-2018", 1515L,
3L, "01-06-2018", 2651L,
3L, "01-07-2018", -5014L,
3L, "01-08-2018", 299L,
3L, "01-09-2018", 1755L,
3L, "01-10-2018", 5009L,
3L, "01-11-2018", 2857L,
3L, "01-12-2018", 2909L,
3L, "01-01-2019", 1353L,
3L, "01-02-2019", 2337L,
3L, "01-03-2019", 3019L,
3L, "01-04-2019", -531L,
3L, "01-05-2019", -1055L,
3L, "01-06-2019", 1706L,
3L, "01-07-2019", -507L,
3L, "01-08-2019", 2234L,
3L, "01-09-2019", 890L,
3L, "01-10-2019", 94L,
3L, "01-11-2019", -1781L,
3L, "01-12-2019", 102590L,
3L, "01-01-2020", 471L,
4L, "01-12-2016", 2658L,
4L, "01-01-2017", 2344L,
4L, "01-02-2017", 2728L,
4L, "01-03-2017", -58L,
4L, "01-04-2017", -226L,
4L, "01-05-2017", -5L,
4L, "01-06-2017", -300L,
4L, "01-07-2017", -259L,
4L, "01-08-2017", -241L,
4L, "01-09-2017", -225L,
4L, "01-10-2017", -229L,
4L, "01-11-2017", -243L,
4L, "01-12-2017", -217L,
4L, "01-01-2018", -245L,
4L, "01-02-2018", -277L,
4L, "01-03-2018", -155L,
4L, "01-04-2018", 5437L,
4L, "01-05-2018", 2866L,
4L, "01-06-2018", 3091L,
4L, "01-07-2018", 3669L,
4L, "01-08-2018", 311L,
4L, "01-09-2018", 4120L,
4L, "01-10-2018", 2357L,
4L, "01-11-2018", -4759L,
4L, "01-12-2018", 4220L,
4L, "01-01-2019", 2730L,
4L, "01-02-2019", 2515L,
4L, "01-03-2019", 2560L,
4L, "01-04-2019", 2864L,
4L, "01-05-2019", 1935L,
4L, "01-06-2019", 938L,
4L, "01-07-2019", 3268L,
4L, "01-08-2019", 3232L,
4L, "01-09-2019", 3347L,
4L, "01-10-2019", 4241L,
4L, "01-11-2019", -247L,
4L, "01-12-2019", 179L,
4L, "01-01-2020", 2542L
)
x<-as.data.frame(x)
我尝试使用dplyr:
x %>%
group_by(ID) %>%
do(fit=auto.arima(.$Value,seasonal = F,stepwise = F,approximation = F),
fit_forecast=forecast(auto.arima(.$Value,seasonal = F,stepwise = F,approximation = F),h=12))
但我不知道如何添加训练和测试的步骤以及指标。有人知道怎么解决吗?谢谢
您只需将数据帧子集到训练和测试中。通常为80/20分割或90/10分割。但在你的情况下,因为你似乎想要特定的日期,你甚至可以硬编码行数。
library("lubridate")
x$Date <- dmy(x$Date)
x <- x[order(x$Date),]
rownames(x) <- NULL
x.train <- x[1:139,]
x.text <- x[-(1:139),]
通常,还对数据进行采样,以获得80/20或90/10。但在时间序列中,您希望简单地拆分而不是采样。
我已经在https://community.rstudio.com/t/autoarima-train-and-test-grouped-by-id-in-r/66400回答了同样的问题,但在此郑重声明。
使用tsibble和fable软件包,这要容易得多,就像这样。
library(dplyr)
library(tsibble)
library(lubridate)
library(fable)
# Turn x into a tsibble object
x <- x %>%
mutate(Date = yearmonth(dmy(Date))) %>%
as_tsibble(index = Date, key = ID)
# Use filter to create training set
# Then fit non-seasonal ARIMA models
fit <- x %>%
filter(Date <= yearmonth("2018 Dec")) %>%
model(ARIMA(Value ~ PDQ(0,0,0), stepwise=FALSE, approximation=FALSE))
# Now forecast the test set and compute RMSE and MSE
fit %>%
forecast(h = 13) %>%
accuracy(x) %>%
mutate(MSE = RMSE^2) %>%
select(ID, RMSE, MSE)
#> # A tibble: 4 x 3
#> ID RMSE MSE
#> <int> <dbl> <dbl>
#> 1 1 9696. 94011195.
#> 2 2 4792. 22964718.
#> 3 3 27899. 778326636.
#> 4 4 1776. 3153398.
由reprex软件包(v0.3.0)于2020年5月18日创建
问题内容: 我需要将数据分为训练集(75%)和测试集(25%)。我目前使用以下代码进行操作: 但是,我想对训练数据集进行分层。我怎么做?我一直在研究该方法,但不允许我指定75%/ 25%的划分,而是仅对训练数据集进行分层。 问题答案: [更新为0.17] 请参阅以下文档: [/更新为0.17] 有一个拉要求在这里。但是,您可以根据需要简单地进行 训练和测试索引的使用。
为了评估我们的监督模型的泛化能力,我们可以将数据分成训练和测试集: from sklearn.datasets import load_iris iris = load_iris() X, y = iris.data, iris.target 考虑如何正常执行机器学习,训练/测试分割的想法是有道理的。真实世界系统根据他们拥有的数据进行训练,当其他数据进入时(来自客户,传感器或其他来源),经过训
本文向大家介绍Python分割训练集和测试集的方法示例,包括了Python分割训练集和测试集的方法示例的使用技巧和注意事项,需要的朋友参考一下 数据集介绍 使用数据集Wine,来自UCI 。包括178条样本,13个特征。 分割训练集和测试集 随机分割 分为训练集和测试集 方法:使用scikit-learn中model_selection子模块的train_test_split函数 以上就是本文的
本文向大家介绍python 划分数据集为训练集和测试集的方法,包括了python 划分数据集为训练集和测试集的方法的使用技巧和注意事项,需要的朋友参考一下 sklearn的cross_validation包中含有将数据集按照一定的比例,随机划分为训练集和测试集的函数train_test_split 得到的x_train,y_train(x_test,y_test)的index对应的是x,y中被抽取
问题内容: 我有一个很大的数据集,想将其分为训练(50%)和测试集(50%)。 假设我有100个示例存储了输入文件,每一行包含一个示例。我需要选择50条线作为训练集和50条线测试集。 我的想法是首先生成一个长度为100(值范围从1到100)的随机列表,然后将前50个元素用作50个训练示例的行号。与测试集相同。 这可以在Matlab中轻松实现 但是如何在Python中完成此功能?我是Python的新
相关概念 客户端 (Client):客户端是一个用于建立 TensorFlow 计算图并创立与集群进行交互的会话层 tensorflow::Session 的程序。一般客户端是通过 python 或 C++ 实现的。一个独立的客户端进程可以同时与多个 TensorFlow 的服务端相连 (上面的计算流程一节),同时一个独立的服务端也可以与多个客户端相连。 集群 (Cluster) : 一个 Ten