====== Neural Network ======
> install.packages("nnet")
> library(nnet)
> m <- nnet(Species ~ ., data=iris, size=3)
# weights: 27
initial value 191.494035
iter 10 value 65.618496
iter 20 value 40.493306
iter 30 value 8.542349
iter 40 value 6.034377
iter 50 value 6.000246
iter 60 value 5.998411
iter 70 value 5.983894
iter 80 value 5.972932
iter 90 value 5.968740
iter 100 value 5.965371
final value 5.965371
stopped after 100 iterations
> round(predict(m, newdata=iris),2)
setosa versicolor virginica
1 1 0.00 0.00
2 1 0.00 0.00
3 1 0.00 0.00
4 1 0.00 0.00
5 1 0.00 0.00
6 1 0.00 0.00
7 1 0.00 0.00
8 1 0.00 0.00
9 1 0.00 0.00
10 1 0.00 0.00
11 1 0.00 0.00
12 1 0.00 0.00
13 1 0.00 0.00
14 1 0.00 0.00
15 1 0.00 0.00
16 1 0.00 0.00
17 1 0.00 0.00
18 1 0.00 0.00
19 1 0.00 0.00
20 1 0.00 0.00
21 1 0.00 0.00
22 1 0.00 0.00
23 1 0.00 0.00
24 1 0.00 0.00
25 1 0.00 0.00
26 1 0.00 0.00
27 1 0.00 0.00
28 1 0.00 0.00
29 1 0.00 0.00
30 1 0.00 0.00
31 1 0.00 0.00
32 1 0.00 0.00
33 1 0.00 0.00
34 1 0.00 0.00
35 1 0.00 0.00
36 1 0.00 0.00
37 1 0.00 0.00
38 1 0.00 0.00
39 1 0.00 0.00
40 1 0.00 0.00
41 1 0.00 0.00
42 1 0.00 0.00
43 1 0.00 0.00
44 1 0.00 0.00
45 1 0.00 0.00
46 1 0.00 0.00
47 1 0.00 0.00
48 1 0.00 0.00
49 1 0.00 0.00
50 1 0.00 0.00
51 0 1.00 0.00
52 0 1.00 0.00
53 0 1.00 0.00
54 0 1.00 0.00
55 0 1.00 0.00
56 0 1.00 0.00
57 0 1.00 0.00
58 0 1.00 0.00
59 0 1.00 0.00
60 0 1.00 0.00
61 0 1.00 0.00
62 0 1.00 0.00
63 0 1.00 0.00
64 0 1.00 0.00
65 0 1.00 0.00
66 0 1.00 0.00
67 0 1.00 0.00
68 0 1.00 0.00
69 0 0.95 0.05
70 0 1.00 0.00
71 0 0.59 0.41
72 0 1.00 0.00
73 0 0.77 0.23
74 0 1.00 0.00
75 0 1.00 0.00
76 0 1.00 0.00
77 0 1.00 0.00
78 0 0.73 0.27
79 0 1.00 0.00
80 0 1.00 0.00
81 0 1.00 0.00
82 0 1.00 0.00
83 0 1.00 0.00
84 0 0.12 0.88
85 0 1.00 0.00
86 0 1.00 0.00
87 0 1.00 0.00
88 0 1.00 0.00
89 0 1.00 0.00
90 0 1.00 0.00
91 0 1.00 0.00
92 0 1.00 0.00
93 0 1.00 0.00
94 0 1.00 0.00
95 0 1.00 0.00
96 0 1.00 0.00
97 0 1.00 0.00
98 0 1.00 0.00
99 0 1.00 0.00
100 0 1.00 0.00
101 0 0.00 1.00
102 0 0.00 1.00
103 0 0.00 1.00
104 0 0.00 1.00
105 0 0.00 1.00
106 0 0.00 1.00
107 0 0.11 0.89
108 0 0.00 1.00
109 0 0.00 1.00
110 0 0.00 1.00
111 0 0.01 0.99
112 0 0.00 1.00
113 0 0.00 1.00
114 0 0.00 1.00
115 0 0.00 1.00
116 0 0.00 1.00
117 0 0.00 1.00
118 0 0.00 1.00
119 0 0.00 1.00
120 0 0.08 0.92
121 0 0.00 1.00
122 0 0.00 1.00
123 0 0.00 1.00
124 0 0.06 0.94
125 0 0.00 1.00
126 0 0.00 1.00
127 0 0.19 0.81
128 0 0.20 0.80
129 0 0.00 1.00
130 0 0.03 0.97
131 0 0.00 1.00
132 0 0.00 1.00
133 0 0.00 1.00
134 0 0.77 0.23
135 0 0.03 0.97
136 0 0.00 1.00
137 0 0.00 1.00
138 0 0.00 1.00
139 0 0.33 0.67
140 0 0.00 1.00
141 0 0.00 1.00
142 0 0.00 1.00
143 0 0.00 1.00
144 0 0.00 1.00
145 0 0.00 1.00
146 0 0.00 1.00
147 0 0.00 1.00
148 0 0.00 1.00
149 0 0.00 1.00
150 0 0.02 0.98
> predict(m, newdata=iris, type="class")
[1] "setosa" "setosa" "setosa" "setosa"
[5] "setosa" "setosa" "setosa" "setosa"
[9] "setosa" "setosa" "setosa" "setosa"
[13] "setosa" "setosa" "setosa" "setosa"
[17] "setosa" "setosa" "setosa" "setosa"
[21] "setosa" "setosa" "setosa" "setosa"
[25] "setosa" "setosa" "setosa" "setosa"
[29] "setosa" "setosa" "setosa" "setosa"
[33] "setosa" "setosa" "setosa" "setosa"
[37] "setosa" "setosa" "setosa" "setosa"
[41] "setosa" "setosa" "setosa" "setosa"
[45] "setosa" "setosa" "setosa" "setosa"
[49] "setosa" "setosa" "versicolor" "versicolor"
[53] "versicolor" "versicolor" "versicolor" "versicolor"
[57] "versicolor" "versicolor" "versicolor" "versicolor"
[61] "versicolor" "versicolor" "versicolor" "versicolor"
[65] "versicolor" "versicolor" "versicolor" "versicolor"
[69] "versicolor" "versicolor" "versicolor" "versicolor"
[73] "versicolor" "versicolor" "versicolor" "versicolor"
[77] "versicolor" "versicolor" "versicolor" "versicolor"
[81] "versicolor" "versicolor" "versicolor" "virginica"
[85] "versicolor" "versicolor" "versicolor" "versicolor"
[89] "versicolor" "versicolor" "versicolor" "versicolor"
[93] "versicolor" "versicolor" "versicolor" "versicolor"
[97] "versicolor" "versicolor" "versicolor" "versicolor"
[101] "virginica" "virginica" "virginica" "virginica"
[105] "virginica" "virginica" "virginica" "virginica"
[109] "virginica" "virginica" "virginica" "virginica"
[113] "virginica" "virginica" "virginica" "virginica"
[117] "virginica" "virginica" "virginica" "virginica"
[121] "virginica" "virginica" "virginica" "virginica"
[125] "virginica" "virginica" "virginica" "virginica"
[129] "virginica" "virginica" "virginica" "virginica"
[133] "virginica" "versicolor" "virginica" "virginica"
[137] "virginica" "virginica" "virginica" "virginica"
[141] "virginica" "virginica" "virginica" "virginica"
[145] "virginica" "virginica" "virginica" "virginica"
[149] "virginica" "virginica"
>
====== E.G. 2 ======
{{:r:wine.csv}}
for the description of the data: https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.names
wine <- read.csv("wine.csv")
head(wine)
summary(wine)
wine.scale <- cbind(wine[1], scale(wine[-1]))
summary(wine.scale)
apply(wine.scale[-1], 2, sd)
# Partitioning the data into training and test data
data.size <- nrow(wine.scale)
set.seed(1111)
samp <- c(sample(1:data.size, data.size * 0.7))
data.tr <- wine.scale[samp, ]
data.test <- wine.scale[-samp, ]
summary(data.tr)
summary(data.test)
# Fitting the neural network for the training data
library(nnet)
model.nnet <- nnet(Type ~ ., data = data.tr, size = 2, decay = 5e-04, maxit = 200)
names(model.nnet)
# Creating the confusion matrix for the model
predicted <- predict(model.nnet, data.test, type = "class")
predicted
actual <- data.test$Type
model.confusion.matrix <- table(actual, predicted)
model.confusion.matrix
confusion.matrix.rate = prop.table(model.confusion.matrix) * 100
round(confusion.matrix.rate, digit = 2)
diag.index <- cbind(1:3, 1:3)
error.overall = sum(confusion.matrix.rate) - sum(confusion.matrix.rate[diag.index])
paste("오차율 =", round(error.overall, digit = 2), "%")
> wine <- read.csv("wine.csv")
> head(wine)
Type Alcohol Malic Ash Alcalinity Magnesium Phenols Flavanoids
1 t1 14.23 1.71 2.43 15.6 127 2.80 3.06
2 t1 13.20 1.78 2.14 11.2 100 2.65 2.76
3 t1 13.16 2.36 2.67 18.6 101 2.80 3.24
4 t1 14.37 1.95 2.50 16.8 113 3.85 3.49
5 t1 13.24 2.59 2.87 21.0 118 2.80 2.69
6 t1 14.20 1.76 2.45 15.2 112 3.27 3.39
Nonflavanoids Proanthocyanins Color Hue Dilution Proline
1 0.28 2.29 5.64 1.04 3.92 1065
2 0.26 1.28 4.38 1.05 3.40 1050
3 0.30 2.81 5.68 1.03 3.17 1185
4 0.24 2.18 7.80 0.86 3.45 1480
5 0.39 1.82 4.32 1.04 2.93 735
6 0.34 1.97 6.75 1.05 2.85 1450
> summary(wine)
Type Alcohol Malic Ash
t1:59 Min. :11.03 Min. :0.740 Min. :1.360
t2:71 1st Qu.:12.36 1st Qu.:1.603 1st Qu.:2.210
t3:48 Median :13.05 Median :1.865 Median :2.360
Mean :13.00 Mean :2.336 Mean :2.367
3rd Qu.:13.68 3rd Qu.:3.083 3rd Qu.:2.558
Max. :14.83 Max. :5.800 Max. :3.230
Alcalinity Magnesium Phenols Flavanoids
Min. :10.60 Min. : 70.00 Min. :0.980 Min. :0.340
1st Qu.:17.20 1st Qu.: 88.00 1st Qu.:1.742 1st Qu.:1.205
Median :19.50 Median : 98.00 Median :2.355 Median :2.135
Mean :19.49 Mean : 99.74 Mean :2.295 Mean :2.029
3rd Qu.:21.50 3rd Qu.:107.00 3rd Qu.:2.800 3rd Qu.:2.875
Max. :30.00 Max. :162.00 Max. :3.880 Max. :5.080
Nonflavanoids Proanthocyanins Color
Min. :0.1300 Min. :0.410 Min. : 1.280
1st Qu.:0.2700 1st Qu.:1.250 1st Qu.: 3.220
Median :0.3400 Median :1.555 Median : 4.690
Mean :0.3619 Mean :1.591 Mean : 5.058
3rd Qu.:0.4375 3rd Qu.:1.950 3rd Qu.: 6.200
Max. :0.6600 Max. :3.580 Max. :13.000
Hue Dilution Proline
Min. :0.4800 Min. :1.270 Min. : 278.0
1st Qu.:0.7825 1st Qu.:1.938 1st Qu.: 500.5
Median :0.9650 Median :2.780 Median : 673.5
Mean :0.9574 Mean :2.612 Mean : 746.9
3rd Qu.:1.1200 3rd Qu.:3.170 3rd Qu.: 985.0
Max. :1.7100 Max. :4.000 Max. :1680.0
>
> wine.scale <- cbind(wine[1], scale(wine[-1]))
> summary(wine.scale)
Type Alcohol Malic Ash
t1:59 Min. :-2.42739 Min. :-1.4290 Min. :-3.66881
t2:71 1st Qu.:-0.78603 1st Qu.:-0.6569 1st Qu.:-0.57051
t3:48 Median : 0.06083 Median :-0.4219 Median :-0.02375
Mean : 0.00000 Mean : 0.0000 Mean : 0.00000
3rd Qu.: 0.83378 3rd Qu.: 0.6679 3rd Qu.: 0.69615
Max. : 2.25341 Max. : 3.1004 Max. : 3.14745
Alcalinity Magnesium Phenols
Min. :-2.663505 Min. :-2.0824 Min. :-2.10132
1st Qu.:-0.687199 1st Qu.:-0.8221 1st Qu.:-0.88298
Median : 0.001514 Median :-0.1219 Median : 0.09569
Mean : 0.000000 Mean : 0.0000 Mean : 0.00000
3rd Qu.: 0.600395 3rd Qu.: 0.5082 3rd Qu.: 0.80672
Max. : 3.145637 Max. : 4.3591 Max. : 2.53237
Flavanoids Nonflavanoids Proanthocyanins
Min. :-1.6912 Min. :-1.8630 Min. :-2.06321
1st Qu.:-0.8252 1st Qu.:-0.7381 1st Qu.:-0.59560
Median : 0.1059 Median :-0.1756 Median :-0.06272
Mean : 0.0000 Mean : 0.0000 Mean : 0.00000
3rd Qu.: 0.8467 3rd Qu.: 0.6078 3rd Qu.: 0.62741
Max. : 3.0542 Max. : 2.3956 Max. : 3.47527
Color Hue Dilution
Min. :-1.6297 Min. :-2.08884 Min. :-1.8897
1st Qu.:-0.7929 1st Qu.:-0.76540 1st Qu.:-0.9496
Median :-0.1588 Median : 0.03303 Median : 0.2371
Mean : 0.0000 Mean : 0.00000 Mean : 0.0000
3rd Qu.: 0.4926 3rd Qu.: 0.71116 3rd Qu.: 0.7864
Max. : 3.4258 Max. : 3.29241 Max. : 1.9554
Proline
Min. :-1.4890
1st Qu.:-0.7824
Median :-0.2331
Mean : 0.0000
3rd Qu.: 0.7561
Max. : 2.9631
> apply(wine.scale[-1], 2, sd)
Alcohol Malic Ash Alcalinity
1 1 1 1
Magnesium Phenols Flavanoids Nonflavanoids
1 1 1 1
Proanthocyanins Color Hue Dilution
1 1 1 1
Proline
1
>
> data.size <- nrow(wine.scale)
> set.seed(1111)
> samp <- c(sample(1:data.size, data.size * 0.7))
> data.tr <- wine.scale[samp, ]
> data.test <- wine.scale[-samp, ]
> summary(data.tr)
Type Alcohol Malic Ash
t1:41 Min. :-1.897718 Min. :-1.2947 Min. :-3.66881
t2:50 1st Qu.:-0.816822 1st Qu.:-0.6815 1st Qu.:-0.57051
t3:33 Median : 0.023875 Median :-0.4712 Median :-0.02375
Mean : 0.004802 Mean :-0.0207 Mean :-0.01053
3rd Qu.: 0.778346 3rd Qu.: 0.6992 3rd Qu.: 0.56857
Max. : 2.253415 Max. : 2.9662 Max. : 3.14745
Alcalinity Magnesium Phenols
Min. :-2.66350 Min. :-2.08238 Min. :-2.10132
1st Qu.:-0.74709 1st Qu.:-0.62955 1st Qu.:-0.79110
Median :-0.14821 Median :-0.08693 Median : 0.16759
Mean :-0.04002 Mean : 0.08867 Mean : 0.04969
3rd Qu.: 0.60039 3rd Qu.: 0.71825 3rd Qu.: 0.80672
Max. : 3.14564 Max. : 4.35908 Max. : 2.53237
Flavanoids Nonflavanoids Proanthocyanins
Min. :-1.69120 Min. :-1.86298 Min. :-2.06321
1st Qu.:-0.79267 1st Qu.:-0.81841 1st Qu.:-0.59560
Median : 0.13589 Median :-0.17560 Median : 0.05958
Mean : 0.02124 Mean :-0.05118 Mean : 0.08015
3rd Qu.: 0.88424 3rd Qu.: 0.54756 3rd Qu.: 0.66672
Max. : 3.05422 Max. : 2.15459 Max. : 3.47527
Color Hue Dilution
Min. :-1.62969 Min. :-2.08884 Min. :-1.88972
1st Qu.:-0.82737 1st Qu.:-0.69978 1st Qu.:-0.96365
Median :-0.17603 Median : 0.05491 Median : 0.28636
Mean : 0.00959 Mean :-0.02603 Mean : 0.01557
3rd Qu.: 0.51953 3rd Qu.: 0.59085 3rd Qu.: 0.80398
Max. : 3.42577 Max. : 2.15491 Max. : 1.95540
Proline
Min. :-1.38102
1st Qu.:-0.77926
Median :-0.21560
Mean : 0.01084
3rd Qu.: 0.72039
Max. : 2.96311
> summary(data.test)
Type Alcohol Malic Ash
t1:18 Min. :-2.42739 Min. :-1.42895 Min. :-2.42949
t2:21 1st Qu.:-0.76139 1st Qu.:-0.62109 1st Qu.:-0.58874
t3:15 Median : 0.06083 Median :-0.21156 Median :-0.18778
Mean :-0.01103 Mean : 0.04753 Mean : 0.02417
3rd Qu.: 0.90768 3rd Qu.: 0.61196 3rd Qu.: 0.92396
Max. : 1.69911 Max. : 3.10045 Max. : 2.01748
Alcalinity Magnesium Phenols
Min. :-2.4838 Min. :-1.5223 Min. :-1.6220
1st Qu.:-0.5974 1st Qu.:-0.8221 1st Qu.:-1.0188
Median : 0.1512 Median :-0.4370 Median :-0.1839
Mean : 0.0919 Mean :-0.2036 Mean :-0.1141
3rd Qu.: 0.6004 3rd Qu.: 0.1581 3rd Qu.: 0.7468
Max. : 2.6965 Max. : 2.3986 Max. : 1.6056
Flavanoids Nonflavanoids Proanthocyanins
Min. :-1.5610513 Min. :-1.7826 Min. :-1.6614
1st Qu.:-0.9828915 1st Qu.:-0.7381 1st Qu.:-0.7834
Median : 0.0007312 Median :-0.2158 Median :-0.2724
Mean :-0.0487698 Mean : 0.1175 Mean :-0.1841
3rd Qu.: 0.7315653 3rd Qu.: 1.0498 3rd Qu.: 0.3610
Max. : 1.6125708 Max. : 2.3956 Max. : 2.3920
Color Hue Dilution
Min. :-1.36225 Min. :-1.82634 Min. :-1.84747
1st Qu.:-0.74973 1st Qu.:-0.88572 1st Qu.:-0.80872
Median :-0.13721 Median : 0.01116 Median : 0.18073
Mean :-0.02202 Mean : 0.05977 Mean :-0.03576
3rd Qu.: 0.42247 3rd Qu.: 0.82053 3rd Qu.: 0.75820
Max. : 2.24386 Max. : 3.29241 Max. : 1.33567
Proline
Min. :-1.48899
1st Qu.:-0.77608
Median :-0.38708
Mean :-0.02489
3rd Qu.: 0.91092
Max. : 2.54077
> library(nnet)
> model.nnet <- nnet(Type ~ ., data = data.tr, size = 2, decay = 5e-04, maxit = 200)
# weights: 37
initial value 164.152084
iter 10 value 7.066118
iter 20 value 1.286566
iter 30 value 0.542334
iter 40 value 0.444873
iter 50 value 0.365821
iter 60 value 0.335803
iter 70 value 0.311584
iter 80 value 0.298015
iter 90 value 0.288199
iter 100 value 0.281759
iter 110 value 0.276935
iter 120 value 0.270048
iter 130 value 0.261452
iter 140 value 0.258495
iter 150 value 0.257073
iter 160 value 0.256035
iter 170 value 0.255792
iter 180 value 0.255743
iter 190 value 0.255725
iter 200 value 0.255714
final value 0.255714
stopped after 200 iterations
>
> names(model.nnet)
[1] "n" "nunits" "nconn"
[4] "conn" "nsunits" "decay"
[7] "entropy" "softmax" "censored"
[10] "value" "wts" "convergence"
[13] "fitted.values" "residuals" "lev"
[16] "call" "terms" "coefnames"
[19] "xlevels"
>
> # Creating the confusion matrix for the model
> predicted <- predict(model.nnet, data.test, type = "class")
> predicted
[1] "t1" "t1" "t1" "t1" "t1" "t1" "t1" "t1" "t1" "t1" "t1" "t1"
[13] "t1" "t1" "t1" "t1" "t1" "t1" "t2" "t2" "t2" "t2" "t2" "t2"
[25] "t2" "t2" "t2" "t2" "t2" "t2" "t2" "t2" "t2" "t2" "t2" "t2"
[37] "t2" "t2" "t2" "t3" "t2" "t3" "t3" "t3" "t3" "t3" "t3" "t3"
[49] "t3" "t3" "t3" "t3" "t3" "t3"
>
> actual <- data.test$Type
> model.confusion.matrix <- table(actual, predicted)
> model.confusion.matrix
predicted
actual t1 t2 t3
t1 18 0 0
t2 0 21 0
t3 0 1 14
> confusion.matrix.rate = prop.table(model.confusion.matrix) * 100
> round(confusion.matrix.rate, digit = 2)
predicted
actual t1 t2 t3
t1 33.33 0.00 0.00
t2 0.00 38.89 0.00
t3 0.00 1.85 25.93
> diag.index <- cbind(1:3, 1:3)
>
> error.overall = sum(confusion.matrix.rate) - sum(confusion.matrix.rate[diag.index])
> paste("오차율 =", round(error.overall, digit = 2), "%")
[1] "오차율 = 1.85 %"
====== E.G. 3 ======
{{:r:creditset.csv}}
The dataset contains information on different clients who received a loan at least 10 years ago. The variables income (yearly), age, loan (size in euros) and LTI (the loan to yearly income ratio) are available. Our goal is to devise a model which predicts, based on the input variables LTI and age, whether or not a default will occur within 10 years.
set.seed(1234567890)
library("neuralnet")
dataset <- read.csv("creditset.csv")
head(dataset)
# extract a set to train the NN
trainset <- dataset[1:800, ]
# select the test set
testset <- dataset[801:2000, ]
## build the neural network (NN)
creditnet <- neuralnet(default10yr ~ LTI + age, trainset, hidden = 4, lifesign = "minimal",
linear.output = FALSE, threshold = 0.1)
## plot the NN
plot(creditnet, rep = "best")
__test the resulting output__
temp_test <- subset(testset, select = c("LTI", "age"))
creditnet.results <- compute(creditnet, temp_test)
head(temp_test)
results <- data.frame(actual = testset$default10yr, prediction = creditnet.results$net.result)
results[100:115, ]
results$prediction <- round(results$prediction)
results[100:115, ]
pred.table <- table(testset$default10yr, results$prediction)
pred.table
library(plyr)
count(testset, 'default10yr')
with outputs
> set.seed(1234567890)
> library("neuralnet")
>
> dataset <- read.csv("creditset.csv")
> head(dataset)
clientid income age loan LTI
1 1 66155.92510 59.01701507 8106.53213129 0.1225367511623
2 2 34415.15397 48.11715310 6564.74501768 0.1907515806612
3 3 57317.17006 63.10804949 8020.95329639 0.1399397996720
4 4 42709.53420 45.75197235 6103.64226014 0.1429105321411
5 5 66952.68885 18.58433593 8770.09923520 0.1309894999955
6 6 24904.06414 57.47160710 15.49859844 0.0006223320961
default10yr
1 0
2 0
3 0
4 0
5 1
6 0
>
> # extract a set to train the NN
> trainset <- dataset[1:800, ]
>
> # select the test set
> testset <- dataset[801:2000, ]
>
> ## build the neural network (NN)
> creditnet <- neuralnet(default10yr ~ LTI + age, trainset, hidden = 4, lifesign = "minimal",
+ linear.output = FALSE, threshold = 0.1)
hidden: 4 thresh: 0.1 rep: 1/1 steps: 7266 error: 0.79202 time: 2.94 secs
>
> ## plot the NN
> plot(creditnet, rep = "best")
>
> temp_test <- subset(testset, select = c("LTI", "age"))
>
> creditnet.results <- compute(creditnet, temp_test)
> head(temp_test)
LTI age
801 0.02306808811 25.90644520
802 0.13729704954 40.77430558
803 0.10456984914 32.47350580
804 0.15985046411 53.22813215
805 0.11161429579 46.47915325
806 0.11489364221 47.12736998
>
> results <- data.frame(actual = testset$default10yr, prediction = creditnet.results$net.result)
> results[100:115, ]
actual prediction
900 0 0.0000000000000000000000000015964854322398
901 0 0.0000000000000000000000000065162871249459
902 0 0.0000000000164043993271687692878796349660
903 1 0.9999999999219191249011373656685464084148
904 0 0.0000000000000000013810778585990655628959
905 0 0.0000000000000000539636283549268839978413
906 0 0.0000000000000000000234592312583964807452
907 1 0.9581419934268182725389806364546529948711
908 0 0.2499229633059938393557786184828728437424
909 0 0.0000000000000007044361454974903653282470
910 0 0.0006082559674722681341413332845036165963
911 1 0.9999999878713862200285689141310285776854
912 0 0.0000000000000000000000000015562211243506
913 1 0.9999999993455563895849991240538656711578
914 0 0.0000000000000000000000000000003082538282
915 0 0.0000000019359618836434052080615331181690
>
> results$prediction <- round(results$prediction)
> results[100:115, ]
actual prediction
900 0 0
901 0 0
902 0 0
903 1 1
904 0 0
905 0 0
906 0 0
907 1 1
908 0 0
909 0 0
910 0 0
911 1 1
912 0 0
913 1 1
914 0 0
915 0 0
> pred.table <- table(testset$default10yr, results$prediction)
> pred.table
0 1
0 1035 1
1 3 161
>
> library(plyr)
> count(testset, 'default10yr')
default10yr freq
1 0 1036
2 1 164
====== E.G 5 ======