【发布时间】:2020-10-03 07:41:44
【问题描述】:
我正在为 R 使用包 neuralnet,并希望使用监督学习。
在我的设置中,我有 15 个解释变量(其中 8 个是虚拟变量,每个虚拟都包含 0 and 1 作为值,其他解释变量是实数)。
但是,我想使用所有解释变量来预测目标向量(实数)。
所以,我的设置是一个回归问题。
如果我在没有假人的情况下运行我的神经网络,neuralnet()-函数会产生结果。
但是,通过合并假人,我收到错误消息:
显然,假人会导致错误。在没有它们的情况下运行该功能可以正常工作。
我怎样才能正确地制作考虑假人的神经网络并创建输出?
请在下面找到可重现的示例以及神经网络设置:
#### install packages
# install.packages("devtools")
# require(devtools)
# devtools::install_github("bips-hb/neuralnet") # CRAN version contains bug, use github version
# require(neuralnet)
### create data
set.seed(1)
dt <- matrix(rnorm(200), nrow = 200, ncol = 3)
dummy1 <- as.factor( c(rep(1,100), rep(0,100)) ) # create vector with data (1,0) for first dummy, save as factor
dummy2 <- as.factor( c(rep(0,100), rep(1,100)) ) # create vector with data (0,1) for second dummy, save as factor
dummy_df <- data.frame(dummy1, dummy2) # merging both dummies into dataframe
class(dummy_df[,1]) # factor
class(dummy_df[,2]) # factor
# bringing original data and dummies together
train <- cbind(as.data.frame(dt), dummy_df)
# see colnames
colnames(train)
# start neural net
nnet <- neuralnet(formula = V1 ~ V2 + V3 + dummy1 + dummy2, # use V1 as target for supervised learning
data = train,
hidden = 1, # neurons
threshold = 0.01, # termination derivative is reached
rep = 5, # trainings
startweights = NULL, # starting weights
learningrate.factor = list(minus = 0.5, plus = 1.2), # increasing and decrasing factors
algorithm = "rprop+", # rprop algorithm with weight updating
err.fct = "sse", # use sum squared errors as error function
act.fct = "tanh", # use hyperbolic tangent
linear.output = TRUE, # output function is linear, regression problem
lifesign = "full", # print behavior
stepmax = 200000)
感谢您的帮助!
【问题讨论】:
标签: r neural-network dummy-variable supervised-learning