gpt4 book ai didi

python - sklearn LabelEncoder 中的标签不一致?

转载 作者:太空狗 更新时间:2023-10-30 02:17:56 27 4
gpt4 key购买 nike

我在数据帧上应用了 LabelEncoder(),它返回以下内容:

enter image description here

order/new_cart 有不同的标签编码数字,如 70、64、71 等

这是标签不一致,还是我哪里做错了什么?

最佳答案

LabelEncoder 适用于一维数组。如果将它应用于多个列,它将在列内保持一致,但在列之间不一致。

作为解决方法,您可以将数据帧转换为一维数组并对该数组调用 LabelEncoder。

假设这是数据框:

df
Out[372]:
0 1 2
0 d d a
1 c a c
2 c c b
3 e e d
4 d d e
5 d b e
6 e e b
7 a e b
8 b c c
9 e a b

先拆再改:

pd.DataFrame(LabelEncoder().fit_transform(df.values.ravel()).reshape(df.shape), columns = df.columns)
Out[373]:
0 1 2
0 3 3 0
1 2 0 2
2 2 2 1
3 4 4 3
4 3 3 4
5 3 1 4
6 4 4 1
7 0 4 1
8 1 2 2
9 4 0 1

编辑:

如果要存储标签,需要保存LabelEncoder对象。

le = LabelEncoder()
df2 = pd.DataFrame(le.fit_transform(df.values.ravel()).reshape(df.shape), columns = df.columns)

现在,le.classes_ 为您提供类(从 0 开始)。

le.classes_
Out[390]: array(['a', 'b', 'c', 'd', 'e'], dtype=object)

如果你想通过标签访问整数,你可以构造一个字典:

dict(zip(le.classes_, np.arange(len(le.classes_))))
Out[388]: {'a': 0, 'b': 1, 'c': 2, 'd': 3, 'e': 4}

您可以使用 transform 方法执行相同的操作,而无需构建字典:

le.transform('c')
Out[395]: 2

关于python - sklearn LabelEncoder 中的标签不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38432632/

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