1

我使用 pd.get_dummies 函数创建了一个稀疏矩阵。我拥有的矩阵是 700M 行 * 400 列,与其他人正在解决的许多问题相比,我认为它并没有那么大。但是分割成训练、验证、测试集可能需要很长时间。(我将使用逻辑回归和随机森林进行预测,它们支持稀疏矩阵。)无论如何有效地切片 sparseDataFrame 或对于我正在做的整个过程,无论如何都应该改进它?

举个例子,

这是我在将分类变量转换为虚拟变量之前的列列表:

[u'a.exch', u'a.is_mobile', u'a.os_family', u'a.os_major', u'a.ua_family', u'a.ua_major', u'a.creative_id', u'a.creative_format',u'a.banner_position', u'a.day_hour_etc', u'b.country', u'b.connspeed',u'b.home_bus']

这是每列中唯一值的数量:

a.exch 14
a.is_mobile 2
a.os_family 21
a.os_major 35
a.ua_family 49
a.ua_major 56
a.creative_id 30
a.creative_format 3
a.banner_position 6
a.day_hour_etc 4
b.country 94
b.connspeed 9
b.home_bus 3

使用 pd.get_dummies 后,它有 300+ 列,例如

a.exch_1, a.exch_2, ..., b.home_bus1, b.home_bus2

我设置了 pd.get_dummies(input_df, sparse=True) 因为否则会引发内存错误。但是现在有了这种稀疏表示,一切都变得很慢。

更新:拆分为 train、val 和 test,只是以 6:2:2 随机分成 3 个部分

4

1 回答 1

1

拥有 7 亿行数据集是巨大的。而且,通过使用 get dummes,您几乎可以将其扩大 20 倍。

采用df.column =pd.factorize(df.column)[0]

或者

DictVectorizer

我不确定性能,但它不会像 get_dummies 那样糟糕,因为这不会创建 380+ 列。我想,子设置是问题的开始,接下来是训练模型将永远运行这么多数据。

于 2015-11-13T04:35:14.293 回答