gpt4 book ai didi

python - 使用 OrdinalEncoder 转换分类值

转载 作者:行者123 更新时间:2023-12-01 00:52:00 24 4
gpt4 key购买 nike

我有一个包含以下列的数据集:

No  Name  Sex  Blood  Grade  Height  Study
1 Tom M O 56 160 Math
2 Harry M A 76 192 Math
3 John M A 45 178 English
4 Nancy F B 78 157 Biology
5 Mike M O 79 167 Math
6 Kate F AB 66 156 English
7 Mary F O 99 166 Science

我想把它改成这样:

No  Name  Sex  Blood  Grade  Height  Study
1 Tom 0 0 56 160 0
2 Harry 0 1 76 192 0
3 John 0 1 45 178 1
4 Nancy 1 2 78 157 2
5 Mike 0 0 79 167 0
6 Kate 1 3 66 156 1
7 Mary 0 0 99 166 3

我知道有一个库可以做到这一点

from sklearn.preprocessing import OrdinalEncoder

我已经尝试过但没有成功

enc = OrdinalEncoder()
enc.fit(df[["Sex","Blood", "Study"]])

谁能帮我找出我做错了什么以及如何做?

最佳答案

你就快到了!

基本上是 fit 方法,准备编码器(适合您的数据,即准备映射)但不转换数据。

您必须调用 transform 来转换数据,或使用 fit_transform 来拟合和转换相同的数据。

enc = OrdinalEncoder()
enc.fit(df[["Sex","Blood", "Study"]])
df[["Sex","Blood", "Study"]] = enc.transform(df[["Sex","Blood", "Study"]])

或直接

enc = OrdinalEncoder()
df[["Sex","Blood", "Study"]] = enc.fit_transform(df[["Sex","Blood", "Study"]])

注意:这些值不会是您提供的值,因为在内部 fit 方法使用 numpy.unique ,它给出的结果按字母顺序排序,而不是按出现顺序排序。

正如您从enc.categories_中看到的

[array(['F', 'M'], dtype=object),
array(['A', 'AB', 'B', 'O'], dtype=object),
array(['Biology', 'English', 'Math', 'Science'], dtype=object)]```

数组中的每个值都按其位置进行编码。(F 将编码为 0 ,M 编码为 1)

关于python - 使用 OrdinalEncoder 转换分类值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56502864/

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