独热编码(One-Hot Encoding)

1人阅读 评论(0) 收藏 举报
分类:

【概念】

One-hot encoding是只存在一个1其余全为0的n位序列。也可以称它为二元向量,二元就是里面只有0和1.通常被用来描述一个状态机的某个状态。

【用处】

用于处理离散型特征。通过将离散特征通过one-hot编码映射到欧式空间,可以进一步计算特征之间的距离与相似度,然后在回归,分类,聚类等机器学习算法中使用。至于什么是离散型数据,欧式空间,特征距离和特征相似度,请同学自行学习,这里不做展开。

【应用】

在机器学习中,我们需要将用来训练的数据样本集合分类,转换成程序能够理解的向量。

比如我手里有三个图像样本,要识别出图片里的内容,其中包含三个维度,分别是
{
‘sex’:[“male”, “female”],
‘hair’:[‘short’,’long’,’bare’],
‘hair color’:[‘black’,’gold’,’blue’]
}

样本集合如下:

id sex hair hair color
1 male short black,gold
2 female long black,blue
3 male short gold
4 male bare black

注意:hair color这栏存在多个值的原因在于,这个人可能染了一部分头发。其他维度也同理,没准图片中有几个人,好多美女。

【代码】

下面是scikit-learn docs提供的代码示例:

>>> from sklearn.preprocessing import OneHotEncoder
>>> enc = OneHotEncoder()
# 这里有四个样本,三个维度
>>> enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]])  
OneHotEncoder(categorical_features='all', dtype=<... 'numpy.float64'>,
       handle_unknown='error', n_values='auto', sparse=True)
#fit函数算了下3个维度各自的值个数,第一列是[0,1,0,1]只有两个值,第二列是[0,1,2,0]故有三个值,第三列同上。
>>> enc.n_values_
array([2, 3, 4])
# 待理解,大致是022+32+3+4
>>> enc.feature_indices_
array([0, 2, 5, 9])

#转换序列,0 -> [10],为啥0不是[0,1],这是函数分的,应该是有优化,不用在意。
#        1 -> [0,1,0]
#        1 -> [0,1,0,0]
>>> enc.transform([[0, 1, 1]]).toarray()
array([[ 1.,  0.,  0.,  1.,  0.,  0.,  1.,  0.,  0.]])
查看评论

独热编码(One-Hot Encoding)

【概念】One-hot encoding是只存在一个1其余全为0的n位序列。也可以称它为二元向量,二元就是里面只有0和1.通常被用来描述一个状态机的某个状态。【用处】用于处理离散型特征。通过将离散特征...
  • counsellor
  • counsellor
  • 2017年03月03日 19:28
  • 3254

[machine learning] 独热编码one hot encoding 及 MNIST label 独热编码范例

1. 为什么要用one hot encoding在实际场景中,变量非连续数值,而是离散数据时,采用暴力赋值,会给数据一个潜在的排序权重。换言之,各向量之间的距离不等。例如:性别(男,女),我们可以暴力...
  • u013084616
  • u013084616
  • 2018年01月24日 13:53
  • 117

数据预处理:独热编码(One-Hot Encoding)

问题由来在很多机器学习任务中,特征并不总是连续值,而有可能是分类值。例如,考虑一下的三个特征:["male", "female"]["from Europe", "from US", "from As...
  • pipisorry
  • pipisorry
  • 2017年03月10日 11:32
  • 12558

独热编码(One-Hot Encoding)介绍及实现

在数据处理和特征工程中,经常会遇到类型数据,如性别分为[男,女](暂不考虑其他。。。。),手机运营商分为[移动,联通,电信]等,我们通常将其转为数值带入模型,如[0,1], [-1,0,1]等,但模型...
  • a595130080
  • a595130080
  • 2017年03月21日 15:40
  • 7306

独热码one-hot code

1.独热码概念             独热码,在英文文献中称做 one-hot code, 直观来说就是有多少个状态就有多少比特,而且只有一个比特为1,其他全为0的一种码制。通常,在通信网络协议...
  • avrmcu1
  • avrmcu1
  • 2014年02月27日 16:45
  • 1306

机器学习 数据预处理之独热编码(One-Hot Encoding)

机器学习 数据预处理之独热编码(One-Hot Encoding) 问题由来 在很多机器学习任务中,特征并不总是连续值,而有可能是分类值。 例如,考虑一下的三个特征: ...
  • wtq1993
  • wtq1993
  • 2016年05月05日 17:39
  • 4973

one-hot coding(热独编码)

在很多机器学习任务中,特征并不总是连续值,而有可能是分类值。 例如,考虑一下的三个特征: ["male", "female"] ["from Europe", "from US", "from...
  • u013087984
  • u013087984
  • 2016年07月25日 16:35
  • 585

Verilog中状态机编码方式的选择:二进制编码(Binary)、格雷码(Gray-code)编码、独热码(One-hot)编码

一般的,在Verilog中最常用的编码方式有二进制编码(Binary)、格雷码(Gray-code)编码、独热码(One-hot)编码。 二进制码和格雷码是压缩状态编码。 若使用格雷编码,则相邻...
  • a8039974
  • a8039974
  • 2014年05月25日 07:47
  • 2215

One-Hot Encoding独热编码

机器学习 数据预处理之独热编码(One-Hot Encoding) 问题由来 在很多机器学习任务中,特征并不总是连续值,而有可能是分类值。 例如,考虑一下的三个特征: ...
  • wang4959520
  • wang4959520
  • 2016年03月24日 17:01
  • 2073

java 实现数据挖掘的独热编码 OneHot

// 独热编码,对某一列进行编码 public static ArrayList oneHot(ArrayList list, int index) throws Exception {...
  • qq_16234613
  • qq_16234613
  • 2017年12月03日 22:00
  • 169
    个人资料
    持之以恒
    等级:
    访问量: 1万+
    积分: 1530
    排名: 3万+
    博客专栏
    文章存档
    最新评论