数据预处理时为什么要使用OneHot编码?
什么是LabelEncoder(整数编码)
整数编码 将一列文本数据转化成数值,即列中的每一个特征都通过一个整数来表示。例如,[red, blue, red, yellow] = [0,2,0,1]。

什么是OneHotEncoder(独热编码)
独热编码 将一列文本数据转化成一列或多列只有0和1的数据,即列中的每一个特征都通过一个向量来表示。例如,[red, blue, red, yellow] = [1,2,1,3] 会被转化成3列用0和1表示的数据列。

独热编码好在哪里?
将离散型特征使用one-hot编码,会让特征之间的距离计算更加合理。
比如,对于红、蓝、黄三个颜色,不使用one-hot编码,其表示分别是x_1 = (1), x_2 = (2), x_3 = (3)。两个颜色之间的距离是,d(x_1, x_2) = 1, d(x_2, x_3) = 1, d(x_1, x_3) = 2。那么红色和黄色之间就越不相似吗?显然这样的表示,计算出来的特征的距离是不合理。
但如果使用one-hot编码,则得到x_1 = (1, 0, 0), x_2 = (0, 1, 0), x_3 = (0, 0, 1),那么两个颜色之间的距离就都是sqrt(2).即每两个颜色之间的距离是一样的,这样显得更合理。
对于特征数大于2的要使用独热编码,小于等于2时不会出现上述距离错误问题。
独热编码对决策树模型的影响
独热编码会使数据的列增多,将这样的数据输入到决策树模型后,因为决策树模型的特性,树的深度增加,最终导致执行效率降低。
在处理此类任务时要注意这个问题。
参考资料
数据预处理时为什么要使用OneHot编码?的更多相关文章
- TensorFlow从1到2(六)结构化数据预处理和心脏病预测
结构化数据的预处理 前面所展示的一些示例已经很让人兴奋.但从总体看,数据类型还是比较单一的,比如图片,比如文本. 这个单一并非指数据的类型单一,而是指数据组成的每一部分,在模型中对于结果预测的影响基本 ...
- 数据预处理:独热编码(One-Hot Encoding)和 LabelEncoder标签编码
一.问题由来 在很多机器学习任务中,特征并不总是连续值,而有可能是分类值. 离散特征的编码分为两种情况: 1.离散特征的取值之间没有大小的意义,比如color:[red,blue],那么就使用one- ...
- 数据预处理之独热编码(One-Hot):为什么要使用one-hot编码?
一.问题由来 最近在做ctr预估的实验时,还没思考过为何数据处理的时候要先进行one-hot编码,于是整理学习如下: 在很多机器学习任务如ctr预估任务中,特征不全是连续值,而有可能是分类值.如下: ...
- 【转】数据预处理之独热编码(One-Hot Encoding)
原文链接:http://blog.csdn.net/dulingtingzi/article/details/51374487 问题由来 在很多机器学习任务中,特征并不总是连续值,而有可能是分类值. ...
- 机器学习实战:数据预处理之独热编码(One-Hot Encoding)
问题由来 在很多机器学习任务中,特征并不总是连续值,而有可能是分类值. 例如,考虑一下的三个特征: ["male", "female"] ["from ...
- 数据预处理:独热编码(One-Hot Encoding)
python机器学习-sklearn挖掘乳腺癌细胞( 博主亲自录制) 网易云观看地址 https://study.163.com/course/introduction.htm?courseId=10 ...
- 数据预处理之独热编码(One-Hot Encoding)(转载)
问题由来 在很多机器学习任务中,特征并不总是连续值,而有可能是分类值. 例如,考虑一下的三个特征: ["male", "female"] ["from ...
- 机器学习 数据预处理之独热编码(One-Hot Encoding)
问题由来 在很多机器学习任务中,特征并不总是连续值,而有可能是分类值. 例如,考虑一下的三个特征: ["male", "female"] ["from ...
- 机器学习:数据预处理之独热编码(One-Hot)
前言 ———————————————————————————————————————— 在机器学习算法中,我们经常会遇到分类特征,例如:人的性别有男女,祖国有中国,美国,法国等.这些特征值并不是连续的 ...
- 数据预处理之独热编码(One-Hot Encoding)
问题的由来 在很多机器学习任务中,特征并不总是连续值,而有可能是分类值. 例如,考虑以下三个特征: ["male","female"] ["from ...
随机推荐
- grpc中的拦截器
0.1.索引 https://waterflow.link/articles/1665853719750 当我们编写 HTTP 应用程序时,您可以使用 HTTP 中间件包装特定于路由的应用程序处理程序 ...
- fltp备份文件后统计验证
上一篇(https://www.cnblogs.com/jying/p/16805821.html)记录了自己在centos使用lftp备份文件的过程,本篇记录自己对备份后的文件与源文件目录的对比统计 ...
- Python中Print方法
1 number1 = int(input("请输入第一个数:")) 2 number2 = int(input("请输入第二个数:")) 3 4 # 方法一: ...
- 用 vue3 中的 reduce(累加器) 随机生成100个字母,放入数组中,统计每个字母出现的次数
一.首先不用 reduce() 来实现 代码如下: <template lang=""> <div> <h1>统计每个字母出现的次数,不使用r ...
- python基础(三)装饰器
字典推导式: data_list = ['1 hello','2 world'] result = {item.split(" ")[0]: item.split(" & ...
- JAVA 用分苹果来理解本题
思路 其实这是一道非常经典的分苹果问题:有m个一样的苹果和n个一样的盘子,把苹果放盘子里,每个盘子允许0-m个苹果,求问有多少种分法? 与本题的共通之点在于,输入的正整数可以看成m个苹果,拆分出的加数 ...
- Go语言输出函数fmt.Print、fmt.Printf、fmt.Println的用法区别
fmt 包的介绍 fmt = format,是一种格式化输出函数汇总包,用于格式化输出 fmt.Print === 原样输出 Print formats using the default forma ...
- gcc和g++,c和cpp
gcc对.c文件当成c处理,把.cpp文件当成c++处理 g++对.c和.cpp都当成c++处理 小心会遇到错误
- c++学习笔记(入门)
1 struct和class的区别 struct成员变量(成员函数)的访问属性缺省的情况下默认为public. class成员变量(成员函数)的访问属性缺省的情况下默认为private. 2 初始化列 ...
- 20W,PD快充协议芯片,带有PPS控制器的USB-PD3.0
JD6621是高度集成的USB供电(PD)控制器,支持USB PD 3.0 ,该USB PD 3.0 具有针对USB Type-C下游接口(源)设计的可编程电源( PPS)规范. 它监视CC引脚以检测 ...