【发布时间】:2021-06-13 02:49:06
【问题描述】:
我有格式的数据,例如['1', '5' '6', '5', '2'],其中每个标签可以是0-9之间的任意数字的字符。我的数据的性质是名义上的分类,因此它是无序的,随后,我使用 scikit OneHotEncoder 对我的数据进行分类编码。但是,我在测试模型时遇到错误,假设我有 ['1', '5', '9', '3', '1'] 当没有输入时数组的第三个索引是“9”。
我认为这是因为当我对数据进行编码时,假设在测试数据中第三个索引只有“0”-“8”之间的数字,OneHotEncoder 无法识别“9”何时是在第三个索引中,并引发错误。我想知道是否有一种方法可以手动添加这些类别,所以在 ML 模型中,类别会存在并且上面没有数据点。
例子:
from sklearn.preprocessing import OneHotEncoder
a = [['1'], ['2'], ['3'], ['5']]
enc = OneHotEncoder()
X = enc.fit_transform(a)
enc.transform([['4']])
您可以看到我的训练数据不包含“4”,即使“4”是一个可能的标签。所以当我对其进行编码并转换'4'时,它会抛出一个错误:
ValueError: Found unknown categories ['4'] in column 0 during transform
我想知道如何手动将“4”添加为类别。
【问题讨论】:
-
请通过minimal reproducible example 证明您的问题。
-
添加了一个 - 我们可以假设可能的数据库非常大,以至于会发生这种情况
-
是否事先知道所有可能的类别?
标签: python machine-learning scikit-learn