In [6]:
library(dplyr)

In [7]:
iris


Warning message:
In `[<-.factor`(`*tmp*`, ri, value = "<e2><8b><ae>"): invalid factor level, NA generatedWarning message:
In `[<-.factor`(`*tmp*`, ri, value = "<e2><8b><ae>"): invalid factor level, NA generated
Sepal.LengthSepal.WidthPetal.LengthPetal.WidthSpecies
15.13.51.40.2setosa
24.931.40.2setosa
34.73.21.30.2setosa
44.63.11.50.2setosa
553.61.40.2setosa
65.43.91.70.4setosa
74.63.41.40.3setosa
853.41.50.2setosa
94.42.91.40.2setosa
104.93.11.50.1setosa
115.43.71.50.2setosa
124.83.41.60.2setosa
134.831.40.1setosa
144.331.10.1setosa
155.841.20.2setosa
165.74.41.50.4setosa
175.43.91.30.4setosa
185.13.51.40.3setosa
195.73.81.70.3setosa
205.13.81.50.3setosa
215.43.41.70.2setosa
225.13.71.50.4setosa
234.63.610.2setosa
245.13.31.70.5setosa
254.83.41.90.2setosa
26531.60.2setosa
2753.41.60.4setosa
285.23.51.50.2setosa
295.23.41.40.2setosa
304.73.21.60.2setosa
31<8b><8b><8b><8b>NA
1216.93.25.72.3virginica
1225.62.84.92virginica
1237.72.86.72virginica
1246.32.74.91.8virginica
1256.73.35.72.1virginica
1267.23.261.8virginica
1276.22.84.81.8virginica
1286.134.91.8virginica
1296.42.85.62.1virginica
1307.235.81.6virginica
1317.42.86.11.9virginica
1327.93.86.42virginica
1336.42.85.62.2virginica
1346.32.85.11.5virginica
1356.12.65.61.4virginica
1367.736.12.3virginica
1376.33.45.62.4virginica
1386.43.15.51.8virginica
139634.81.8virginica
1406.93.15.42.1virginica
1416.73.15.62.4virginica
1426.93.15.12.3virginica
1435.82.75.11.9virginica
1446.83.25.92.3virginica
1456.73.35.72.5virginica
1466.735.22.3virginica
1476.32.551.9virginica
1486.535.22virginica
1496.23.45.42.3virginica
1505.935.11.8virginica

In [8]:
library(ggplot2)

In [9]:
ggplot(data=iris, aes(x=Sepal.Length, y=Sepal.Width, color=Species)) + geom_point(size=3)



In [12]:
library(nnet)

In [15]:
ir <- rbind(iris3[,,1],iris3[,,2],iris3[,,3])
targets <- class.ind( c(rep("s", 50), rep("c", 50), rep("v", 50)) )
samp <- c(sample(1:50,25), sample(51:100,25), sample(101:150,25))
ir1 <- nnet(ir[samp,], targets[samp,], size = 2, rang = 0.1,
decay = 5e-4, maxit = 200)
test.cl <- function(true, pred) {
true <- max.col(true)
cres <- max.col(pred)
table(true, cres)
}
test.cl(targets[-samp,], predict(ir1, ir[-samp,]))


# weights:  19
initial  value 56.609187 
iter  10 value 36.566224
iter  20 value 19.574888
iter  30 value 17.906536
iter  40 value 8.253534
iter  50 value 2.906166
iter  60 value 1.609140
iter  70 value 1.447394
iter  80 value 1.352347
iter  90 value 1.226255
iter 100 value 1.164588
iter 110 value 1.150214
iter 120 value 1.142791
iter 130 value 1.133954
iter 140 value 1.133562
iter 150 value 1.133390
iter 160 value 1.133378
iter 170 value 1.133371
iter 180 value 1.133368
final  value 1.133368 
converged
    cres
true  1  2  3
   1 25  0  0
   2  0 25  0
   3  2  0 23

In [16]:
ird <- data.frame(rbind(iris3[,,1], iris3[,,2], iris3[,,3]),
species = factor(c(rep("s",50), rep("c", 50), rep("v", 50))))
ir.nn2 <- nnet(species ~ ., data = ird, subset = samp, size = 2, rang = 0.1,
decay = 5e-4, maxit = 200)
table(ird$species[-samp], predict(ir.nn2, ird[-samp,], type = "class"))


# weights:  19
initial  value 82.620508 
iter  10 value 35.760821
iter  20 value 9.731709
iter  30 value 5.199682
iter  40 value 4.964729
iter  50 value 4.474113
iter  60 value 4.409059
iter  70 value 4.286774
iter  80 value 4.241621
iter  90 value 4.022986
iter 100 value 2.356449
iter 110 value 1.830280
iter 120 value 1.421485
iter 130 value 1.208582
iter 140 value 1.139482
iter 150 value 1.057155
iter 160 value 1.041733
iter 170 value 1.028230
iter 180 value 1.021985
iter 190 value 1.019619
iter 200 value 1.019013
final  value 1.019013 
stopped after 200 iterations
   
     c  s  v
  c 25  0  0
  s  0 25  0
  v  2  0 23

In [17]:
# use half the iris data
ir <- rbind(iris3[,,1], iris3[,,2], iris3[,,3])
targets <- matrix(c(rep(c(1,0,0),50), rep(c(0,1,0),50), rep(c(0,0,1),50)),
150, 3, byrow=TRUE)
samp <- c(sample(1:50,25), sample(51:100,25), sample(101:150,25))
ir1 <- nnet(ir[samp,], targets[samp,], size=2, rang=0.1, decay=5e-4, maxit=200)
eigen(nnetHess(ir1, ir[samp,], targets[samp,]), TRUE)$values


# weights:  19
initial  value 57.167362 
iter  10 value 50.007215
iter  20 value 29.624684
iter  30 value 21.615991
iter  40 value 18.500612
iter  50 value 11.298185
iter  60 value 3.728685
iter  70 value 2.848584
iter  80 value 2.614220
iter  90 value 2.334847
iter 100 value 2.268862
iter 110 value 2.249119
iter 120 value 2.241811
iter 130 value 2.239429
iter 140 value 2.238891
final  value 2.238827 
converged
  1. 909.832489262226
  2. 2.26011360626804
  3. 0.678166623724063
  4. 0.382993141933627
  5. 0.305181634249396
  6. 0.0735808095321853
  7. 0.0672736001276883
  8. 0.0515566433893583
  9. 0.0102448121099778
  10. 0.00880784100321814
  11. 0.00572286602392889
  12. 0.00442076703246651
  13. 0.00364186726756893
  14. 0.00345148171921274
  15. 0.00209564878999137
  16. 0.00135577713439145
  17. 0.00107061359380865
  18. 0.00103003696812595
  19. 0.000935570798758541

In [ ]: