2015-04-26 2 views
5

Я пытаюсь предсказать медианное значение домов, занятых владельцем, его обработанный пример, который дает хороший результат. https://heuristically.wordpress.com/2011/11/17/using-neural-network-for-regression/Прогноз - Нейронная сеть для регрессии

library(mlbench) 
    data(BostonHousing) 
    require(nnet) 
    # scale inputs: divide by 50 to get 0-1 range 
    nnet.fit <- nnet(medv/50 ~ ., data=BostonHousing, size=2) 
    # multiply 50 to restore original scale 
    nnet.predict <- predict(nnet.fit)*50 

nnet.predict [1] 1 23,70904 2 23,70904 3 23,70904 4 23,70904 5 23,70904 6 23,70904 7 23,70904 8 23,70904 9 23,70904 10 23,70904 11 23.70904 12 23.70904 13 23.70904 14 23.70904 15 23.70904

Я получаю 23.70904 одинаковое значение для всех прогнозов для всех 506 наблюдений? Почему это так ? Что я делаю неправильно?

Мое R-версия 3.1.2.

+1

Я получил его, это было связано с линией = ИСТИНА, которая должна использоваться для непрерывной переменной ответа. 'nnet.fit <- nnet (medv/50 ~., Data = BostonHousing, size = 10, linout = TRUE, skip = TRUE, MaxNWts = 10000, trace = FALSE, maxit = 100) ' Эта строка сделала работа. – Sam

+1

Отлично - приятно видеть, что вы решили свою проблему! Я бы посоветовал вам ответить на свой вопрос с помощью кнопки «Опубликовать свой ответ» ниже, чтобы другие могли легко легко увидеть ответ, когда они посещают переполнение стека. – josliber

+0

@josilber - Сделано, спасибо, что рассказал мне, было новым в этой платформе, так что не знал. – Sam

ответ

6

Это связано с линией = TRUE, которая должна использоваться для непрерывной переменной ответа. Поскольку я использовал nnet для регрессии (а не для классификации), мне нужно было установить linout = T, чтобы сообщить nnet использовать линейную выход '

nnet.fit <- nnet(medv/50 ~ ., data=BostonHousing, size=10, linout=TRUE, skip=TRUE, MaxNWts=10000, trace=FALSE, maxit=100) 

Это хорошо работает для меня, надеюсь, что это поможет.