Как создать модель из загруженного пользователем файла? - PullRequest
0 голосов
/ 19 января 2019

Я создал раздел загрузки файлов, который загружает и читает файлы CSV в виде таблицы:

ui <- fluidPage(

titlePanel("Upload Transaction Data Set"),

 sidebarLayout(

    sidebarPanel(

  fileInput("file1", "Choose CSV File",
            multiple = FALSE,
            accept = c("text/csv",
                     "text/comma-separated-values,text/plain",
                     ".csv")),
  tags$hr(),

  checkboxInput("header", "Header", TRUE),

  radioButtons("sep", "Separator",
               choices = c(Tab = "\t"),
               selected = "\t"),

  radioButtons("quote", "Quote",
               choices = c(None = "",
                           "Double Quote" = '"',
                           "Single Quote" = "'"),
               selected = '"'),

  tags$hr(),

   radioButtons("disp", "Display",
               choices = c(Head = "head",
                           All = "all"),
               selected = "head")

),

mainPanel(

  tableOutput("contents")
       )
)

Я также создал модели линейной регрессии, которые получают данные из набора данных:

thedata <- readxl::read_xlsx("data/transactionDataAlteredXLSX.xlsx")

set.seed(2)
library(caTools)
split <- sample.split(thedata, SplitRatio=0.7)

train <- subset(thedata, split=TRUE)
Actual <- subset(thedata, split=FALSE)


# Create the model
Model <- lm(Class ~.,data=train)
#Prediction
Prediction <- predict(Model, Actual)

#Comparing predicted vs actual model
plot(Actual$Class,type = "l",lty= 1.8,col = "red")
lines(Prediction, type = "l", col = "blue")
plot(Prediction,type = "l",lty= 1.8,col = "blue")
#Finding Accuracy

shinyApp(ui, server)

Как сделать так, чтобы модели линейной регрессии формировали результат загрузки файла, а не из набора данных 'thedata'?

Спасибо.

Edit:

Преобразовал файл во фрейм данных, как предложено в коде сервера, затем я изменил «thedata» на «df» в коде регрессии, но теперь я получаю ошибку «unique () относится только к фрейму данных векторов», любые идеи :

server <- function(input, output) {

output$contents <- renderTable({

req(input$file1)

df <- read.csv(input$file1$datapath,
         header = input$header,
         sep = input$sep,
         quote = input$quote)

if(input$disp == "head") {
  return(head(df))
}
else {
  return(df)
}

})

}

1 Ответ

0 голосов
/ 19 января 2019

Вот упрощенная версия кода, который вы приложили. Файл, который я выбрал, является стандартным набором данных mtcars. Вы можете сохранить это на своем компьютере, вызвав эту функцию:

write.csv(mtcars,file = "~/Desktop/Data.csv",row.names = FALSE)

То, что я здесь делаю, - это прочитал полный набор обучающих данных, выполнил простую линейную регрессию и вывел прогнозируемый фрейм данных на пример набора тестовых данных (я жестко закодировал это сейчас).

ui <- fluidPage(

  titlePanel("Upload Transaction Data Set"),

  sidebarLayout(

    sidebarPanel(

      fileInput("file1", "Choose CSV File",
                multiple = FALSE,
                accept = c("text/csv",
                           "text/comma-separated-values,text/plain",
                           ".csv"))

    ),
    mainPanel(
      tableOutput("prediction")
    )
  )
)

server = function(input,output){
  df = reactive({
    req(input$file1)
    read.csv(file = input$file1$datapath)
  })

  #Perform Regression
  output$prediction = renderTable({
    req(df())
    model = lm(mpg ~ disp+hp,data = df())

    sample_df = data.frame(disp = c(100,200),hp = c(100,200))
    prediction = predict(model,sample_data)

    predict_df = data.frame(mpg = prediction)
    output_df = cbind(sample_df,predict_df)
    return(output_df)
  })
}

shinyApp(ui,server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...