在机器学习中处理分类数据,以Pythonic的方式将分类数据转换为数值数据。

简介
在机器学习(ML)中,大多数模型不接收非数值的数据类型。然而,大多数时候,原始数据会包含分类数据类型,不仅重要的变量可以以分类的形式出现,甚至目标变量也是如此。

因此,必须将这些变量转化为数值,以使ML模型观察模式并进行解释。将分类列或变量转换为数值的过程称为编码,目标是使变量(编码)能够容易地适应ML模型。
受限于篇幅,本文只讨论两种主要的编码类型,并分别用Python代码进行说明。
独热编码
在独热编码技术中,待检查列中的每个类别都由一个二进制向量(1和0)表示,其中每个向量元素分别表示相应类别的存在或不存在。在独热编码中,如果列名是color
,并且有3个颜色类别,比如red
,blue
和green
,这些颜色中的每一种都成为额外的附加列,如果行值为红色时,红色列返回1
而绿色和蓝色列返回0
。

来看一个例子,写一个包含两列的DataFrame
:Color
和ItemNo
,项目是数值的,而颜色是分类。
import pandas as pd
data = pd.DataFrame({'colors': ['red', 'blue', 'green', 'red', 'blue'],
'ItemNo': [3, 2, 7, 5, 9]})
print(data)
查看DataFrame
的输出来进行确认,然后深入研究编码方面的问题。
colors ItemNo
0 red 3
1 blue 2
2 green 7
3 red 5
4 blue 9
接下来,对颜色列进行编码。为此可使用Python中的get_dummies
函数。
one_hot = pd.get_dummies(data)
print(one_hot)
get_dummies
函数用于将分类变量转换成虚拟变量或指示变量。虚拟变量的值可以是0或1。
输出变量one_hot
,结果如下:
ItemNo colors_blue colors_green colors_red
0 3 0 0 1
1 2 1 0 0
2 7 0 1 0
3 5 0 0 1
4 9 1 0 0
如上所示,三类颜色也变成了列,因此凡是行值为红色的地方,在colors_red
列下返回1
,在colors_blue
和colors_green
下返回0
,反之亦然。
标签编码
当层次结构很重要时,标签编码用于将分类数据转换为数值数据。整数值是根据类别的层次结构进行排序的。
众所周知,在教育领域,博士的等级高于硕士,然后是学士。如果这属于研究目标,建议使用标签编码。

如上图所示,使用学生名单和他们各自资格的数据集。
需要根据资格的重要性对其进行编码,学士将被赋予最低值0,而硕士将被赋予中间值1,博士将被赋予最高值2。
import pandas as pd
data = pd.DataFrame({'Qualification': ['PhD', 'PhD', 'BSc', 'MSc', 'MSc'],
'Student_Count': [12, 12, 40, 21, 30]})
print(data)
为了进行标签编码,需要从Scikit Learn库导入LabelEncoder
类。然后创建一个新的列(命名为encoded_Ranks
),并添加到数据集中。
from sklearn.preprocessing import LabelEncoder
label_encoder = LabelEncoder()
data['encoded_Ranks'] = label_encoder.fit_transform(data['Qualification'])
print(data)
在新创建的栏目中,矢量值(0、1和2)将对照资格栏显示。见下表:
Qualification Student_Count encoded_Ranks
0 PhD 12 2
1 PhD 12 2
2 BSc 40 0
3 MSc 21 1
4 MSc 30 1
而后,可以将
Qualification
列从训练ML模型的训练集中删除。
机器学习中的其他类型的编码是二进制编码和计数编码。二进制编码类似于独热编码,因为它创建了新的列并添加到数据集中,而计数编码的工作原理是根据观察到的次数(从行开始)将值分配给每个类。
总结
为了学习ML时最常见的编码类型,我们定义、解释并试验了Python代码。同时,文中还列出了不常见的类型并解释了每种类型的缺点。总而言之,编码只是将分类数据类型转换为数值,以方便训练ML模型。
推荐书单
《TensorFlow机器学习项目开发实战》
《TensorFlow机器学习项目开发实战》详细阐述了与TensorFlow项目开发相关的基本解决方案,主要包括TensorFlow和机器学习概述、利用机器学习探测外太空中的系外行星、情感分析、数字分类、语音到文本的转换、预测股票价格、信用卡欺诈检测、贝叶斯深度学习、图像匹配和分类、推荐系统、大规模对象检测、生成图书脚本、深度强化学习与游戏、部署机器学习模型等内容。
此外,《TensorFlow机器学习项目开发实战》还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。
《TensorFlow机器学习项目开发实战》既可作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学教材和参考手册。
购买链接:http://product.dangdang.com/27949727.html


精彩回顾
《使用ChatGPT API创建Python文档,竟然如此简单》
《餐厅数据一网打尽,用Python采集并分析TripAdvisor》
《得来全不费功夫,使用Python爬虫自动采集Cookies、URL等网页数据》
长按关注《Python学研大本营》,加入读者群 长按访问【IT今日热榜】,发现每日技术热点





