精华内容
下载资源
问答
  • 对于标签分类:最后生成的可以是类别标签索引,也可以是one-hot向量(独热编码) 我们举一个五分类的例子: 可以用[3]:表示第三种分类 也可以用one-hot向量[0,0,1,0,0]:表示第三种分类 那么我们接下来用pytorch和...
  • 1、离散特征的取值之间没有大小的意义,比如color:[red,blue],那么就使用one-hot编码 2、离散特征的取值有大小的意义,比如size:[X,XL,XXL],那么就使用数值的映射{X:1,XL:2,XXL:3} 使用pandas可以很方便的对离散型...
  • 基于神经网络的分类,train+test+predict,还有生成one-hot编码格式的函数。很好用,推荐,有已经训练号的权重文件checkpoint等。
  • 主要介绍了Tensorflow实现将标签变为one-hot形式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • one-hot编码的作用 使用one-hot编码,将离散特征的取值扩展到了欧式空间,离散特征的某个取值就对应欧式空间的某个点 ...enc = preprocessing.OneHotEncoder() enc.fit([[0, 0, 3], [1, 1, 0], [0, 2
  • one-hot编码

    2017-09-27 09:50:36
    自己写一个小例子,方便大家清楚ont-hot编码。如果有问题,还希望大家多多指教,如果有问题,可以及时和我联系
  • 今天小编就为大家分享一篇python的scikit-learn将特征转成one-hot特征的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 使用Pytorch框架进行深度学习任务,特别是分类任务时,经常会用到如下: import torch.nn as nn criterion = nn.CrossEntropyLoss().cuda() loss = criterion(output, target) 即使用torch.nn.CrossEntropyLoss()...
  • 训练+预测2.1.get_dummies方法2.2.OneHotEncoder方法 1.实验目的 根据csv文件已给属性(Car Model、Mileage、Sell Price($)、Age(yrs))来预测汽车售价。下面将给出两种预测onehot编码方法,其中模型用Linear...
  • tensorflow下 自制rfrecords数据集采用one-hot编码做图像分类源码
  • one-hot编码方法

    2018-05-22 18:35:21
    one-hot编码的两个方法 。。。。。。。。。。。。。。。。。。。。。。。。。
  • 以下资料来自:网络+最后的整合 ...https://www.cntofu.com/book/85/ml/clean-feature/one-hot.md ...One-Hot编码,又称为一位有效编码,主要是采用N位状态寄存器来对N个状态进行编码,每个状态都由他独...

    以下资料来自:网络+最后的整合
    https://www.cnblogs.com/shuaishuaidefeizhu/p/11269257.html
    https://www.cntofu.com/book/85/ml/clean-feature/one-hot.md

    一、什么是one-hot编码

    One-Hot编码,又称为一位有效编码,主要是采用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效。

    One-Hot编码是分类变量作为二进制向量的表示。这首先要求将分类值映射到整数值。然后,每个整数值被表示为二进制向量,除了整数的索引之外,它都是零值,它被标记为1。

    二、one-hot编码过程详解

    比如我们要对 “hello world” 进行one-hot编码,怎么做呢?
    1、确定要编码的对象—hello world
    2、确定分类变量–h e l l o 空格 w o r l d,共27种类别(26个小写字母 + 空格)
    3、以上问题就相当于,有11个样本,每个样本有27个特征,将其转化为二进制向量表示。
    这里有一个前提,特征排列的顺序不同,对应的二进制向量亦不同(比如我把空格放在第一列和a放第一列,one-hot编码结果肯定是不同的)
    因此我们必须要事先约定特征排列的顺序:
    1、27种特征首先进行整数编码:a–0,b–1,c–2,…,z–25,空格–26
    2、27种特征按照整数编码的大小从前往后排列
    得到的one-hot编码如下:
    在这里插入图片描述
    再比如:我们要对[“中国”, “美国”, “日本”]进行one-hot编码,
    怎么做呢?
    1、确定要编码的对象–[“中国”,“美国”,“日本”、“美国”]
    2、确定分类变量–中国 美国 日本,共3种类别。
    3、以上问题就相当于,有3个样本,每个样本有3个特征,将其转化为二进制向量表示。

    我们首先进行特征的整数编码:中国–0,美国–1,日本–2,并将特征按照从小到大排列
    得到one-hot编码如下:
    在这里插入图片描述

    三、为什么需要one-hot编码?

    one hot编码是将类别变量转换为机器学习算法易于利用的一种形式的过程。

    上面的 hello world 相当于多分类的问题(27分类),每个样本只对应于一个类别(即只在对应的特征处值为1,其余地方值为0),而我们的分类结果,得到的往往是隶属于某个类别的概率,这样在进行损失函数(例如交叉熵损失)或准确率计算时,变得非常方便。

    四、one-hot编码的缺陷

    one-hot编码要求每个类别之间相互独立,如果之间存在某种连续型的关系,或许使用distributed respresentation(分布式)更加合适。

    五、one-hot的好处:

    1、解决了分类器不好处理属性数据的问题。
    2、在一定程度上也起到了扩充特征的作用。

    六、举例

    from sklearn import preprocessing
    
    enc = preprocessing.OneHotEncoder()
    enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]])
    print(enc.transform([[0, 1, 3]]).toarray())
    

    输出结果为:

    [[1. 0. 0. 1. 0. 0. 0. 0. 1.]]
    
    展开全文
  • 今天小编就为大家分享一篇python对离散变量的one-hot编码方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 什么是one-hot编码?one-hot编码,又称独热编码、一位有效编码。其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效。 假设有如下表格,记录了某网站...

    什么是one-hot编码?one-hot编码,又称独热编码、一位有效编码。其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效。

    假设有如下表格,记录了某网站访问者的三个信息:性别,来自,使用的浏览器:

    考虑以下三个特征:

    性别:["男","女"]

    来自:["北京","上海","广州"]

    使用的浏览器:["Firefox"," Chrome","Safari","Internet Explorer"]

    如果将上述特征用数字表示。例如:

    性别:["男","女"],我们用"0"表示"男",用"1"表示"女",则,["男","女"]可表示为[0,1]。其中,"男"对应0,"女"对应1

    同样的:

    表来自:["北京","上海","广州"],我们用"0"表示"北京",用"1"表示"上海",用"2"表示"广州",得到:

    ["北京","上海","广州"],表示为:[0,1,2]。其中,北京 对应 0,上海 对应 1,广州 对应 2。

    使用的浏览器:["Firefox"," Chrome","Safari","Internet Explorer"],我们用"0"表示"Firefox",用"1"表示"Chrome",用"2"表示"Safari",用"3"表示"Internet Explorer",得到:

    ["Firefox"," Chrome","Safari","Internet Explorer"],表示为:[0,1,2,3]。其中 Firefox 对应0,Chrome 对应 1,Safari 对应 2,Internet Explorer 对应 3。

    那么,如果现在有一个记录:

    通过上面设置的对应关系,用数字表示,可表示为:[0,0,1]。

    One-Hot Encoding

    可以这样理解,对于每一个特征,如果它有m个可能值,那么经过独热编码后,就变成了m个二元特征。并且,这些特征互斥,每次只有一个激活。

    如上图:假设我们有四个样本(行,一共有四行),每个样本有三个特征(列,一共有三列,分别是:性别、来自、使用的浏览器),转化为数字以后,变为:

    其中:特征1表示:性别,特征2表示:来自,特征3表示:使用的浏览器。

    每个特征的取值个数(第一列共有2个取值,第二列有3个,第三列有4个),上图中我们已经对每个特征进行了普通的数字编码,那么one-hot编码是怎么计算的呢?我们拿特征3来说明:

    特征3:使用的浏览器,有4种取值(状态),分别是 0,1,2,3。我们就用4个状态位来表示这个特征,one-hot编码要保证每个样本中的单个特征只有一位处于状态1(仅该位激活),其他的都是0。

    0表示为:1000(四个状态位)

    1表示为:0100(四个状态位)

    2表示为:0010(四个状态位)

    3表示为:0001(四个状态位)

    同理,特征2有3种取值(状态),分别是 0,1,2。我们就用3个状态位来表示这个特征,one-hot编码:

    0表示为:100(三个状态位)

    1表示为:010(三个状态位)

    2表示为:001(三个状态位)

    特征1,有2种取值(状态),分别是 0,1。我们就用2个状态位来表示这个特征,one-hot编码:

    0表示为:10(两个状态位)

    1表示为:01(两个状态位)

     

    所以我们可以得到上图样本特征的新表示:

    对于四个样本我们可以得到它们的特征向量分别为:

    样本1-->[1,0,1,0,0,1,0,0,0]====>[特征1+特征2+特征3]==>[10,100,1000]==>[1,0,1,0,0,1,0,0,0]

    样本2-->[0,1,0,1,0,0,1,0,0]

    样本3-->[0,1,0,0,1,0,0,1,0]

    样本4-->[1,0,1,0,0,0,0,0,1]

    基于python和Scikit-learn的一个简单例子,求样本5的one-hot编码

    普通数字表示:[0,0,1]

    输出:array([[1., 0., 1., 0., 0., 0., 1., 0., 0.]])

    import numpy
    import sklearn
    from sklearn.preprocessing import OneHotEncoder
    data=[
        [0,0,0],
        [1,1,1],
        [1,2,2],
        [0,1,3]
    ]
    encoder = OneHotEncoder()
    encoder.fit(data)
    ans = encoder.transform([[0, 0, 1]]).toarray() 
    ans

    另外一个基于python和Scikit-learn的一个简单例子:

    import numpy
    import sklearn
    from sklearn.preprocessing import OneHotEncoder
    encoder2 = OneHotEncoder()
    encoder2.fit([
        [0, 2, 1, 12],
        [1, 3, 5, 3],
        [2, 3, 2, 12],
        [1, 2, 4, 3]
    ])
    encoded_vector = encoder2.transform([[2, 3, 5, 3]]).toarray()
    encoded_vector 

    输出:

    array([[0., 0., 1., 0., 1., 0., 0., 0., 1., 1., 0.]])

     

     

    展开全文
  • 文章目录一、 什么是one-hot编码二、one-hot和de-one-hot编码: 一、 什么是one-hot编码 One-Hot编码是用N位状态寄存器来对N个状态进行编码。一个变量,共有3个分类值(0,1,2),那么N为3,对应的One-Hot编码可以...

    一、 什么是one-hot编码

    One-Hot编码是用N位状态寄存器来对N个状态进行编码。一个变量,共有3个分类值(0,1,2),那么N为3,对应的One-Hot编码可以表示为100,010,001。

    二、one-hot和de-one-hot编码:

    #coding=utf-8
    
    import numpy as np 
    from keras.utils import to_categorical
    
    before_one_hot = np.array(([2],[0],[1],[2],[0]))
    print("----------beofe the one hot encoding----------")
    print(before_one_hot)
    
    one_hot = to_categorical(before_one_hot)
    print("----------after the one hot encoding----------")
    print(one_hot)
    
    print("----------before the de-one-hot encoding----------")
    print(one_hot)
    de_onehot = []
    for i in range(len(one_hot)):
        if one_hot[i][0] == 1:
            de_onehot.append(0)
        elif one_hot[i][1] == 1:
            de_onehot.append(1)
        else:
            de_onehot.append(2)
    
    print("----------after the de-one-hot encoding----------")
    de_onehot = np.array(de_onehot)
    de_onehot = de_onehot.reshape(-1,1)
    print(de_onehot)
    

    one-hot编码前后的形式如下:在这里插入图片描述one-hot编码可以采用keras库的函数to_categorical()进行编码,de-one-hot我没有找到与之对应的函数,写了一个循环,遍历所有的标签,在每一个标签上进行判断。
    这块写的就比较繁琐。主要是需要对标签的类别和形式清楚才可以使用,如果有更好的解决办法,可以在评论区交流一下
    编码之后的one-hot 进行de-one-hot前后结果:
    在这里插入图片描述

    展开全文
  • 为什么要用One-Hot编码? 在数据集中,经常碰到离散型的特征,比如:国家∈{中国,英国,法国,德国…} 如果我们使用country=0表示中国,…,country=3表示德国,这样的表示方法,无法在欧式空间里计算出合理的样本...

    为什么要用One-Hot编码?

    在数据集中,经常碰到离散型的特征,比如:国家∈{中国,英国,法国,德国…}
    如果我们使用country=0表示中国,…,country=3表示德国,这样的表示方法,无法在欧式空间里计算出合理的样本点之间的距离。


    用自然数表示离散特征无法合理计算样本点距离?

    保持两个样本点的其他特征不变(以求方便用0表示),只考虑国家这个特征(加粗,用自然数表示),那么有3个样本向量可以表示为:

    person1 = [0, 0, 0, 0] (中国人)
    person2 = [0, 0, 3, 0] (德国人)
    person3 = [0, 0, 2, 0] (法国人)

    dist(person1, person2) = 3dist(person2, person3) = 1,这显然是不合理的。

    用One-Hot?

    其他同上,不过国家特征用one-hot编码表示:

    person1 = [0, 0, 1, 0, 0, 0, 0]
    person2 = [0, 0, 0, 0, 0, 1, 0]
    person3 = [0, 0, 0, 0, 1, 0, 0]

    这样,任意两个样本点的距离就相同了。


    总结

    使用one-hot编码可以解决离散型特征值的尴尬,但是依然还是有它的缺陷,等我学会了再来写博客。

    展开全文
  • 一文搞懂one-hot和embedding

    千次阅读 2021-03-02 16:03:56
    接下来说说 传统的 one-hot 编码开始,阐述其优劣,并延伸至 word embedding 技术和其优点 人类可以很轻易地理解一个单词、词组或者字母,比如「LOVE」,但机器是理解不了的。想要让机器理解单词,就必须要把它变成...
  • Spark ML 特征工程之 One-Hot Encoding-附件资源
  • one-hot向量形式

    万次阅读 多人点赞 2018-10-21 20:19:46
    one-hot向量 这个向量的表示为一项属性的特征向量,也就是同一时间只有一个激活点(不为0),这个向量只有一个特征是不为0的,其他都是0。特别稀疏,这个稀疏矩阵用来组成一个多特征的训练集样本,相当于样本是一个...
  • One-Hot编码,又称为一位有效编码,主要是采用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效。 One-Hot编码是分类变量作为二进制向量的表示。这首先要求将分类值...
  • enc = preprocessing.OneHotEncoder() enc.fit([[0,0,3],[1,1,0],[0,2,1],[1,0,2]]) #这里一共有4个数据,3种特征 array = enc.transform([[0,1,3]]).toarray() #这里使用一个新的数据来测试 print array # [[ ...
  • one-hot向量

    2021-07-26 09:50:25
    one-hot向量定义 one-hot向量为有且只有一个元素为1,其余元素都为0的向量. one-hot向量是在数字电路中的一种状态编码,指对任意给定的状态,状态寄存器中只有1位为1,其余位都为0. ——《神经网络与深度学习》 ...
  • One-Hot 编码

    2021-01-05 15:29:08
    0. 前言 偶然间听到One-Hot编码这个概念,但是并不理解是怎么回事。所以经过学习与了解,写一篇博客来加深自己对此的理解。
  • 在处理类别型特征时,有时需要进行one-hot 在进行模型训练时,需要把数据划分train和test,类别型数据是在划分之前one-hot,还是划分之后? 在划分之前做one-hot 整体one-hot,train和test 不会出现某个值无法...
  • 关于One-hot编码的一些整理及用途[转载+整理]

    万次阅读 多人点赞 2019-06-23 21:44:23
    在学习one-hot编码前,我们首先要知道,连续值的离散化为什么会提升模型的非线性能力?  简单的说,使用连续变量的LR模型,模型表示为公式(1),而使用了one-hot或哑变量编码后的模型表示为公式(2)   式中...
  • one-hot 编码催生了 softmax,然而 softmax 的输出格式造成传统基于距离度量的损失函数学习效率很低,于是交叉熵技术横空出世。本文从头梳理这些技术的来龙去脉。
  • 最近在做ctr预估的实验时,还没思考过为何数据处理的时候要先进行one-hot编码,于是整理学习如下: 在很多机器学习任务如ctr预估任务中,特征不全是连续值,而有可能是分类值。如下:  分类变量(定性特征)与...
  • 词向量系列之One-Hot编码详解

    千次阅读 2020-03-26 15:46:06
    独热编码的实现2.1 python简单实现one-hot编码2.2 sklearn2.3 Keras2.4 tensorflow 0.前言   在回归,分类,聚类等机器学习算法中,各个特征之间的距离(相似度)计算是非常重要的,然而常用的距离计算都是在欧式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 90,115
精华内容 36,046
关键字:

One-Hot