资讯专栏INFORMATION COLUMN

One-hot coding(独热编码)

URLOS / 2533人阅读

摘要:介绍其实编码方式并不难理解,位状态寄存器来对个状态进行编码就是将所有状态排列,具有哪些状态就将状态进行标记。缺点当类别的数量很多时,特征空间会变得非常大。在这种情况下,一般可以用主成分分析来减少维度。而且这种组合在实际中也非常有用。

在数据预处理中,为了方便模型的输入,常常会把非数值类型量化成数值类型。
其中比较简单的一种处理离散型数值编码方式叫one-hot coding(独热编码)

1、概念

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

2、介绍

其实编码方式并不难理解,N位状态寄存器来对N个状态进行编码就是将所有状态排列,具有哪些状态就将状态进行标记。用来解决类别型数据的离散值问题

比如:

对0,1进行编码
首先只有两个状态就是需要两个状态寄存器
编码为:00,01

再比如,有3个特征值;

face = ["handsome","ugly"]
stature = ["tall","middle","short"]
country = ["Chinese","American,"Japan","korea"]

一共9种状态,用9位数字表示

["handsome","tall","Japan"] 表示为 101000010
["ugly","short","Japan"] 表示为 010010010
3、简单实现

在python的第三方库pandas中实现非常简单,就是使用 get_dummies() 方法

def one_hot_encoder(df, nan_as_category = True):
    original_columns = list(df.columns)         # 属性
    categorical_columns = [col for col in df.columns if df[col].dtype == "object"]
    df = pd.get_dummies(df, columns= categorical_columns, dummy_na= nan_as_category)  # 
    new_columns = [c for c in df.columns if c not in original_columns]
    return df, new_columns
    
 # 测试
data = [["handsome", "tall", "Japan"],
        ["ugly", "short", "Japan"],
        ["handsome", "middle", "Chinese"]]
df = pd.DataFrame(data,columns=["face", "stature "," country "])
df,df_cat = one_hot_encoder(df)
print(df)

结果如下:

4、特点

优点:独热编码的值只有0和1,不同的类型存储在垂直的空间,解决了分类器不好处理属性数据的问题,在一定程度上也起到了扩充特征的作用,特征的增加也防止了模型的过拟合。

缺点:当类别的数量很多时,特征空间会变得非常大。在这种情况下,一般可以用主成分分析(PCA)来减少维度。而且one-hot encoding+PCA这种组合在实际中也非常有用。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42645.html

相关文章

  • 机器学习“特征编码”的经验分享:鱼还是熊掌?

    摘要:特征编码类型本篇,我们主要说一下分类型特征的编码方式。下面,我们要对这个变量进行编码,在中有现成的独热编码方法,代码如下原来的变量被拆分为两个单独的变量,这两个变量就是原来的分类特征值有电梯和无电梯。 作者:xiaoyu 微信公众号:Python数据科学 知乎:python数据分析师 showImg(https://segmentfault.com/img/remote/146000...

    trilever 评论0 收藏0
  • 机器学习“特征编码”的经验分享:鱼还是熊掌?

    摘要:特征编码类型本篇,我们主要说一下分类型特征的编码方式。下面,我们要对这个变量进行编码,在中有现成的独热编码方法,代码如下原来的变量被拆分为两个单独的变量,这两个变量就是原来的分类特征值有电梯和无电梯。 作者:xiaoyu 微信公众号:Python数据科学 知乎:python数据分析师 showImg(https://segmentfault.com/img/remote/146000...

    JinB 评论0 收藏0
  • 机器学习数据处理One-Hot编码详解

      大家都知道,最近人工智能是比较火热的,那么,人工智能主要应用的就是机器学习,但是机器学习对其要求还是比较高的。在使用机器学习处理数据的时候,会经常性的用到One-Hot代码,下面小编就具体给大家介绍下这种编码的实现方式。  1.为什么使用one-hot编码?  在人工智能算法中,大家难免会遇到归类基本特征,比如说:人的性别有男人女人,国家有日本,韩国,朝鲜等。这类特征值并不是连续不断的,反而是...

    89542767 评论0 收藏0

发表评论

0条评论

URLOS

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<