OneHotEncoder
1、独热编码的优点
- 能处理非连续型数值特征
- 在一定程度上扩充了特征。如性别,经过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]]
- 对象
enc
的n_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相关推荐
- 对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解_起飞的木木的博客-CSDN博客_labelencoder原理
- OneHotEncoder独热编码和 LabelEncoder标签编码——机器学习
学习sklearn和kagggle时遇到的问题,什么是独热编码?为什么要用独热编码?什么情况下可以用独热编码?以及和其他几种编码方式的区别. 首先了解机器学习中的特征类别:连续型特征和离散型特征 拿到 ...
- 数据预处理之独热编码(OneHotEncoder)
前言 ---------------------------------------- 在机器学习算法中,我们经常会遇到分类特征,例如:人的性别有男女,祖国有中国,美国,法国等. 这些特征值并不是连续 ...
- 数据预处理之将类别数据数字化的方法 —— LabelEncoder VS OneHotEncoder
LabelEncoder 和 OneHotEncoder 是什么 在数据处理过程中,我们有时需要对不连续的数字或者文本进行数字化处理. 在使用 Python 进行数据处理时,用 encoder 来转化 ...
- python labelencoder参数_对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
python 怎么读取 Label 里面的值 #简单来说 LabelEncoder 是对不连续的数字或者文本进行编号 from sklearn.preprocessing import LabelEn ...
- pandas 下的 one hot encoder 及 pd.get_dummies() 与 sklearn.preprocessing 下的 OneHotEncoder 的区别
sklearn.preprocessing 下除了提供 OneHotEncoder 还提供 LabelEncoder(简单地将 categorical labels 转换为不同的数字): 1. 简单区 ...
- sklearn preprocessing 数据预处理(OneHotEncoder)
0. StandardScaler 去均值时,在测试集上进行预测时减去的均值是训练集上得到的均值: import sklearn.preprocessing as prepdef standard_s ...
- 字符编码OneHotEncoder
写在前边:查看编码前的原始数据,可以用inverse_transform()方法 sklearn.preprocessing.OneHotEncoder 方法 fit(self, X[, y]) Fi ...
- OneHotEncoder独热编码
首先了解机器学习中的特征类别:连续型特征和离散型特征. 拿到获取的原始特征,必须对每一特征分别进行归一化,比如,特征A的取值范围是[-1000,1000],特征B的取值范围是[-1,1].如果使用lo ...
- 独热编码(OneHotEncoder)和标签编码(LabelEncoder)
数据分类 我们在构建模型对数据进行训练之前,需要对数据进行特征工程,我们的数据可以分为连续型和离散型. 对于连续型数据,我们一般的做法是对其进行标准化或者归一化,之前写过一篇标准化和归一化的介绍,大家 ...
最新文章
- 农民工上网求职事半功倍
- opencv光流Optical Flow
- 浅析网站优化工作具体包括哪些内容?
- 电磁场与电磁波第二章 电磁场的基本规律
- python直方图均衡化代码_基于matlab的直方图均衡化代码
- 【工程师综合项目二】React + Koa2打造『JS++官网管理后台』
- linux常见的查看命令
- java解析未知key json_获取JsonObject某一未知key的值操作
- dspq值多少最好_蜂蜜纯度42的意思?蜂蜜纯度多少度好?
- 上岸 1 年后,重回大厂内卷
- 卸载mysql5.5.27(傻瓜式卸载)
- word中尾注分隔符删除后还有一个回车符怎么删
- 部署asp.net mvc_在ASP.NET 2.0上部署ASP.NET MVC
- php公告滚动源码,如何利用JavaScriptjQuery实现滚动公告栏(代码实例)
- 录像机中码流类型中定时、事件、网传代表什么意思?
- linux关闭计算机的命令是,关闭Linux计算机的命令操作
- 常用的HTTP请求方法
- 阿里的人工智能之路 与谷歌亚马逊还有多大差距
- uni-app 图标字体引用
- JSD-2204-API-正则-Object-包装类-Day18
热门文章
- Marvolo Gaunt's Ring CodeForces - 855B+线段树+维护区间最大值和最小值
- 记一次升级了编译器后VSCode中产生的问题
- Hadoop Mapreduce组建 核心环形缓冲区 RingBuff 原理及Go实现
- Python 向人工智能方向发展的技能树
- 漫画:细思极恐,生男女几率相同,那为什么很多国家男女比例还失衡呢?
- oracle导出dnf文件,ORACLE 常见故障恢复-dnf文件损坏
- 机器学习精髓-机器学习百页书
- 电信天翼3G手机ePhone(易丰)E63V不完全攻略
- 【== 与 equals】
- CDH集成了Kerberos后写入数据到HBase遇到的几个问题