# create some data...
iris_s <- as.matrix(scale(iris[1:4]))
# use a randomly picked subset of (scaled) iris data for training.
training_cases <- sample(1:nrow(iris_s), nrow(iris_s)/2,replace=FALSE)
train_set <- iris_s[training_cases,]
train_class_ids <- as.integer(iris$Species[training_cases])
train_num_cases <- nrow(train_set)
train_num_variables <- ncol(train_set)
train_num_classes <- max(train_class_ids)
# create output dataset to be used for training.
# Here we encode class as 0s and 1s (one-hot encoding).
train_set_data_out <- matrix(
data = 0,
nrow = train_num_cases,
ncol = train_num_classes)
# now for each case, assign a 1 to the column corresponding to its class, 0 otherwise
# (note: there are better R ways to do this in R)
for(r in 1:train_num_cases) train_set_data_out[r,train_class_ids[r]]=1
# done with data, let's use BP...
bp<-new("BP")
bp$encode(train_set,train_set_data_out,0.8,10000,2,4)
# let's test by recalling the original training set...
bp_output <- bp$recall(train_set)
cat("- Using this demo's encoding, recalled class is:\n")
print(apply(bp_output,1,which.max))
cat("- BP success in recalling correct class is: ",
sum(apply(bp_output,1,which.max)==train_class_ids)," out of ",
train_num_cases, "\n")
# Let's see how well it recalls the entire Iris set:
bp_output <- bp$recall(iris_s)
# show output
cat("\n- Recalling entire Iris set returns:\n")
print(bp_output)
cat("- Using this demo's encoding, original class is:\n")
print(as.integer(iris$Species))
cat("- Using this demo's encoding, recalled class is:\n")
bp_classification <- apply(bp_output,1,which.max)
print(bp_classification)
cat("- BP success in recalling correct class is: ",
sum(apply(bp_output,1,which.max)==as.integer(iris$Species)),
"out of ", nrow(iris_s), "\n")
plot(iris_s, pch=bp_classification, main="Iris classified by a partialy trained BP (module)")
Run the code above in your browser using DataLab