Y * 0 中的错误:二元运算符的非数字参数 - RNN

Posted

技术标签:

【中文标题】Y * 0 中的错误:二元运算符的非数字参数 - RNN【英文标题】:Error in Y * 0: non numeric argument to binary operator - RNN 【发布时间】:2018-05-04 17:35:36 【问题描述】:

早安,

我目前正在尝试运行用于回归的递归神经网络,在数据集上使用包“rnn”,称为数值波士顿房屋;具体来说,这是结构:

Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 1038 obs. of 3 variables: 
$ date : Date, format: "2013-11-19" "2013-11-20" "2013-11-21" "2013-11-22" ... 
$ Quantità : num 0.85 0.85 -0.653 -0.653 -0.653 ... 
$ Giacenza_In: num 0.945 1.648 -0.694 -0.694 -0.694 ...

#Split into train and test
cutoff = round(0.8*nrow(BostonHousing))

train_x <- BostonHousing[1:cutoff,]
test_x <- BostonHousing[-(1:cutoff),]

str(train_x)
#I apply the model and remove the first column because it's made up of dates

require(rnn)
model <- trainr( Y = train_x[,2], 
                 X = train_x[,3],
                 learningrate = 0.05,
                 hidden_dim = 4,
                 numepochs = 100)

pred <- predictr( model, test_x[,3])

每当我尝试运行代码时,它都会给我标题中报告的错误。

基本上,考虑到当前库存的产品数量(Giacenza_In),我想预测“Quantità”(意思是订购的数量)

最好的问候,亚历山德罗

【问题讨论】:

【参考方案1】:

似乎 rnn 包中的 trainr 需要二进制格式的输入和输出值。所以你必须使用“int2bin

转换每一列

因此,首先您必须将数值转换为整数值(使用舍入并乘以 10^n)

Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 1038 obs. of 3 variables: 
$ date : Date, format: "2013-11-19" "2013-11-20" "2013-11-21" "2013-11-22" ... 
$ Quantità : num 0.85 0.85 -0.653 -0.653 -0.653 ... 
$ Giacenza_In: num 0.945 1.648 -0.694 -0.694 -0.694 ...

#Split into train and test
cutoff = round(0.8*nrow(BostonHousing))

train_x <- BostonHousing[1:cutoff,]
test_x <- BostonHousing[-(1:cutoff),]

str(train_x)
#I apply the model and remove the first column because it's made up of dates
n<-5 #Number of decimal values
require(rnn)
model <- trainr( Y = int2bin(round(train_x[,2])*10^n), 
                 X = int2bin(round(train_x[,3])*10^n),
                 learningrate = 0.05,
                 hidden_dim = 4,
                 numepochs = 100)

pred <- predictr( model, int2bin(round(test_x[,3])-10^n))
pred[pred>=0.5]<-1
pred[pred<0.5]<-0

然后你必须再次将二进制值转换为整数

【讨论】:

简单来说,我将每个输入标准化,然后分成训练集和测试集;因为我试图预测一个数量。为什么当我尝试运行 predictr(model, int2bin...) 时它只显示 8 个值?

以上是关于Y * 0 中的错误:二元运算符的非数字参数 - RNN的主要内容,如果未能解决你的问题,请参考以下文章

错误:二元运算符的非数字参数

错误:重载的 'operator<<' 必须是二元运算符(有 3 个参数)

lm.fit(x,y,offset = offset,singular.ok,...) 中的错误 0 个使用 boxcox 公式的非 NA 案例

二元回归方程公式详细步骤

2021-09-06:给表达式添加运算符。给定一个仅包含数字 0-9 的字符串 num 和一个目标值整数 target ,在 num 的数字之间添加 二元 运算符(不是一元)+- 或 * ,返回所有(

出现错误:二元运算符“==”不能应用于两个“x”操作数,如何删除此对象数组中的某些元素