May 12, 2019

Introduction

Iris cluster is partioning iris data set depending on respnse and predictors in R. It enables user to find the btter way to define proper numbr of clusters and data arttributes that best fit in respose visually among bunch of potential alternatives.

The following variables are available

  • Sepal.Length
  • Sepal.Width
  • Petal.Length
  • Petal.Width
  • Species

ui.R code

library(shiny)
shinyUI(pageWithSidebar(
    headerPanel('Iris k-means clustering'),
    sidebarPanel(
        selectInput('xcol', 'X Variable', names(iris)),
        selectInput('ycol', 'Y Variable', names(iris),
                    selected=names(iris)[[2]]),
        numericInput('clusters', 'Cluster count', 3,
                     min = 1, max = 9)
    ),
    mainPanel(
        plotOutput('plot1')
    )
))

server.R code

library(shiny)
shinyServer(function(input, output, session) {

    # Combine the selected variables into a new data frame
    selectedData <- reactive({
        iris[, c(input$xcol, input$ycol)]
    })

    clusters <- reactive({
        kmeans(selectedData(), input$clusters)
    })

    output$plot1 <- renderPlot({
        palette(c("#E41A1C", "#377EB8", "#4DAF4A", "#984EA3",
                  "#FF7F00", "#FFFF33", "#A65628", "#F781BF", "#999999"))

        par(mar = c(5.1, 4.1, 0, 1))
        plot(selectedData(),
             col = clusters()$cluster,
             pch = 20, cex = 3)
        points(clusters()$centers, pch = 4, cex = 4, lwd = 4)
    })

})

Sample clustering

Links to My app