当我使用示例中的代码时:
library(deepnet)
Var1 <- c(rnorm(50, 1, 0.5), rnorm(50, -0.6, 0.2))
Var2 <- c(rnorm(50, -0.8, 0.2), rnorm(50, 2, 1))
x <- matrix(c(Var1, Var2), nrow = 100, ncol = 2)
y <- c(rep(1, 50), rep(0, 50))
nn <- dbn.dnn.train(x, y, hidden = c(5))
它有效。但是当我使用这段代码时:
Var1 <- c(rnorm(50, 1, 0.5), rnorm(50, -0.6, 0.2))
Var2 <- c(rnorm(50, -0.8, 0.2), rnorm(50, 2, 1))
x <- matrix(c(Var1, Var2), nrow = 100, ncol = 2)
**y <- c(rep("1", 50), rep("0", 50))**
nn <- dbn.dnn.train(x, y, hidden = c(5))
我收到错误:
batch_y中的错误 - nn $ post [[i]]:二元运算符的非数字参数
如何使用deepnet包进行分类问题?
答案 0 :(得分:1)
y1 <- c(rep("1", 50), rep("0", 50))
引导您进入包裹无法接受的字符向量。这样你就会收到错误
class(y)
#[1] "character"
右边的y应该是数字,如下所示
y <- c(rep(1, 50), rep(0, 50))
class(y)
#[1] "numeric"
如果你在y里面看到,你会发现你有1或0这是分类的二进制值
> table(y)
#y
# 0 1
#50 50
如果您想按照手册中的说明进行训练,可以执行以下操作来训练和预测测试集
Var1 <- c(rnorm(50, 1, 0.5), rnorm(50, -0.6, 0.2))
Var2 <- c(rnorm(50, -0.8, 0.2), rnorm(50, 2, 1))
x <- matrix(c(Var1, Var2), nrow = 100, ncol = 2)
y <- c(rep(1, 50), rep(0, 50))
如果您现在通过 str 查看x和y,只需编写 str(x)或 str(y)即可看到它们是数字的(为了确保,您可以按类(x)和类(y)检查它们。
拥有你的X和y之后,你可以建立你的模型
dnn <- dbn.dnn.train(x, y, hidden = c(5, 5))
如果您有预测的测试集,那么您可以使用例如手册中提到的
来预测它test_Var1 <- c(rnorm(50, 1, 0.5), rnorm(50, -0.6, 0.2))
test_Var2 <- c(rnorm(50, -0.8, 0.2), rnorm(50, 2, 1))
test_x <- matrix(c(test_Var1, test_Var2), nrow = 100, ncol = 2)
nn.test(dnn, test_x, y)
#[1] 0.25
同样,你的test_x必须是数字。如果您的问题是您将值作为字符,那么您可以通过mydata<- as.numeric()