r - Random forest using caret not working in shiny -


i trying random forest using caret package in shiny.....was trying print variable importance random forest model output....following code below...

library(shiny)  pacman::p_load(amelia,broom,caret,cluster,clustertend,clvalid,corrplot,dbscan,dplyr,dt,data.table,forecast,fpc,fpdclustering,fpp,ggally,ggfortify,ggraph,ggplot2,ggrepel,ggthemes,gmodels,googlevis,gridextra,igraph,knitr,mice,missforest,nbclust,optcluster,pacman,plyr,purrr,qcc,randomforest,rcharts,reshape2,tibble,tidyr,tidyverse,tsa,tseries,vegan,vim,zoo)   library(markdown) library(imputets) 

define ui application

 ui <- navbarpage(    # application title   titlepanel("ms iima_paper shinyapp "),    # sidebar layout input , output definitions ----   sidebarlayout(      # sidebar panel inputs ----     sidebarpanel(        # input: select file ----       fileinput("dataset", "choose csv file",                 multiple = true,                 accept = c("text/csv",                            "text/comma-separated-values,text/plain",                            ".csv")),       # include clarifying text ----       helptext("note: first select dataset of csv format app give insight!!"),       # horizontal line ----       tags$hr(),        # input: checkbox if file has header ----       checkboxinput("header", "header", true),        # input: select separator ----       radiobuttons("sep", "separator",                    choices = c(comma = ",",                                semicolon = ";",                                tab = "\t"),                    selected = ","),        # horizontal line ----       tags$hr(),         # input: actionbutton() defer rendering of output ----       # until user explicitly clicks button (rather       # doing when inputs change). useful if       # computations required render output inordinately       # time-consuming.       actionbutton("update", "update button", class = "btn-primary"),       tags$hr()       ),        # show plot of generated distribution       mainpanel(         tabsetpanel(           navbarmenu("random forest",                      tabpanel("structure of data",                               h4("input data str"),                               verbatimtextoutput("summary_rf")),                      tabpanel("varimp-gini (table)",                               h4("variable importance"),                               verbatimtextoutput("varimp"))            )           )           )    ) ) 

define server logic required draw histogram

 server <- function(input, output) {    datasetinput <- eventreactive(input$update, {     read.csv(input$dataset$datapath,              header = input$header,              sep = input$sep)   }, ignorenull = false)    #selecting numeric variables   ms.num<- reactive({sapply(datasetinput(), is.numeric)})   ms.data.in.num <- reactive({datasetinput()[ , ms.num()]})   # imputing nas zeros   df<- reactive({imputets::na.replace(ms.data.in.num(), 0)})   # keeping sample of 10k modeling   sample_data <-reactive({df()[1:10000,]})     #### kmeans    opt.cluster=9   set.seed(115)   ms.data.kmeans.mdl <- reactive({kmeans(scale(sample_data()),opt.cluster,nstart=25)})    # appending clusters raw sample data    x<-reactive({     cluster<-ms.data.kmeans.mdl()$cluster     cluster   })      add_to_df <- reactive({     sample_data1<-cbind(sample_data(),x())     sample_data1    })    ##### random forest on kmeans data   # cluster.means1<-reactive({   #   cluster1<-ms.data.kmeans.mdl()$cluster   #   cluster1   # })    ms.data_kmeans<-reactive({     df<-add_to_df() %>% mutate_each(funs(as.factor),one_of("x()"))     df   })     # generate summary of dataset ----   output$summary_rf <- renderprint({     dataset <- ms.data_kmeans()     str(dataset)   }) 

caret package

  # var imp using caret    # create training , test sets (75:25 split) using 'caret' package   set.seed(123)# reproducibility   intrain <- reactive({caret::createdatapartition(y = as.factor(ms.data_kmeans()$cluster.kmeans()), p = 0.75, list = false)})     # subset   training <- reactive({ms.data_kmeans()[intrain(), ]})    testing <- reactive({ms.data_kmeans()[-intrain(), ]})      # random forest using caret package   set.seed(122)   modfit.rfcaret <- reactive({caret::train(cluster.kmeans~ ., method = "rf",data =training(),trcontrol = traincontrol(method = "cv"), number = 25)})     output$varimp <- renderprint({     rfimp=varimp(modfit.rfcaret(),scale = false)     dataset<-setdt(rfimp$importance, keep.rownames = true)[]     dataset   })   }  # run application  shinyapp(ui = ui, server = server) 

i getting following error:

warning: error in caret::createdatapartition: attempt apply non-function stack trace (innermost first):     130: caret::createdatapartition     129: <reactive:intrain> [c:\users\admin\documents\shiny_test/app.r#155]     118: intrain     117: [.data.frame     116: [ [c:\users\admin\documents\shiny_test/app.r#158]     115: <reactive:training> [c:\users\admin\documents\shiny_test/app.r#158]     104: training     103: eval     102: eval     101: eval.parent     100: train.formula      99: caret::train      98: <reactive:modfit.rfcaret> [c:\users\admin\documents\shiny_test/app.r#164]      87: modfit.rfcaret      86: varimp      85: renderprint [c:\users\admin\documents\shiny_test/app.r#167]      84: func      83: eval      82: eval      81: withvisible      80: evalvis      79: utils::capture.output      78: paste      77: origrenderfunc      76: output$varimp       1: runapp 

i unable debug problem is.

head(df) # after appending cluster.kmeans raw data  ##   mob.data mob.sms mob.voice prepaid.sms mob.pre.voice mob.data.upld ## 1      634      80      85.8           2           8.8            46 ## 2       16      27     247.9          39           3.0             0 ## 3      560     532       8.3           3          59.1           231 ## 4     5582      23     157.4         942           2.6           385 ## 5     7176      31      27.6         300           3.5             0 ## 6      524      76      13.5          11           8.4           268 ##   mob.data.dwnld mob.sms.amt mob.voice.amt mob.data.amt cluster.kmeans ## 1            628        1.39          34.8           35              5 ## 2             18        0.52           1.2           20              9 ## 3            660        2.61           2.6           37              2 ## 4           5212        2.09           2.0           35              8 ## 5           6817        8.70           1.0           31              8 ## 6            476        0.17           2.6           35              8 

error says there must problem part of code has smthg createdatapartition(). after quick @ code assumed problem might in part:

...createdatapartition(y = as.factor(ms.data_kmeans()$cluster.kmeans())... 

more here:

ms.data_kmeans()$cluster.kmeans() 

cluster.kmeans() not reactive argument, ms.data_kmeans() reactive, therefore should use: cluster.kmeans. therefore here solution:

...createdatapartition(y = as.factor(ms.data_kmeans()$cluster.kmeans)... 

Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -