小编Kar*_*arl的帖子

计算列表中的对象数

有人知道R函数会返回列表中的项目数吗?

r list count

94
推荐指数
5
解决办法
22万
查看次数

R中的多变量时间序列建模

我想用R拟合某种多变量时间序列模型

以下是我的数据示例:

   u     cci     bci     cpi     gdp    dum1 dum2 dum3    dx  
 16.50   14.00   53.00   45.70   80.63  0   0    1     6.39 
 17.45   16.00   64.00   46.30   80.90  0   0    0     6.00 
 18.40   12.00   51.00   47.30   82.40  1   0    0     6.57 
 19.35   7.00    42.00   48.40   83.38  0   1    0     5.84 
 20.30   9.00    34.00   49.50   84.38  0   0    1     6.36 
 20.72   10.00   42.00   50.60   85.17  0   0    0     5.78 
 21.14   6.00    45.00   51.90   85.60  1   0    0     5.16 
 21.56   9.00    38.00   52.60   86.14  0 …
Run Code Online (Sandbox Code Playgroud)

statistics r time-series

41
推荐指数
2
解决办法
6万
查看次数

使用Keras构建多变量,多任务LSTM

前言

我目前正在研究机器学习问题,我们的任务是使用过去的产品销售数据来预测未来的销售量(以便商店可以更好地计划他们的库存).我们基本上有时间序列数据,对于每一个产品,我们知道在哪几天销售了多少单位.我们还提供有关天气如何,是否有公众假期,是否有任何产品销售等信息.

我们已经能够使用具有密集层的MLP取得一些成功,并且仅使用滑动窗口方法来包括周围几天的销售量.但是,我们相信,通过LSTM等时间序列方法,我们将能够获得更好的结果.

数据

我们的数据基本如下:

在此输入图像描述

(编辑:为清楚起见,上图中的"时间"列不正确.我们每天输入一次,而不是每月一次.但结构是相同的!)

所以X数据的形状如下:

(numProducts, numTimesteps, numFeatures) = (50 products, 1096 days, 90 features)
Run Code Online (Sandbox Code Playgroud)

并且Y数据的形状如下:

(numProducts, numTimesteps, numTargets) =  (50 products, 1096 days, 3 binary targets)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

因此,我们有三年的数据(2014年,2015年,2016年),并希望对此进行培训,以便对2017年进行预测.(当然,这不是100%正确,因为我们实际上有数据截至2017年10月,但我们只是现在忽略它)

问题

我想在Keras建立一个LSTM,允许我做出这些预测.有几个地方我被卡住了.所以我有六个具体问题(我知道应该尝试将Stackoverflow帖子限制为一个问题,但这些问题都是交织在一起的).

首先,我如何为批次切割数据?由于我有三年的时间,所以只需按顺序推进三批,每次大小一年是否合理?或者更小的批次(比如30天)以及使用滑动窗口更有意义吗?也就是说,不是36个批次,每个30天,我使用36*6批次,每个30天,每次滑动5天?或者这不是真的应该使用LSTM的方式吗?(请注意,数据中存在相当多的季节性,我需要捕捉这种长期趋势).

其次,在这里使用 return_sequences=True是否有意义?换句话说,我保持我的Y数据是(50, 1096, 3)这样的(据我所知),每个时间步都有一个预测,可以针对目标数据计算损失?或者我会更好return_sequences=False,因此只有每批的最终价值用于评估损失(即如果使用年度批次,那么在2016年的产品1,我们评估2016年12月的价值(1,1,1)).

第三,我该如何处理50种不同的产品?它们是不同的,但仍然强相关,我们已经看到其他方法(例如具有简单时间窗的MLP),当所有产品被考虑在同一模型中时,结果更好.目前摆在桌面上的一些想法是:

  • 将目标变量更改为不仅仅是3个变量,而是3*50 = 150; 即,对于每个产品,有三个目标,所有目标都是同时训练的.
  • 将LSTM层之后的结果分成50个密集网络,将LSTM的输出作为输入,加上每个产品特有的一些功能 - 即我们得到一个具有50个丢失函数的多任务网络,然后我们优化一起.那会疯了吗?
  • 将产品视为单一观察,并在LSTM层中包含产品特定功能.仅使用这一层,然后使用大小为3的输出层(对于三个目标).在单独的批次中推送每个产品.

第四,我如何处理验证数据?通常我会随机选择一个随机选择的样本进行验证,但在这里我们需要保持时间排序.所以我想最好只是暂时搁置几个月?

第五,这是我可能最不清楚的部分 - 我如何使用实际结果来执行预测?假设我使用return_sequences=False和训练了三年三次(每次都是11月),目标是训练模型以预测下一个值(2014年12月,2015年12月,2016年12月).如果我想在2017年使用这些结果,这实际上是如何工作的?如果我理解正确的话,我在这个例子中唯一可以做的就是为2017年1月到11月的所有数据点提供模型,它会给我回到2017年12月的预测.这是正确的吗?但是,如果我使用return_sequences=True,然后对截至2016年12月的所有数据进行培训,那么我是否能够通过给出模型在2017年1月观察到的特征来获得2017年1月的预测?或者我需要在2017年1月之前的12个月内给它吗?那么2017年2月,我是否需要在2017年之前再提供11个月的价值?(如果听起来我很困惑,那是因为我!)

最后,根据我应该使用的结构,我如何在Keras中这样做?我现在想到的是以下几点:(虽然这只适用于一种产品,因此不能解决所有产品都在同一型号中):

Keras代码

trainX = …
Run Code Online (Sandbox Code Playgroud)

machine-learning neural-network lstm keras tensorflow

22
推荐指数
2
解决办法
2778
查看次数

R:访问字段值

我想知道如何访问R对象中包含的各个字段.或者,更确切地说,如何让R告诉我如何.

例如,如果我运行以下代码:

dx.ct <- ur.df(dat1[,'dx'], lags=3, type='trend')
summary(dx.ct)
Run Code Online (Sandbox Code Playgroud)

然后我得到这个输出:

############################################### 
# Augmented Dickey-Fuller Test Unit Root Test # 
############################################### 

Test regression trend 


Call:
lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.46876 -0.24506  0.02420  0.15752  0.66688 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)  
(Intercept)  1.099231   0.561377   1.958   0.0606 .
z.lag.1     -0.239438   0.141093  -1.697   0.1012  
tt          -0.019831   0.007799  -2.543   0.0170 *
z.diff.lag1 -0.306326   0.193001  -1.587   0.1241  
z.diff.lag2 -0.214229   0.186135  -1.151   0.2599  
z.diff.lag3 …
Run Code Online (Sandbox Code Playgroud)

r object names

10
推荐指数
3
解决办法
1万
查看次数

TensorFlow Serving:在运行时更新 model_config(添加额外模型)

我正忙于配置 TensorFlow Serving 客户端,该客户端要求 TensorFlow Serving 服务器针对给定模型对给定输入图像进行预测。

如果请求的模型尚未提供,则会从远程 URL 下载到服务器模型所在的文件夹。(客户这样做)。此时我需要更新model_config并触发服务器重新加载它。

此功能似乎存在(基于https://github.com/tensorflow/serving/pull/885https://github.com/tensorflow/serving/blob/master/tensorflow_serving/apis/model_service.proto#L22) ,但我找不到有关如何实际使用它的任何文档。

我本质上是在寻找一个 python 脚本,我可以用它从客户端触发重新加载(或者以其他方式配置服务器以侦听更改并触发重新加载本身)。

python tensorflow-serving

9
推荐指数
1
解决办法
3844
查看次数

具有自回归项的GLM用于校正序列相关性

我有一个固定的时间序列,我想要拟合一个带有自回归项的线性模型来校正序列相关性,即使用公式At = c1*Bt + c2*Ct + ut,其中ut = r*ut-1 +等

(ut是AR(1)术语,用于纠正错误术语中的序列相关性)

有谁知道在R中使用什么来模拟这个?

谢谢卡尔

statistics model r correlation

7
推荐指数
2
解决办法
7823
查看次数

最小记录插入

我有一个INSERT声明,它占用了大量的日志空间,以至于硬盘驱动器在声明完成之前实际上已经填满了.

问题是,我真的不需要记录它,因为它只是一个中间数据上传步骤.

为了论证,让我说我有:

  • 表A:初始上载表(使用填充bcp,因此没有日志记录问题)
  • 表B:使用填充 INSERT INTO B from A

有没有一种方法可以在A和B之间复制而不会将任何内容写入日志?

PS我正在使用SQL Server 2008简单的恢复模型.

sql logging bulkinsert insert sql-server-2008

5
推荐指数
1
解决办法
9314
查看次数

C#顺序列表由两个不同的东西组成

假设我有以下列表:

var someList = new List<SomeObject>();
Run Code Online (Sandbox Code Playgroud)

其中包含以下条目:

SomeObject.Field

Apple
Orange
FruitBowl_Outside
Banana
Grape
FruitBowl_Inside
Run Code Online (Sandbox Code Playgroud)

我想对这个列表进行排序,以便FruitBowl条目位于底部,受此限制,一切都是字母的.

用词来说:

SomeObject.Field

Apple
Banana
Grape
Orange
FruitBowl_Inside
FruitBowl_Outside
Run Code Online (Sandbox Code Playgroud)

c# list .net-4.0

5
推荐指数
1
解决办法
927
查看次数

从 H2O 模型对象获取模型详细信息

我有一个相当简单的问题,但无法在任何地方找到记录在案的解决方案。

我目前正在使用 H2O 模型构建管道,并且作为过程的一部分,我需要将有关每个训练模型的一些基本信息写入表格。

假设我有类似的东西:

model = H2ODeepLearningEstimator(...)
model.train(...)
Run Code Online (Sandbox Code Playgroud)

这样做之后,我想从model对象中提取模型的类型。即,我正在寻找类似的东西:

model.getType()
Run Code Online (Sandbox Code Playgroud)

然后返回一个字符串"H2ODeepLearningEstimator"或等效的"deeplearning"H2O 似乎在内部用作模型类型标识符。我还想获得其他详细信息,例如它是回归模型还是分类模型。我没有看到公开此信息的参数。

model.save_model_details例如,如果我跑步,我会得到:

H2ODeepLearningEstimator :  Deep Learning
Model Key:  Grid_DeepLearning_py_4_sid_a02a_model_python_1502450758585_2_model_0


ModelMetricsRegression: deeplearning
** Reported on train data. **

MSE: 19.5334650304
RMSE: 4.4196679774
MAE: 1.44489752843
RMSLE: NaN
Mean Residual Deviance: 19.5334650304

ModelMetricsRegression: deeplearning
** Reported on validation data. **
...
...
Run Code Online (Sandbox Code Playgroud)

大概是model.save_model_details根据各个参数建立此摘要。我想通过直接访问这些(以及类似)参数model对象(性能指标这是可能的通过model.mse()model.mae()等等)

python h2o

5
推荐指数
1
解决办法
5961
查看次数

防止 VSCode 远程容器中的 GPG 密钥共享

官方文档中的以下段落描述了如何在 VSCode 中启用 GPG 密钥共享(从本地主机到远程容器)(https://code.visualstudio.com/docs/remote/containers#_sharing-gpg-keys)。

说明(适用于 Linux)仅指出要共享 GPG 密钥,请gnupg2在本地和容器中安装。但是,如果我已经gnupg2安装但不想共享密钥怎么办?据我所知,VSCode 在完成密钥共享的容器内执行启动后命令,例如:

Copy /home/karlschriek/.gnupg/pubring.kbx to /home/vscode/.gnupg/pubring.kbx
Copy /home/karlschriek/.gnupg/trustdb.gpg to /home/vscode/.gnupg/trustdb.gpg
...
Run Code Online (Sandbox Code Playgroud)

我无法找到可以防止这种情况的设置。据推测,它也使用gpg-agent与本地主机相同的方式。我想阻止这种情况发生。

gnupg docker visual-studio-code gpg-agent

5
推荐指数
1
解决办法
882
查看次数