2016-06-14 77 views
-1

我想在我的數據上執行邏輯迴歸R。 我已經創建了所有的模型變量,並在我的Redshift數據庫的表中將它們置於 的位置。 讓我們參考這個數據庫作爲數據庫,用一個「和表作爲 「表A」在4GB RAM的Latop上運行邏輯迴歸可行嗎

問題陳述

是帶着4 GB RAM

筆記本電腦上運行邏輯迴歸是可行的我不想做

我不想等待我的查詢執行, 並等待它顯示所有記錄。我有大約200萬條記錄。 我對右鍵單擊不感興趣,然後將結果另存爲 CSV文件。我認爲這非常耗時。

我的研究和dplyr包。

我已經通過this關於將R連接到亞馬遜的博客Redshift 它討論通過RJDBC包建立連接。 我從我的個人筆記本電腦連接到Redshift。我在筆記本電腦上提供了 R版本供您參考。我的筆記本電腦上的version命令輸出以下內容。

platform  x86_64-w64-mingw32   
arch   x86_64      
os    mingw32      
system   x86_64, mingw32    
status          
major   3       
minor   2.5       
year   2016       
month   04       
day   14       
svn rev  70478      
language  R       
version.string R version 3.2.5 (2016-04-14) 
nickname  Very, Very Secure Dishes 

我能夠創建到紅移的連接。我用tbl函數創建了一個R對象,指向我在Amazon Redshift中的'表A'。 該sudo代碼是

myRedshift <- src_postgres('Database A', 
host = 'Host_name', 
port = Portnumber, 
user = "XXXX", 
password = "XXXX") 

my.data <- tbl(myRedshift, "Table A") 

這工作正常。我檢查了尺寸。他們是正確的。

我沒有下一個什麼

我試圖使用tbl_df函數到 my.data對象的值存儲在中的R的數據幀來執行邏輯迴歸。 但該操作只持續運行超過50分鐘。我中止[R

我也試圖鏈結果爲數據幀作爲

new.data <- my.data %>% select(*) 

但是,這給了我的錯誤。我有超過15列,我不想 輸出每列的名稱。

我在網上搜索,並遇到了SparkR它似乎可以幫助我 我按照this鏈接中提到的說明。但當 我在我的windows cmd終端上運行.\bin\sparkR命令。我得到一個 錯誤說

Access is denied 
The system cannot find the file 'C:\Users\Name\AppData\Local\Temp' 
The system cannot find the path specified. 

我應該如何糾正這個錯誤? 在Redshift 中存儲我的表中的數據以便執行邏輯迴歸的有效方法是什麼? 我知道unload函數輸出管道分隔文件, 我應該問我的IT部門使用卸載功能?

+0

看起來您已成功加載數據框,這與「在R'環境中查找從Redshift的數據庫A中的表A獲取數據的有效方法」相矛盾。看來你的問題更多的是運行邏輯迴歸所花費的時間。回答真正的問題:「在具有4GB RAM的筆記本電腦上進行200萬次觀察後進行邏輯迴歸是否可行?」答案不僅取決於觀察次數,而且還取決於變量的數量以及正在使用的R函數 – SpiritusPrana

+0

請您添加(a)您用於迴歸的公式(b)str()的結果my.data)和(c)用於運行邏輯迴歸的R命令的語法。 – SpiritusPrana

+0

此外,如果您有權訪問分佈式處理羣集,SparkR將爲您提供幫助。 Spark旨在有效地將分析工作負載分佈到集羣中。在筆記本電腦上以本地模式運行時,它不會增加很多效率,甚至可能比基本R功能慢。 – SpiritusPrana

回答

-1

所以我有一個臨時的解決我的問題

正如所強調的,主要的問題是所用的時間,我不清楚 如何解釋tbl功能。

什麼幫助我使用dplyrRedshiftcollect函數。 我可以很容易地使用mutatetransform。 而不是使用baseR方法str有什麼幫助是 glimpse功能。它返回my.data是否是數據框,尺寸爲 以及所有變量的數據類型。

但是collect需要大量時間來創建預測變量。 我有超過一百萬行的模型中有6個預測變量。我試圖創造我的迴歸者

regressors <- my.data %>% 
       filter(required filters) %>% 
       select(predictor1, ..., predictor6) %>% collect 

但是這需要一個多小時。我中止了手術。我加了一個

predictor1 <- my.data %>% filter(required filters) %>% 
       select(predictor1) %>% collect 

的 預測一個我這樣做是爲所有6點各包含超過100萬條記錄的預測。 「數字predictors took around 5 minutes to be created. But predictors which were of type字符」需要10-15分鐘才能創建。

對於建模我使用glmnet功能,它工作正常。

如果有更好的方法來創建我的預測矩陣讓我知道。