rrstudiorbm

How do I calculate RBM accuracy for larger dataset other than MNIST and what is the simple coding in R Studio?


I try to run my coding in R studio but it cannot produce the accuracy result. Can you help me with the example of coding to predict accuracy in larger dataset in R Studio using RBM method ? My expected output :1 However my coding below have some errors in predict the accuracy of my dataset using RBM method.

install.packages("devtools")
# Load devtools library(devtools)
# install RBM install_github("TimoMatzen/RBM")
# load RBM library(RBM)

Wednesdaydataset <- read.csv('C:\\Users\\FSKKP\\Desktop\\R iqa\\dataset20181220T065754Z-001\\dataset\\Wednesday-workingHours.pcap_ISCX.csv') 
Wednesdaydataset
class(Wednesdaydataset) 
str(Wednesdaydataset) 
Wednesdaydataset <-as.matrix(Wednesdaydataset) 
Wednesdaydataset <-cbind(Wednesdaydataset) 
class(Wednesdaydataset)
str(Wednesdaydataset)
view(Wednesdaydataset) 
set.seed(1234)
ind<-sample(2,nrow(Wednesdaydataset),replace = TRUE,prob=c(0.7,0.30))
train.data<-Wednesdaydataset [ind==1,] 
test.data<-Wednesdaydataset [ind==2,]

# First get the train data from train.data 
train <- train.data$Active.Min
# Then fit the model
 modelRBM <- RBM(x = train, n.iter = 1000, n.hidden = 100, size.minibatch = 10)

# First get the train labels of test.data 
test <- test.data$Active.Min
# This time we add the labels as the y argument
modelClassRBM <- RBM(x = train, y = test, n.iter = 1000, n.hidden = 100, size.minibatch = 10)

# First get the test labels of test.data 
test <- test.data$Active.Min
# Give our ClassRBM model as input
PredictRBM(test = test, labels = test, model = modelClassRBM)

Solution

  • You just sum the diagonal and divide it with the total sum:

    # Some lables (like your outputs from RBM)
    lab_true <- c("a", "a", "a", "b", "c")
    lab_pred <- c("a", "b", "c", "b", "a")
    
    # Making them into a confusion matrix
    confusion_matrix <- table(lab_true, lab_pred)
    
    # Calculating overall precision
    overall_precision <- sum(diag(confusion_matrix))/sum(confusion_matrix)