我正在尝试使训练自动化,预测过程。
但是我有一个热编码的问题。
假设我有一列看起来像这样:
column /
a /
b /
c /
如果我对它进行编码,那么每个字母将得到3列,但是如果以后下载一些新数据后,在同一列中我只有a和b,则不会创建名为“ column_c”的列,因此我由于形状而无法预测使用模型,我将有2列而不是3列。
我该如何解决?
谢谢
最佳答案
您所描述的错误仅在重新培训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.]]
关于machine-learning - 管道生产oneHotEncoding,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59220528/