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