首页 > 解决方案 > 如何按照我的意愿将每个分类唯一值编码为数值?

问题描述

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

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?

标签: pythonmachine-learningscikit-learncategorical-datalabel-encoding

解决方案


以一种非常基本的方式,您可以执行以下操作:

  • 根据需要初始化地图
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]

推荐阅读