python - 如何按照我的意愿将每个分类唯一值编码为数值?
问题描述
如何按照我的意愿将每个分类唯一值编码为数值?
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?
解决方案
以一种非常基本的方式,您可以执行以下操作:
- 根据需要初始化地图
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]
推荐阅读
- python-3.x - Python从rtsp流中获取音频数据
- javascript - 错误的日子Javascript倒计时
- rest - 使用 Spark(Databricks)的并行 REST API 请求
- c - 调用者如何通过指定多个参数来正确使用 clone() 系统调用?
- r - R ggplot2 将几个分类变量的闪避条形图除以一个带有百分比的因子
- go - 从 UUID 派生随机种子
- python - 使用 Python 检查 YouTube 视频列表是否仍然在线
- python - 使用 Beautiful Soup / find() 函数进行网络抓取得到结果 = 无
- django - 站点匹配查询不存在。一切都已设置,站点域已定义
- r - 根据函数判断一个点是否在范围内