Я пытаюсь создать блестящее приложение, которое использует алгоритм классификации для прогнозирования переменной ответа. Там нет никаких проблем с моделью или функции predict
когда работал на R. Однако, включено в блестящем, это дает следующее сообщение об ошибке:Ошибка: переменные, заданные разными типами из вставки в блестящие
Error: variables ‘X1’, ‘X2’, ‘X3’ were specified with different types from the fit.
Вот данные я создал для упрощения задачи:
data1 <- data.frame(replicate(1,sample(c("a","b"), 1000, rep = TRUE)),
replicate(3, sample(0:1, 1000, rep = TRUE)))
colnames(data1)[1] <- "outcome"
где переменный «результат» представляет собой переменную отклика, а «X1», «X2» и «X3» являются предикторами.
Модель, которую я обучил, следующая:
modelFit <- train(outcome ~ ., data = data1, method = "glm")
Это Server.R
library(shiny)
library(caret)
library(shinyapps)
shinyServer(function(input, output){
modelFit <- readRDS("modelFit.Rds")
userdf <- data1[1,]
values <- reactiveValues()
values$df <- userdf
newEntry <- observe({
values$df$X1 <- input$X1
values$df$X2 <- input$X2
values$df$X3 <- input$X3})
output$results <- renderPrint({
ds1 <- values$df
a <- predict(modelFit, newdata = data.frame(ds1))
names(a) <- NULL
cat(a)
})
})
и UI.R является
library(shiny)
shinyUI(fluidPage(
tags$head(
tags$style(HTML("
@import url('//fonts.googleapis.com/css?family=Lobster|Cabin:400,700');
h1 {
font-family: 'Lobster', cursive;
font-weight: 500;
line-height: 1.1;
color: #48ca3b;
}
"))
),
# Application title
titlePanel(" Predictor",
windowTitle = "random Predictor"),
h5("Just for Fun"),
sidebarLayout(sidebarPanel(
hr(),
h5('Enter parameters for prediction:'),
hr(),
selectInput("X1",
label = h6("Numer of Bronze Badges"),
choices = unique(data1$X1)),
selectInput("X2",
label = h6("Numer of Silver Badges"),
choices = unique(data1$X2)),
selectInput("X3",
label = h6("Numer of blue Badges"),
choices = unique(data1$X3))
), #ends sidebarPanel
mainPanel(
tabsetPanel(
tabPanel("Results", h2("The output is"),
h2(verbatimTextOutput("results")),
h2(" answers to your question."),
p(), "Note:" , p(), "Look for it"))
)
)
))
Заранее спасибо за помощь.