【发布时间】:2016-11-19 11:27:17
【问题描述】:
我在可用的波士顿数据集上尝试了 R 中的神经网络。
data("Boston",package="MASS")
data <- Boston
只保留我们想要使用的变量:
keeps <- c("crim", "indus", "nox", "rm" , "age", "dis", "tax" ,"ptratio", "lstat" ,"medv" )
data <- data[keeps]
在这种情况下,公式存储在名为 f 的 R 对象中。 响应变量 medv 将针对其余九个属性进行“回归”。我已经做到了如下:
f <- medv ~ crim + indus + nox + rm + age + dis + tax + ptratio + lstat
设置训练样本 506行数据中的400行无放回使用sample方法采集:
set.seed(2016)
n = nrow(data)
train <- sample(1:n, 400, FALSE)
拟合了 R 的神经网络函数。
library(neuralnet)
fit<- neuralnet(f, data = data[train ,], hidden=c(10 ,12 ,20),
algorithm = "rprop+", err.fct = "sse", act.fct = "logistic",
threshold =0.1, linear.output=TRUE)
但警告消息显示为算法未收敛。
警告信息: 算法在 stepmax 内的 1 次重复中没有收敛 1 次
尝试使用计算进行预测,
pred <- compute(fit,data[-train, 1:9])
显示以下错误消息
Error in nrow[w] * ncol[w] : non-numeric argument to binary operator
In addition: Warning message:
In is.na(weights) : is.na() applied to non-(list or vector) of type 'NULL'
为什么会出现错误以及如何从中恢复以进行预测。我想在该数据集上使用神经网络函数。
【问题讨论】:
-
您是否考虑过在训练之前扩展您的数据集?
-
我没有缩放它。是否会导致更快的收敛。截至目前,问题似乎是不收敛。
-
是的。请参阅下面的编辑。
-
我已经尝试过使用 deepnet ,相同的数据集,虽然它没有显示任何错误,但结果似乎不正确。你能看透吗?
-
我不明白你在说什么。您是否尝试过我发布的解决方案?
标签: r machine-learning statistics neural-network