暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

一文搞懂如何处理机器学习中的分类数据

564

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

长按关注《Python学研大本营》,加入读者群,分享更多精彩

简介

在机器学习(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': [32759]})

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': [1212402130]})

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文档,竟然如此简单》

《16 个必知必会的 Python 技巧,助你高效编程》

《餐厅数据一网打尽,用Python采集并分析TripAdvisor》

《得来全不费功夫,使用Python爬虫自动采集Cookies、URL等网页数据》

《使用Python机器学习预测足球比赛结果:第一篇 数据采集 (下)》

《使用Python机器学习预测足球比赛结果:第一篇 数据采集 (上)》

长按关注《Python学研大本营》,加入读者群
长按访问【IT今日热榜】,发现每日技术热点

文章转载自Python学研大本营,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论