gpt4 book ai didi

python - pandas get_dummies 无法处理测试数据中看不见的标签

转载 作者:太空宇宙 更新时间:2023-11-04 04:43:21 25 4
gpt4 key购买 nike

我有一个 Pandas DataFrame,train,我是单热编码。它看起来像这样:

    car
0 Mazda
1 BMW
2 Honda

如果我使用 pd.get_dummies,我会得到这个:

car_BMW car_Honda   car_Mazda
0 0 0 1
1 1 0 0
2 0 1 0

到目前为止一切都很好。

但是,我无权访问我的测试集,因此我需要处理以下可能性:car 的值出现在测试中,而 train 中未出现该值>.

假设test是这样的:

    car
0 Mazda
1 Audi

然后,如果我在 test 上使用 pd.get_dummies,我会得到:

car_Audi    car_Mazda
0 0 1
1 1 0

这是错误的,因为我有一个新专栏,car_Audi 并且缺少 car_BMW

我希望 one-hot 编码 test 的输出是:

car_BMW car_Honda   car_Mazda
0 0 0 1
1 0 0 0

所以它只是忽略了之前在测试中看不见的值。我绝对不想为以前在测试中看不到的值创建新列。

我查看了 sklearn.preprocessing.LabelBinarizer 但它输出一个 numpy 数组并且列的顺序不明确:

lb = LabelBinarizer()
train_transformed = lb.fit_transform(train_df)

还给我:

array([[0, 0, 1],
[1, 0, 0],
[0, 1, 0]])

这里有什么想法吗?

谢谢!

最佳答案

这不是一个很难解决的问题。 LabelBinarizer有一个参数classes_如果想知道原始标签的位置可以查询:

train_transformed = lb.fit_transform(df)

print(train_transformed)
array([[0, 0, 1],
[1, 0, 0],
[0, 1, 0]])

print(lb.classes_)
array(['BMW', 'Honda', 'Mazda'], dtype='<U5')

关于python - pandas get_dummies 无法处理测试数据中看不见的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50138787/

25 4 0