1、独热编码的优点

  1. 能处理非连续型数值特征
  2. 在一定程度上扩充了特征。如性别,经过one hot编码后,变成了男或女两个特征。

2、独热编码原理

使用one-hot编码,将离散特征的取值扩展到了欧式空间,离散特征的某个取值对用欧式空间的某个点。

将离散型特征使用One-hot编码,可以让特征之间的距离计算更加合理。我们常用的距离或相似度的计算都是在欧式空间的相似度计算,计算余弦相似性,基于的就是欧式空间。

如,有一个离散型特征,代表工作类型,该离散型特征共有三个取值,不使用one-hot编码,其表示分别是:

x_1=(1),x_2=(2),x_3=(3)。

两个工作之间的距离是:

(x_1,x_2)=1,d(x_2,x_3)=1,d(x_1,x_3)=2.

那么x_1和x_3工作之间就越不相似吗?显然这样的表示,计算出来的特征的距离是不合理的。

如果使用one-hot编码,则得到:

x_1=(1,0,0),x_2=(0,1,0),x_3=(0,0,1)

那么两个工作之间的距离都是sqrt(2)。即每两个工作之间的距离都是一样的,显得更合理。

3、sklearn中的one-hot

代码示例:

import numpy as np
from sklearn.preprocessing import OneHotEncoderenc=OneHotEncoder()
enc.fit([[0,0,3],[1,1,0],[0,2,1],[1,0,2]])print('enc.n_values_ is :',enc.n_values_)
print('enc.feature_indices_ is:',enc.feature_indices_)
print(enc.transform([[0,1,1]]).toarray())运行结果:
enc.n_values_ is: [2 3 4]
enc.feature_indices_ is: [0 2 5 9]
[[ 1.  0.  0.  1.  0.  0.  1.  0.  0.]]

代码解释:

为OneHotEncoder类传递进来的数据集:

[[0,0,3],
[1,1,0],
[0,2,1],
[1,0,2]]
  • 对象encn_values_成员变量,记录着每一个属性的最大取值数目,如本例第一个属性:0, 1, 0, 1 ⇒ 2,0, 1, 2, 0 ⇒ 3,3, 0, 1, 2 ⇒ 4
  • 即各个属性(feature)在 one hot 编码下占据的位数;
  • 对象 enc 的 feature_indices_,则记录着属性在新 One hot 编码下的索引位置
  • feature_indices_ 是对 n_values_ 的累积值,不过 feature_indices 的首位是 0;

进一步通过 fit 好的 one hot encoder 对新来的特征向量进行编码:

>>> enc.transform([[0, 1, 1]]).toarray()
array([[ 1.,  0.,  0.,  1.,  0.,  0.,  1.,  0.,  0.]])
  • 前 2 位 1, 0,对 0 进行编码
  • 中间 3 位 0, 1, 0 对 1 进行编码;
  • 末尾 4 位 0, 1, 0, 0 对 1 进行编码;

OneHotEncoder相关推荐

  1. 对python 数据处理中的LabelEncoder 和 OneHotEncoder详解

    对python 数据处理中的LabelEncoder 和 OneHotEncoder详解_起飞的木木的博客-CSDN博客_labelencoder原理

  2. OneHotEncoder独热编码和 LabelEncoder标签编码——机器学习

    学习sklearn和kagggle时遇到的问题,什么是独热编码?为什么要用独热编码?什么情况下可以用独热编码?以及和其他几种编码方式的区别. 首先了解机器学习中的特征类别:连续型特征和离散型特征 拿到 ...

  3. 数据预处理之独热编码(OneHotEncoder)

    前言 ---------------------------------------- 在机器学习算法中,我们经常会遇到分类特征,例如:人的性别有男女,祖国有中国,美国,法国等. 这些特征值并不是连续 ...

  4. 数据预处理之将类别数据数字化的方法 —— LabelEncoder VS OneHotEncoder

    LabelEncoder 和 OneHotEncoder 是什么 在数据处理过程中,我们有时需要对不连续的数字或者文本进行数字化处理. 在使用 Python 进行数据处理时,用 encoder 来转化 ...

  5. python labelencoder参数_对python 数据处理中的LabelEncoder 和 OneHotEncoder详解

    python 怎么读取 Label 里面的值 #简单来说 LabelEncoder 是对不连续的数字或者文本进行编号 from sklearn.preprocessing import LabelEn ...

  6. pandas 下的 one hot encoder 及 pd.get_dummies() 与 sklearn.preprocessing 下的 OneHotEncoder 的区别

    sklearn.preprocessing 下除了提供 OneHotEncoder 还提供 LabelEncoder(简单地将 categorical labels 转换为不同的数字): 1. 简单区 ...

  7. sklearn preprocessing 数据预处理(OneHotEncoder)

    0. StandardScaler 去均值时,在测试集上进行预测时减去的均值是训练集上得到的均值: import sklearn.preprocessing as prepdef standard_s ...

  8. 字符编码OneHotEncoder

    写在前边:查看编码前的原始数据,可以用inverse_transform()方法 sklearn.preprocessing.OneHotEncoder 方法 fit(self, X[, y]) Fi ...

  9. OneHotEncoder独热编码

    首先了解机器学习中的特征类别:连续型特征和离散型特征. 拿到获取的原始特征,必须对每一特征分别进行归一化,比如,特征A的取值范围是[-1000,1000],特征B的取值范围是[-1,1].如果使用lo ...

  10. 独热编码(OneHotEncoder)和标签编码(LabelEncoder)

    数据分类 我们在构建模型对数据进行训练之前,需要对数据进行特征工程,我们的数据可以分为连续型和离散型. 对于连续型数据,我们一般的做法是对其进行标准化或者归一化,之前写过一篇标准化和归一化的介绍,大家 ...

最新文章

  1. 农民工上网求职事半功倍
  2. opencv光流Optical Flow
  3. 浅析网站优化工作具体包括哪些内容?
  4. 电磁场与电磁波第二章 电磁场的基本规律
  5. python直方图均衡化代码_基于matlab的直方图均衡化代码
  6. 【工程师综合项目二】React + Koa2打造『JS++官网管理后台』
  7. linux常见的查看命令
  8. java解析未知key json_获取JsonObject某一未知key的值操作
  9. dspq值多少最好_蜂蜜纯度42的意思?蜂蜜纯度多少度好?
  10. 上岸 1 年后,重回大厂内卷
  11. 卸载mysql5.5.27(傻瓜式卸载)
  12. word中尾注分隔符删除后还有一个回车符怎么删
  13. 部署asp.net mvc_在ASP.NET 2.0上部署ASP.NET MVC
  14. php公告滚动源码,如何利用JavaScriptjQuery实现滚动公告栏(代码实例)
  15. 录像机中码流类型中定时、事件、网传代表什么意思?
  16. linux关闭计算机的命令是,关闭Linux计算机的命令操作
  17. 常用的HTTP请求方法
  18. 阿里的人工智能之路 与谷歌亚马逊还有多大差距
  19. uni-app 图标字体引用
  20. JSD-2204-API-正则-Object-包装类-Day18

热门文章

  1. Marvolo Gaunt's Ring CodeForces - 855B+线段树+维护区间最大值和最小值
  2. 记一次升级了编译器后VSCode中产生的问题
  3. Hadoop Mapreduce组建 核心环形缓冲区 RingBuff 原理及Go实现
  4. Python 向人工智能方向发展的技能树
  5. 漫画:细思极恐,生男女几率相同,那为什么很多国家男女比例还失衡呢?
  6. oracle导出dnf文件,ORACLE 常见故障恢复-dnf文件损坏
  7. 机器学习精髓-机器学习百页书
  8. 电信天翼3G手机ePhone(易丰)E63V不完全攻略
  9. 【== 与 equals】
  10. CDH集成了Kerberos后写入数据到HBase遇到的几个问题