library(shiny)
library(caret)
data("mixture.example", package = "ElemStatLearn")
x <- mixture.example$x
g <- mixture.example$y
xnew <- mixture.example$xnew
df = data.frame(x = x[, 1], z = x[, 2], y = factor(g, labels = c("No", "Yes")))
dd = data.frame(x = xnew[, 1], z = xnew[, 2])
server = function(input, output) {
slider = reactive({
if (input$method == "knn")
sliderInput("k", "# Nearest Neighoburs",
min = 1, max = 30, step = 2, value = 10)
})
output$slider = renderUI({
slider()
})
grid = reactive({
if (input$method == "knn") data.frame(k = input$k)
else NULL
})
modelfit = reactive({
train(y ~ x + z, data = df, method = input$method, tuneGrid = grid(),
trControl = trainControl(method = "none"),
preProcess = c("center", "scale"))
})
output$plot = renderPlot({
jrPredictive::boundary_plot(
modelfit(), df$x, df$z,
df$y, lwd = 5, jitter = FALSE
)
})
}
ui = fluidPage(
titlePanel("Classification boundaries"),
sidebarLayout(
sidebarPanel(
radioButtons("method", "Classifier",
choices = c("lda", "qda", "knn", "glm")),
uiOutput("slider")
),
mainPanel(plotOutput("plot"))
)
)
shinyApp(server = server, ui = ui)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.