gpt4 book ai didi

python - 如何将自己的类别添加到 OneHotEncoder

转载 作者:行者123 更新时间:2023-12-05 03:43:47 26 4
gpt4 key购买 nike

我有格式的数据,例如 ['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”作为类别。

最佳答案

这里可以有两种情况。

  1. 如果您事先知道所有类别。

初始化 OneHot 编码器时,将所有可能的类别作为列表传递。

enc = OneHotEncoder(categories = [str(i) for i in range(10)])
  1. 如果您事先不知道某些类别。
# This argument by default is set to `error` hence throws error is an unknown
# category is encountered.
enc = OneHotEncoder(handle_unknown='ignore')

Whether to raise an error or ignore if an unknown categorical feature is present during transform (default is to raise). When this parameter is set to ‘ignore’ and an unknown category is encountered during transform, the resulting one-hot encoded columns for this feature will be all zeros. In the inverse transform, an unknown category will be denoted as None.

这个案例也问here

引用here有关每个参数的详细文档。

关于python - 如何将自己的类别添加到 OneHotEncoder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66644733/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com