2016-03-30 6 views
1

私は、線形モデルにフィットし、それらについての情報を表示して保存することができる光沢のあるアプリケーションを作成しようとしています。Shinyアプリケーションで保存される線形モデルのサイズを小さくするにはどうすればよいですか?

私は問題に直面しています。私がモデルを保存すると、それは大きな場所をとります。ここでは単純化されたコードです:実際には

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以上)、これらのモデルを読み込んだ/保存すると、

本当にありがとうございます。

EDIT:

私がやるかのように私の問題は、私のモデルの「用語」の要素から来ているようだ:

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

前に私のモデルを保存するには、私のファイルは5.92Mbです!しかし、あなたが知っているように、 "terms"要素はpredict()を使うために必要です。そして、実行している:

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

は機能しません。

また、面白いこと:lm.fit<-lm.fit[1:11] はないながら

​​とlm.fit<-lm.fit[-12]は何も変わりません。

+0

SOに移行する投票。ソフトウェア固有の質問については、ヘルプセンターのアドバイスをご覧ください。本質的に、CVはコードのアドバイスやデバッグのためのものではありません。 –

+0

これは、統計的な問題ではなく、主にコーディングの問題であるようです。CrossValidatedのトピックについては、[ヘルプ/トピック]をご覧ください。 StackOverflowで答えを得るのに十分な情報を提供してくれたようです。最も可能性の高い結果は、これがそこに移行されるため、あなた自身でクロスポストする必要はありません。 – Silverfish

答えて

1

glm/lmオブジェクトの脂肪のサイズを縮小する方法については、this great postをご覧ください。

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

+0

私の投稿を編集しました:私の問題はterms要素から来ているようですが、あなたの投稿に示唆されているように 'attr(lm.fit $ terms、" Environment ")= c()'は動作しません。 – mdebbiche

+0

[このコード](https://gist.github.com/DexGroves/0ab74856ecfc8e8abc66e3d792abb0f4)はあなたのために実行されますか? 'lm'と' glm'オブジェクトを問題なく切り取ることができます。 'attr(lm.fit $ terms、"。Environment ")= c()'行は正常に実行されます。 モデルの 'strip_glm'を実行する前後の' object.size'とは何ですか? –

+0

Mea culpa、うまく動作します。非常に多くのスペースを節約しました。どうもありがとうございました。 – mdebbiche

関連する問題