我正在使用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)