如何根据需要将每个分类唯一值编码为数值?

问题描述 投票:0回答:1

如何根据需要将每个分类唯一值编码为数值?

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?

python machine-learning scikit-learn categorical-data label-encoding
1个回答
0
投票

您可以用最基本的方式做:

  • 根据需要初始化地图
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]
© www.soinside.com 2019 - 2024. All rights reserved.