使OneHotEncoder在转换步骤中管理看不见的值



我正在使用sklearn.preprrocessing.OneHotEncoder对形式的分类数据进行编码

A=array([[1,4,1],[0,3,2]])
B=array([[1,4,7],[0,3,2]])

假设我在.fit(A)步骤使用A,在某个点使用B作为.transform(B)的新数据。如果B包含相对于A看不见的值,则这样做会产生feature out of bounds error。是否可以让B包含新的看不见的值,以便转换步骤将相关值的所有二进制文件设置为零?

ValueError: Feature out of bounds. Try setting n_values.

我知道我可以在.fit时间更改功能边界。但是,如果我使用A作为训练数据,每次我得到一个新的集合B来预测,我就必须打乱我的初始编码。

谢谢。

是否可以让B包含新的看不见的值,以便转换步骤将相关值的所有二进制文件设置为零?

没有,但如果OneHotEncoder这样做就好了,所以我已经为此打开了一个问题。现在,您只需要将n_values设置得更高一点。

此功能现已添加到OneHotEncoder中。可以通过设置参数handle_unknown='ignore'来执行此操作。

例如:

from sklearn.preprocessing import OneHotEncoder
A=array([[1,4,1],[0,3,2]])
B=array([[1,4,7],[0,3,2]])
onehot = OneHotEncoder(handle_unknown='ignore')
A = onehot.fit_transform(A)
B = onehot.transform(B)

相关内容

  • 没有找到相关文章

最新更新