gpt4 book ai didi

python - LabelEncoder().fit_transform 给我负值?

转载 作者:行者123 更新时间:2023-12-02 18:39:38 26 4
gpt4 key购买 nike

嘿,

我的数据集中的“城市”列中有不同的城市名称。我很想使用 LabelEncoder() 对其进行编码。然而,我得到了非常令人沮丧的负值结果

df['city_enc'] = LabelEncoder().fit_transform(df['City']).astype('int8')

新的 city_enc 列给我从 -128 到 127 的值。我不明白为什么 LabelEncoder().fit_transform 给我负值?我预计它会给出从 0 到 (n-1) 的值。谁能给我解释一下吗?

最诚挚的问候,兰阮

最佳答案

这肯定是因为您正在尝试对超过 128 (0 ... 127) 个不同城市进行编码(您可以使用 len(df['City'].unique()) 进行检查).

当您强制转换为 int8 时,您最终会得到负值,以确保所有标签都是不同的。使用int8,您有 256 个不同的值(-128 ... 127)。例如,如果您将 129 个不同的值编码为 int8,则您将使用所有 0 ... 127 个正值,并且将为一项分配标签 -128 .

一个简单的解决方案是删除 astype('int8') 转换:

df['city_enc'] = LabelEncoder().fit_transform(df['City']) # defaults to 'int64'

关于python - LabelEncoder().fit_transform 给我负值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68209620/

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