网站首页 > 技术文章 正文
数据源存储的数据格式有多种形式,如文本型,数值型,JSON…, 其中JSON类型数据在python中也被称为字典类型,本篇文章则介绍的是字典型数据的特征抽取(特征值化)
仍然是借助机器学习工具模块sklearn来完成字典型型数据的特征抽取
# -*- coding:utf-8 -*-
# @Author: 数据与编程之美
# @File: dictionary.py
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()
输出结果如下
结果分析说明:
转换后的数据结果是以坐标的形式来显示
上述的坐标值数据结构其实是一个稀疏矩阵(Sparse matrix),意思是元素大部分为零的矩阵,稀疏矩阵还有一个明显的特征就是只存储非零数据,这样做的目的是使运算速度更快和压缩存储达到节省空间,其实它和下图的本质是一样的
其中,行数是字典的个数,列数是转换后的特征列表值种类个数。
第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,再看看下结果
此时结果已变为我们常见的二维矩阵形式
结果分析说明
在没有加入参数sparse=False之前,字典数据特征值化后的结果是一个稀疏矩阵(sparse matrix),加入参数后变成了我们常见的二维矩阵形式,其实这两者结果没有什么本质上不同,只不过稀疏矩阵是以坐标的形式展示数据,并且只显示数据不为0的坐标,这样做的目的是使节约内存以及快速读取计算。
针对上述提及的One-hot编码的处理风格,我们再看看个例子会更加理解
现有一数据集如下:
特征有:name、Sex、Hobby、Height等。对于这样的数据是不能输入到算法中的,有时候我们会给每种数据做一个标记,如种类特别多的标记的数字也越多,此时对于这样数据集,因为0、1、2、3、4、5、6等标记的不同可能会产生优先级的臆想,为了消除这种现象,于是就有了One-hot编码,通过特征重构,将有的得标记为1,没有的标记为0。
以上内容就是字典型数据进行特征值化的具体操作方法,案例很简单,思想很重要。
---END---
首发地址: 公众号:数据与编程之美
猜你喜欢
- 2024-09-25 “千克”“毫升”单位不同怎么办?该是特征缩放上场的时候了
- 2024-09-25 决策树的高级概述 决策树的概念
- 2024-09-25 魔方全能小王子降临:一个完全不依赖人类知识的AI
- 2024-09-25 逻辑解释网络 网络逻辑设计包括哪些
- 2024-09-25 常见20种验证码识别思路 验证码识别平台哪个好
- 2024-09-25 大模型训练之增量预训练参数说明 增量模型适用场景
- 2024-09-25 聊一聊机器学习中的特征转换 特征转化
- 2024-09-25 详解状态机的设计 详解状态机的设计步骤
- 2024-09-25 小白福音!逻辑回归算法入门教程,让你一看就会
- 2024-09-25 Python实现数值型与字符型类别变量的独热编码One-hot Encoding
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)