2

我正在使用sklearn.preprocessing.OneHotEncoder对表格的分类数据进行编码

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

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

ValueError: Feature out of bounds. Try setting n_values.

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

谢谢。

4

2 回答 2

3

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

不,但如果OneHotEncoder这样做会很好,所以我为此打开了一个问题。现在,您只需设置n_values更高一点。

于 2013-07-18T19:33:29.780 回答
1

此功能现已添加到 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)
于 2020-08-31T07:42:41.603 回答