pandas - 如果我的测试数据在某一列中缺少值,如何解决一种热编码问题?

标签 pandas numpy machine-learning one-hot-encoding

例如,如果我的训练数据在列中具有分类值 (1,2,3,4,5),那么一种热编码将为我提供 5 个列。但在我拥有的测试数据中,只说 5 个值中的 4 个,即(1,3,4,5)。因此,一种热编码只会给我 4 个列。因此,如果我将训练好的权重应用于测试数据,我会收到错误,因为列的尺寸在训练和测试数据中不匹配,dim(4)!=dim(5)。关于如何处理缺失的列值有什么建议吗? 我的代码的图像如下:

image

最佳答案

请大家不要犯这个错误!

是的,你可以通过训练和测试的串联来实现这个黑客并欺骗自己,但真正的问题是在生产中。有一天,你的模型将面临分类变量的未知水平,然后崩溃。

实际上,一些更可行的选择可能是:

  1. 定期重新训练您的模型以考虑新数据。
  2. 请勿使用一热。说真的,有很多更好的选择,例如留一编码( https://www.kaggle.com/c/caterpillar-tube-pricing/discussion/15748#143154 )条件概率编码( https://medium.com/airbnb-engineering/designing-machine-learning-models-7d0048249e69 )、目标编码等等。像 CatBoost 这样的一些分类器甚至有内置的编码机制,Python 中有像 target_encoders 这样的成熟库,您可以在其中找到很多其他选项。
  3. 嵌入分类特征,这可以让您免于完全重新训练 ( http://flovv.github.io/Embeddings_with_keras/ )

关于pandas - 如果我的测试数据在某一列中缺少值,如何解决一种热编码问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47460387/

相关文章:

python - 应用条件分组

python - 如何在 pandas python 中创建 DataFrame

python - 具有不同颜色编码和不同标记的 Sns 散点图

python - Scipy 的 solve_ivp 函数文档中的字母 k 是什么意思?

python-2.7 - sklearn grid.fit(X,y) - 错误 : “positional indexers are out-of-bounds” for X_train, y_train

python - 将 csv 文件中的每个唯一单词标记化

python - Pandas 适用于 numpy interp,尺寸问题

python - 如何从所有 pandas 列计算成对矩阵

python - 如何将分类器和参数转储到表中?

machine-learning - 批量大小会导致错误的预测吗?