Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
105 changes: 53 additions & 52 deletions shiny/003-play-golf/app.R
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,18 @@ library(data.table)
library(RCurl)
library(randomForest)

# Read data
weather <- read.csv(text = getURL("https://raw.githubusercontent.com/dataprofessor/data/master/weather-weka.csv") )
# Read data, at first I got an error message stating,
# Error in y - ymean : non-numeric argument to binary operator
# Until I put in line 20 and lines 23-25. Fixed bug.
weather <- read.csv(
text = getURL("https://raw.githubusercontent.com/dataprofessor/data/master/weather-weka.csv"),
stringsAsFactors = FALSE
)

weather$play <- as.factor(weather$play)
weather$outlook <- as.factor(weather$outlook)
weather$windy <- as.factor(weather$windy)


# Build model
model <- randomForest(play ~ ., data = weather, ntree = 500, mtry = 4, importance = TRUE)
Expand All @@ -29,35 +39,35 @@ model <- randomForest(play ~ ., data = weather, ntree = 500, mtry = 4, importanc
####################################

ui <- fluidPage(theme = shinytheme("united"),

# Page header
headerPanel('Play Golf?'),

# Input values
sidebarPanel(
HTML("<h3>Input parameters</h3>"),

selectInput("outlook", label = "Outlook:",
choices = list("Sunny" = "sunny", "Overcast" = "overcast", "Rainy" = "rainy"),
selected = "Rainy"),
sliderInput("temperature", "Temperature:",
min = 64, max = 86,
value = 70),
sliderInput("humidity", "Humidity:",
min = 65, max = 96,
value = 90),
selectInput("windy", label = "Windy:",
choices = list("Yes" = "TRUE", "No" = "FALSE"),
selected = "TRUE"),

actionButton("submitbutton", "Submit", class = "btn btn-primary")
HTML("<h3>Input parameters</h3>"),
selectInput("outlook", label = "Outlook:",
choices = list("Sunny" = "sunny", "Overcast" = "overcast", "Rainy" = "rainy"),
selected = "Rainy"),
sliderInput("temperature", "Temperature:",
min = 64, max = 86,
value = 70),
sliderInput("humidity", "Humidity:",
min = 65, max = 96,
value = 90),
selectInput("windy", label = "Windy:",
choices = list("Yes" = "TRUE", "No" = "FALSE"),
selected = "TRUE"),
actionButton("submitbutton", "Submit", class = "btn btn-primary")
),

mainPanel(
tags$label(h3('Status/Output')), # Status/Output Text Box
verbatimTextOutput('contents'),
tableOutput('tabledata') # Prediction results table

tags$label(h3('Status/Output')), # Status/Output Text Box
verbatimTextOutput('contents'),
tableOutput('tabledata') # Prediction results table
)
)

Expand All @@ -66,35 +76,26 @@ ui <- fluidPage(theme = shinytheme("united"),
####################################

server <- function(input, output, session) {



# Refactored the 'datasetInput' reactive expression
# Input Data
datasetInput <- reactive({

# outlook,temperature,humidity,windy,play
df <- data.frame(
Name = c("outlook",
"temperature",
"humidity",
"windy"),
Value = as.character(c(input$outlook,
input$temperature,
input$humidity,
input$windy)),
stringsAsFactors = FALSE)

play <- "play"
df <- rbind(df, play)
input <- transpose(df)
write.table(input,"input.csv", sep=",", quote = FALSE, row.names = FALSE, col.names = FALSE)

test <- read.csv(paste("input", ".csv", sep=""), header = TRUE)

test$outlook <- factor(test$outlook, levels = c("overcast", "rainy", "sunny"))


Output <- data.frame(Prediction=predict(model,test), round(predict(model,test,type="prob"), 3))
print(Output)

# Create the dataframe with correct types immediately
test <- data.frame(
outlook = factor(input$outlook, levels = levels(weather$outlook)),
temperature = as.numeric(input$temperature),
humidity = as.numeric(input$humidity),
windy = factor(input$windy, levels = levels(weather$windy))
)

# Generate prediction
Output <- data.frame(
Prediction = predict(model, test),
round(predict(model, test, type = "prob"), 3)
)
print(Output)
})

# Status/Output Text Box
Expand All @@ -118,4 +119,4 @@ server <- function(input, output, session) {
####################################
# Create the shiny app #
####################################
shinyApp(ui = ui, server = server)
shinyApp(ui = ui, server = server) `