【发布时间】:2016-09-19 09:59:37
【问题描述】:
我有一些数据,大约 4 亿行,一些特征是分类的。我应用pandas.get_dummies 进行one-hot 编码,我必须使用sparse=Trueoption,因为数据有点大(否则会引发异常/错误)。
result = result.drop(["time", "Ds"], 1)
result_encoded = pd.get_dummies(result, columns=["id1", "id2", "id3", "id4"], sparse=True)
然后,我得到一个包含 9000 个特征的稀疏数据帧(result_encoded)。之后,我想对数据进行岭回归。起初,我尝试将dataframe.value 输入sklearn,
train_data = result_encoded.drop(['count'].values)
但引发了错误:“数组太大”。 然后,我只是将稀疏数据帧输入 sklearn,再次显示类似的错误消息。
train_data = result_encoded.drop(['count'])
我是否需要考虑不同的方法或数据准备,以便 sklearn 可以直接使用?
【问题讨论】:
-
(转贴旧评论)您可以编写一段简短、可运行的代码,而不是用文字描述您的数据。如果您这样做是为了让人们可以复制、粘贴和运行您的问题中的代码,而不会出现未定义的变量和其他问题,那么 a) 您将使您想要的输出非常清晰 b) 您更有可能得到好的答案。 Here's an example.
-
查看
pandas文档以了解稀疏帧。我相信有一种方法,可能是实验性的,可以产生一个 scipy 稀疏矩阵。我已经回答了一些关于此的问题,但手头没有链接。 -
我会考虑改用 scikit 的 OneHotEncoder。生成的稀疏矩阵可以直接与 scikits 预测器一起使用。
标签: python numpy dataframe scikit-learn