2015-04-26 35 views
5

Próbuję przewidzieć medianę wartości domów zajmowanych przez właściciela, jest to sprawdzony przykład, który daje dobry wynik. https://heuristically.wordpress.com/2011/11/17/using-neural-network-for-regression/Przewidywanie - sieć neuronowa dla regresji

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 23,70904 2 3 4 23,70904 23,70904 5 23,70904 23,70904 6 7 8 23,70904 23,70904 9 23,70904 23,70904 10 11 23,70904 12 23,70904 13 23,70904 14 23,70904 15 23,70904

Otrzymuję 23.70904 tę samą wartość dla wszystkich przewidywań dla wszystkich obserwacji 506? Dlaczego tak jest? Co robię źle?

Moja wersja R to 3.1.2.

+1

Mam to, To było spowodowane linoutem = TRUE, które trzeba użyć dla zmiennej odpowiedzi ciągłej. 'nnet.fit <- nnet (medv/50 ~., Data = BostonHousing, rozmiar = 10, linout = TRUE, pominięcie = TRUE, MaxNWts = 10000, trace = FALSE, maxit = 100) ' Ta linia wykonała praca. – Sam

+1

Świetnie - dobrze, że Cię rozwiązałeś! Zachęcam do odpowiedzi na własne pytanie za pomocą przycisku "Opublikuj swoją odpowiedź" poniżej, aby inni mogli łatwo zobaczyć odpowiedź łatwo, gdy odwiedzą Stack Overflow. – josliber

+0

@josilber - Zrobione, dzięki za informację, było nowe na tej platformie, więc nie wiedziałem. – Sam

Odpowiedz

6

Było to spowodowane linoutem = TRUE, które trzeba użyć do ciągłej zmiennej odpowiedzi. Ponieważ używałem nnet do problemu regresji (a nie klasyfikacji) musiałem ustawić linout = T, aby powiedzieć nnetowi, aby użył liniowego wyjście "

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

To zadziałało dobrze dla mnie, mam nadzieję, że pomaga.