如何减少Shiny应用程序保存的线性模型的大小?

时间:2016-03-30 08:59:11

标签: r regression

我试图创建一个闪亮的应用程序,允许我拟合线性模型,显示有关它们的信息,然后保存它们。

我遇到了一个问题:当我保存模型时,它需要一个巨大的位置。这是一个简化的代码:

library(shiny)
library(ggplot2)

ui <- shinyUI(fluidPage(
    titlePanel("Save linear Model"),

    sidebarLayout(
      sidebarPanel(
        actionButton("save","SAVE !")
      ),

      mainPanel(
       textOutput("saved")
      )
    )
))


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

  load("donnees/new/V283/V283_complete.RData")

  observeEvent(input$save,{

    lm.fit<-lm(price~.,data=diamonds)
    save(lm.fit, file="question-x-validated/my-model.RData")
    output$saved<-renderText("Saved")

  })

})

shinyApp(ui = ui, server = server)

事实上,我在我的应用中创建/加载的对象越多,我保存的模型就越大。例如,我加载的对象:

load("donnees/new/V283/V283_complete.RData")

是275.1MB。如果我在加载后保存我的lm.fit,我的rdata文件是36.9Mb。如果我保存我的lm.fit而不加载它,我的文件是13Mb。 如果我直接从R保存我的lm.fit(不使用我的闪亮应用程序),文件是 6,57Mb

正如this link中所述,这可能是一个环境问题。但在我看来,我使用闪亮的事实增加了一些困难,因为上述链接建议的技术都不适用于我的情况。

我也尝试过使用saveRDS功能。并且还取代了:

lm.fit<-lm(price~.,data=diamonds)

通过

assign("lm.fit",lm(price~.,data=diamonds),envir=globalenv())

它会改变文件大小,但它永远不会达到6.57Mb。

在我的真实代码中,我导入了非常大的数据集,我的真实模型变得非常庞大(超过500Mb),并且当加载/保存这些模型时,它使我的Shiny App非常慢。

我非常感谢您提供的任何帮助。

编辑:

看来我的问题来自&#34;条款&#34;我的模型的元素,就像我做的那样:

lm.fit<-lm.fit[1:11]

在保存我的模型之前,我的文件是5.92Mb!但正如你所知,&#34;术语&#34;使用predict()需要元素。而且只做:

attr(lm.fit$terms,".Environment") = c()

不起作用。

另外,有趣的事情:

lm.fit$terms<-NULL {p> lm.fit<-lm.fit[-12]lm.fit<-lm.fit[1:11]不会改变任何内容 确实

1 个答案:

答案 0 :(得分:1)

查看this great post有关减少glm / lm对象上脂肪大小的一些方法/信息。

I use this method, which I took from the above.