我正试着让我的训练自动化,预测过程。但是我有一个关于热编码的问题。
假设我有一个如下所示的列:
column /
a /
b /
c /如果我对它进行一次热编码,我会得到每个字母的3列,但是如果后来我下载了一些新的数据,在同一列中我只有a和b,名为"column_c“的列将不会被创建,因此我不能使用模型预测,因为形状,我将有2列而不是3列。
我怎么才能修复它呢?
谢谢
发布于 2019-12-08 08:46:07
您描述的错误只有在您重新训练OneHotEncoder时才会发生,而这不应该在自动化过程中进行。您应该像训练数据集上的任何其他ML模型一样训练您的OneHotEncoder,然后将这个经过训练的编码器应用于您希望通过自动化管道馈送的任何新数据。
示例:
import pandas as pd
from sklearn.preprocessing import OneHotEncoder
df1 = pd.DataFrame({"cat_col":["a","b","c"]})
df2 = pd.DataFrame({"cat_col":["a","b"]})
ohe = OneHotEncoder(handle_unknown="ignore")
print(ohe.fit_transform(df1).toarray())
print(ohe.transform(df2).toarray())这将返回
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
[[1. 0. 0.]
[0. 1. 0.]]https://stackoverflow.com/questions/59220528
复制相似问题