数据特征处理之字典型数据-特征抽取(One-hot编码)

首页 » Python » 正文

数据特征处理之字典型数据-特征抽取(One-hot编码)


数据源存储的数据格式有多重形式,如文本型,数值型,JSON…, 其中JSON类型数据在python中也被称为字典类型,本篇文章则介绍的是字典型数据的特征抽取(特征值化)

 

数据特征处理之字典型数据-特征抽取(One-hot编码)


仍然是借助机器学习工具模块sklearn来完成字典型型数据的特征抽取

 

# -*- coding:utf-8 -*-

# @Author: 数据与编程之美
# @File: dictionary.py
# @Time: 2021/01/01 20:32


from sklearn.feature_extraction import DictVectorizer


def dict():
    """
    字典型数据特征值化
    :return:
    """

    dic = DictVectorizer()

    data = dic.fit_transform([{'name': '李四', 'age': 18},
                              {'name': '张三', 'age': 30},
                              {'name': '王五', 'age': 21}])

    # 输出词条列表
    print(dic.get_feature_names())

    # 输出特征值化后的数据
    print(data)


if __name__ == "__main__":

    dict()

 

输出结果如下

 

数据特征处理之字典型数据-特征抽取(One-hot编码)

 

结果分析说明:

转换后的数据结果是以坐标的形式来显示

 

数据特征处理之字典型数据-特征抽取(One-hot编码)

 

上述的坐标值数据结构其实是一个稀疏矩阵(Sparse matrix),意思是元素大部分为零的矩阵,稀疏矩阵还有一个明显的特征就是只存储非零数据,这样做的目的是使运算速度更快和压缩存储达到节省空间,其实它和下图的本质是一样的

 

数据特征处理之字典型数据-特征抽取(One-hot编码)

其中,行数是字典的个数,列数是转换后的特征列表值得种类个数。

第0行,第0列存储的值是18,换种解释就是在第一个字典数据中,age值是18就转换为18

第0行,第1列存储的值是0,意思是第一个字典数据中,没有张三记为0

第0行,第2列存储的值是1,意思是第一个字典数据中,有李四记为1

第0行,第3列存储的值是0,意思是第一个字典数据中,没有王五记为0

 

规律:

1、字典类型数据中,数值型(age)在转换后的特征列表中是以key作为特征名称的,而对于(name)这样的文字型(类似的还有:性别)数据而是以每种value值作为单独的一个特征名称放入特征列表中;

2、典类型数据中,数值型数据是多少转换后的值就是多少,文本型有对应的值就用1表示,没有就用0来表示(专业术语叫:One-hot编码、热编码)


平常呢,对于输出稀疏矩阵这样的结果看起来很不直观,此时我们给DictVectorizer()加上参数sparse=False,再看看下结果

 

数据特征处理之字典型数据-特征抽取(One-hot编码)

 

数据特征处理之字典型数据-特征抽取(One-hot编码)

 

此时结果已变为我们常见的二维矩阵形式

 

结果分析说明

 

在没有加入参数sparse=False之前,字典数据特征值化后的结果是一个稀疏矩阵(sparse matrix),加入参数后变成了我们常见的二维矩阵形式,其实这两者结果没有什么本质上不同,只不过稀疏矩阵是以坐标的形式展示数据,并且只显示数据不为0的坐标,这样做的目的是使节约内存以及快速读取计算。

 

数据特征处理之字典型数据-特征抽取(One-hot编码)


针对上述提及的One-hot编码的处理风格,我们再看看个例子会更加理解

现有一数据集如下:

 

数据特征处理之字典型数据-特征抽取(One-hot编码)

 

特征有:name、Sex、Hobby、Height等。对于这样的数据是不能输入到算法中的,有时候我们会给每种数据做一个标记,如种类特别多的标记的数字也越多,此时对于这样数据集,因为0、1、2、3、4、5、6等标记的不同可能会产生优先级的臆想,而为了消除这中现象,于是就有了One-hot编码,通过特征重构,将有值得标记为1,没有的标记为0。

 

数据特征处理之字典型数据-特征抽取(One-hot编码)


以上内容就是字典型数据进行特征值化的具体操作方法,案例很简单,思想很重要

 

更多精彩内容请关注公众号:

 

【福利】pycharm、idea、全家桶正版激活

数据特征处理之字典型数据-特征抽取(One-hot编码)

作者:bear, 转载或复制请以 超链接形式 并注明出处 数据与编程之美
原文地址:《数据特征处理之字典型数据-特征抽取(One-hot编码)》 发布于2021-01-01

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

一碗牛肉面
鼓励站长分享更多学习经验、教程、学习资源。
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册