нейронный net - выбран неопределенный столбец - PullRequest
1 голос
/ 16 апреля 2020

Раздел данных

У меня есть несколько факторных переменных, поэтому я решил использовать фиктивные переменные вместо ANN.

set.seed(222)
m <- model.matrix( ~price+month+year+area+larea+otype+cid+rid+did+renovation+nrooms+nbeds+nbaths+nbalcs+wfloor+status, data = data)
ind <- sample(2, nrow(m), replace = TRUE, prob = c(0.8, 0.2))
training <- m[ind==1,]
testing <- m[ind==2,]

нейронный net

n <- neuralnet(price~.,
                data = training,
                hidden = 1,
                err.fct = "sse",
                linear.output = FALSE)

Ошибка в [.data.frame (data,, model.list $ variable): выбраны неопределенные столбцы

Я использую точку, потому что у меня есть 94 объясняющих переменных. когда я запускаю цену по двум объясняющим переменным, чтобы увидеть, в чем проблема, это сработало. Существует некоторая проблема с точкой, она используется только для линейной регрессии, и я ошибся? как я могу решить эту проблему?

1 Ответ

0 голосов
/ 16 апреля 2020

model.matrix - это matrix, а не data.frame. Согласно данным ?neuralnet

- фрейм данных, содержащий переменные, указанные в формуле.


Итак, нам может потребоваться преобразовать в data.frame с as.data.frame, поскольку это правильно работает с data.frame input

library(neuralnet)
data(iris)
nn <- neuralnet(Species~ ., iris, 
        linear.output = FALSE, hidden = 1, err.fct = "sse")
nn$weights
#[[1]]
#[[1]][[1]]
#           [,1]
#[1,]  -9.900398
#[2,]  -1.527258
#[3,] -13.201669
#[4,]  11.624309
#[5,]  17.896367

#[[1]][[2]]
#          [,1]      [,2]      [,3]
#[1,]  32.51005 -4.014045 -4.303671
#[2,] -65.72300  4.013259  4.304652

В коде OP проблема заключается в том, что model.matrix создает имена столбцов с нестандартными именами. Его можно преобразовать в стандартные имена с помощью make.unique

names(training) <- make.names(names(training))
n <- neuralnet(price ~ ., 
            data = training,
            hidden = 1,
            err.fct = "sse", 
      linear.output = FALSE)



n$weights
#[[1]]
#[[1]][[1]]
#              [,1]
# [1,]  -0.62625018
# [2,]   1.39124245
# [3,]  -2.59472834
# [4,]   0.27773897
# [5,]   7.15830865
# [6,]  -2.93583230
# ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...