转换要在sklean

时间:2015-11-12 23:56:03

标签: pandas scikit-learn slice sparse-matrix dummy-variable

我使用pd.get_dummies函数创建了一个稀疏矩阵。我所拥有的矩阵是700M行* 400列,我认为与其他人正在解决的许多问题相比,它不是那么大。但切入火车,val,测试装置可能需要永远。 (我将使用逻辑回归和随机森林来进行预测,这支持稀疏矩阵。)无论如何有效切片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,随机分成3部分,分别为6:2:2

1 个答案:

答案 0 :(得分:1)

拥有700M行的数据集是巨大的。并且,通过使用get dummes,你几乎可以使它变大20倍。

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

DictVectorizer

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