- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有格式的数据,例如 ['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”作为类别。
最佳答案
这里可以有两种情况。
初始化 OneHot 编码器时,将所有可能的类别作为列表传递。
enc = OneHotEncoder(categories = [str(i) for i in range(10)])
# 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/
我是一名优秀的程序员,十分优秀!