Python 2.7 Scikit学习labelencoder:如何保留批之间的映射?

Python 2.7 Scikit学习labelencoder:如何保留批之间的映射?,python-2.7,scikit-learn,Python 2.7,Scikit Learn,我有1.85亿个样本,每个样本大约3.8 MB。为了准备我的数据集,我需要对许多特性进行一次热编码,之后我将拥有15000多个特性 但我需要分批准备数据集,因为当一个热编码仅使用300万个样本时,仅功能的内存占用就超过100 GB 问题是如何在批之间保留编码/映射/标签? 批次不一定具有类别的所有级别。也就是说,批次1可能有:巴黎、东京、罗马。 第二批可能有巴黎、伦敦。 但最终我需要将巴黎、东京、罗马、伦敦全部映射到一个编码 假设我不能一次确定我的城市一亿八千五百万列的级别,因为它不适合RAM,

我有1.85亿个样本,每个样本大约3.8 MB。为了准备我的数据集,我需要对许多特性进行一次热编码,之后我将拥有15000多个特性

但我需要分批准备数据集,因为当一个热编码仅使用300万个样本时,仅功能的内存占用就超过100 GB

问题是如何在批之间保留编码/映射/标签? 批次不一定具有类别的所有级别。也就是说,批次1可能有:巴黎、东京、罗马。
第二批可能有巴黎、伦敦。 但最终我需要将巴黎、东京、罗马、伦敦全部映射到一个编码

假设我不能一次确定我的城市一亿八千五百万列的级别,因为它不适合RAM,我该怎么办? 如果我将同一个Labelencoder实例应用于不同的批处理,映射会保持不变吗?
我还需要使用一个热编码,或者使用scikitlearn,或者使用Keras的np\u实用工具\u to\u Category,然后再批量使用。所以同样的问题是:如何基本上批量使用这三种方法,或者将它们同时应用到存储在磁盘上的文件格式?

我建议使用Pandas的
get_dummies()
,因为sklearn的
OneHotEncoder()
需要在
.fit()时查看所有可能的分类值,否则,在
.transform()
期间遇到新错误时,它将抛出错误

输出

   City_Chicago  City_London  City_Paris  City_Rome  City_Tokyo
0             0            0           1          0           0
1             0            0           0          0           1
2             0            0           0          1           0
3             0            1           0          0           0
4             1            0           0          0           0
5             0            0           1          0           0

我建议使用Pandas的
get_dummies()
来实现这一点,因为sklearn的
onehotcoder()
需要在
.fit()
时查看所有可能的分类值,否则在
.transform()
期间遇到新值时会抛出错误

输出

   City_Chicago  City_London  City_Paris  City_Rome  City_Tokyo
0             0            0           1          0           0
1             0            0           0          0           1
2             0            0           0          1           0
3             0            1           0          0           0
4             1            0           0          0           0
5             0            0           1          0           0

get_dummies和一个热编码完全一样吗?我读过相互矛盾的答案。我认为它们是一样的,但只是想确定一下。是的,一个热门的编码是将一个分类变量转换成一个虚拟变量的稀疏矩阵。Scikit学习使用实现fit()和predict()的转换器进行Scikit学习,熊猫拥有
get\u dummies()
get\u dummies与热编码完全相同吗?我读过相互矛盾的答案。我认为它们是一样的,但只是想确定一下。是的,一个热门的编码是将一个分类变量转换成一个虚拟变量的稀疏矩阵。Scikit学习是通过Scikit学习方式实现的,它使用一个变压器实现fit()和predict(),pandas拥有
get\u dummies()