【发布时间】:2016-06-14 13:10:46
【问题描述】:
我正在尝试在R 中对我的数据执行逻辑回归。
我已经创建了所有模型变量并将它们放置到位
在我的 Redshift 数据库的表中。
让我们将此数据库称为“数据库 A”,将表称为
'表 A'
问题陈述
在 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
我能够创建与 redshift 的连接。我使用 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 部门咨询什么?
【问题讨论】:
-
您似乎已成功加载数据框,这与“在我的'R'内的 Redshift 的数据库 A 中寻找一种从表 A 中获取数据的有效方法”的问题陈述不一致环境”。您的问题似乎更多地与运行逻辑回归所需的时间有关。回答似乎是真正的问题“在具有 4GB RAM 的笔记本电脑上进行 200 万次观察的逻辑回归是否可行。”答案不仅取决于观察的数量,还取决于变量的数量以及所使用的 R 函数
-
请您添加 (a) 您用于回归的公式 (b) str(my.data) 的结果和 (c) 您使用的 R 命令的语法运行逻辑回归。
-
此外,如果您可以访问分布式处理集群,SparkR 将为您提供帮助。 Spark 旨在跨集群有效地分配分析工作负载。在笔记本电脑上以本地模式运行时,它不会提高效率,甚至可能比基本 R 函数慢。
-
当然,再给我一些时间。我会尽量在 6 小时内回复您。
-
感谢您的观察。我对
tbl函数的解释感到困惑。我在网上看了看,dplyr::collect来救我了。该模型似乎正在工作。mutate和transform函数对我来说也很方便。我正在使用glmnet进行惩罚逻辑回归。
标签: r dplyr amazon-redshift sparkr