【问题标题】:How can I encode each categorical unique value to numerical value as I wish?如何按照我的意愿将每个分类唯一值编码为数值?
【发布时间】:2020-07-25 12:59:34
【问题描述】:

如何按照我的意愿将每个分类唯一值编码为数值?

HeatingQC:加热质量和条件

   Ex   Excellent
   Gd   Good
   TA   Average/Typical
   Fa   Fair
   Po   Poor

我尝试将此分类数据编码为数字。所以我使用了sklearn.processing.LabelEncoder。我期望的是给 Ex 分配一个更大的数字,给 Po 分配一个更少的数字。即 Ex = 4,Gd = 3,依此类推。

from sklearn.preprocessing import LabelEncoder

label_encoder = LabelEncoder()
encoded_data = label_encoder.fit_transform(data)

print(data)
print(encoded_data)

输出是

Id
1461    TA
1462    TA
1463    Gd
1464    Ex
1465    Ex
Name: HeatingQC, dtype: object
[2 2 1 0 0]

如何将 ex 编码为 4 并将 Po 编码为 0?

【问题讨论】:

  • LabelEncoder 按字母顺序编码。您需要创建和使用自定义 endcoder。您真的想将每个唯一值硬编码为您想要的对应数字吗?

标签: python machine-learning scikit-learn categorical-data label-encoding


【解决方案1】:

以一种非常基本的方式,您可以这样做:

  • 根据需要初始化地图
encoding_map = {
  'Ex': 4,
  'Po': 0
}
  • 将每个值映射到可能的最小对应数字
for item in data:
  if not item in encoding_map.keys():
    minimum = min(encoding_map.values())
    while minimum in encoding_map.values():
      minimum += 1
    encoding_map[item] = minimum
  • 编码数据
encoded_data = [encoding_map.get(item) for item in data]

【讨论】:

    猜你喜欢
    • 2019-12-09
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    相关资源
    最近更新 更多