-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.R
78 lines (68 loc) · 2.14 KB
/
app.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# AUTHOR - Tilak Putta
# Date - 8th March, 2018
library(shiny)
library(kohonen)
ui <- shinyUI(fluidPage(
# Application title
titlePanel("SOM"),
sidebarLayout(
sidebarPanel(
fileInput("dataset", "Choose CSV File",
accept = c(
"text/csv",
"text/comma-separated-values,text/plain",
".csv")
),
tags$hr(),
checkboxInput("header", "Header", TRUE),
actionButton("showDataset", "Show Dataset"),
numericInput("xNeurons", "Number of Neurons on X dimension", 2),
numericInput("yNeurons", "Number of Neurons on Y dimension", 1),
numericInput("groups", "Number of Clusters", 2)
),
mainPanel(
titlePanel("Dataset:\n"),
tableOutput("dataset"),
titlePanel('Neurons Dimensions: \n'),
textOutput("neuronsDimensions"),
plotOutput("somplot")
)
)
))
server <- shinyServer(function(input, output) {
observeEvent(input$showDataset, {
inputFile <- input$dataset
output$dataset <- if (is.null(inputFile)) {
renderText({
'Upload Dataset'
})
} else {
renderTable({
read.csv(inputFile$datapath, header = input$header)
})
}
})
output$neuronsDimensions <- renderText({
paste('x = ',input$xNeurons,', y = ',input$yNeurons, ', clusters = ', input$groups)
})
observe(
output$somplot <- renderPlot({
inputFile <- input$dataset
if (is.null(inputFile)) {
return(NULL)
}
data <- read.csv(inputFile$datapath, header = input$header)
data = data[, -c(5)]
sommap <- som(scale(data), grid = somgrid(input$xNeurons, input$yNeurons, "hexagonal"))
## use hierarchical clustering to cluster the codebook vectors
groups <- input$groups
som.hc <- cutree(hclust(dist(sommap$codes[[1]])), groups)
#plot
plot(sommap, type="codes", bgcol=rainbow(groups)[som.hc])
#cluster boundaries
#add.cluster.boundaries(sommap, som.hc)
})
)
})
# Run the application
shinyApp(ui = ui, server = server, options = list(port = 9177))