mysql - 你将如何在 Ruby 中处理一个非常大的向量?

标签 mysql ruby

我打算用 Ruby 编写一个程序来分析从在线问卷中返回的一些数据。有数十万个回复,每个受访者回答大约 200 个问题。每个问题都是多项选择题,因此每个问题都有固定数量的可能答案。

目的是使用每个受访者提供的一段人口统计数据来训练一个系统,然后该系统可以从回答相同问卷但没有回答相同问卷的受访者那里猜测相同的人口统计数据(例如年龄)指定人口统计数据。

所以我计划使用一个向量(在数学意义上,而不是在数据结构意义上)来表示给定受访者的答案。这意味着每个向量都将很大(超过 200 个元素),并且整个数据集将是巨大的。我计划将数据存储在 MySQL 数据库中。

所以。 2个问题:

  1. 我应该如何将其存储在数据库中?每个对单个问题的回答一行,还是每个受访者一行?还是别的?

  2. 我打算使用 k-最近邻算法或简单的机器学习算法(如朴素贝叶斯分类器)来学习对新响应进行分类。我应该纯粹通过 SQL 操作数据,还是应该将其加载到内存中并将其存储在某种庞大的数组中?

最佳答案

首先想到的是:将其存储在内存中对于处理目的来说绝对是合理的。假设您为每个答案保留一个字节,您有 100 万个回复和 200 个问题,那么您有一个 200 MB 的数组。不小,但在现代桌面上绝对不会耗尽内存,即使使用 32 位操作系统也是如此。

至于数据库,我想你应该有三个表。一个用于具有人口统计数据的受访者,一个用于问题,并且由于这些表之间存在 n:m 关系,第三个具有受访者 ID、问题 ID 和答案代码。

如果您不需要额外的问题数据(例如问题文本或其他内容),您甚至可以优化问题表。

关于mysql - 你将如何在 Ruby 中处理一个非常大的向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/144166/

相关文章:

php - AS3/Air iOS 和 Android 数据将多个设备之间的数据同步到远程数据库

mysql - 使用 @Async 更好地扩展 Spring 应用程序以进行大量数据库插入或更新查询

ruby - 找到给定数字的因子的最快方法

mysql - 将 LOCALHOST MYSQL DB 传输到服务器

ruby-on-rails - 执行命令 rake :db:schema:dump

mysql - 立即获取授权用户mysql

mysql - 从belongs_to表获取Ruby中的对象集合时出错

ruby-on-rails - Ajax:成功无法在 Rails 应用程序中工作

ruby-on-rails - Rails - 我应该在模型级别还是数据库级别定义默认属性值?

ruby-on-rails - 在 Ruby 1.9 中访问类变量的正确方法是什么?