是否可以在闪亮中向用户显示数据集(表格)(前端)并从该数据集中选择要在后端处理的“单个”行。
情形:
我正在使用UCI数据集“https://archive.ics.uci.edu/ml/datasets/Human+Activity+Recognition+Using+Smartphones”在R中使用传感器数据应用开发简单的人类活动(坐,跑,走等)识别 。我将使用数据集训练某个分类模型说天真的贝叶斯,然后从该数据集中我想给我训练的模型一行该数据集并找到(识别)该行所属的活动类别。每行包含特定实例的传感器的各种属性的值。
我将开发它作为用户交互式应用程序“因此使用闪亮”并希望我的整个数据集在前端(csv表单)以及一些选项(比如复选框)可见以选择单行并提供我的在后端建模要处理的行。
我知道这可能看起来不是非常互动的应用程序,但我想“从前端控制”哪一行被处理,以便我可以预测该特定传感器数据的活动。是否可能以某种方式?
注意:从数据集(在前端可见)我的意思是只有包含560个属性的csv文件,我没有兴趣识别人(即1-30)我只想要活动。
答案 0 :(得分:0)
是的,这绝对是可能的。正如@ s.brunel所提到的那样,DT
包非常容易。
下面是一个玩具示例,我们在其中运行通过模型单击的行。
library("shiny")
library("dplyr")
library("DT")
library("rpart")
set.seed(1)
# set an id variable
iris <- iris %>% mutate(id = row_number())
# select a training set
train_iris <- iris %>%
group_by(Species) %>%
sample_frac(0.75)
# select the testing rows
test_iris <- anti_join(iris, train_iris, by = 'id')
# build the model
fit <- rpart(Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, data = test_iris)
ui <- fluidPage(
DT::dataTableOutput('unscored'),
DT::dataTableOutput('scored')
)
server <- function(input, output) {
# display the data that is available to be scored
output$unscored <- DT::renderDataTable(test_iris)
scored_data <- reactive({
# make sure there are rows to score
shiny::validate(
need(length(input$unscored_rows_selected) > 0, "Select rows to score!")
)
score_dat <- test_iris[input$unscored_rows_selected, ]
# return the data with the prediction
data.table(
score_dat,
predicted = predict(fit, score_dat, type = "class")
)
})
# display the scored data once processed by the model
output$scored <- DT::renderDataTable(scored_data())
}
shinyApp(ui, server)