Python应用专题 | 13:将标签转为onehot形式

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
大数据开发治理平台 DataWorks,不限时长
简介: 在做文本分类的时候,常常需要将标签转为one-hot的数值形式,本文主要从代码的角度介绍该操作。

背景

对于给定具体标签,如何将其转为one-hot形式?比如标签集合体育', '娱乐', '家居', '房产', '教育', '时尚', '时政', '游戏', '科技', '财经',对于multiclass任务,如何将训练数据集中的样本的标签转为one-hot形式?

方法1:

    import numpy as np
    label_list = ['体育', '娱乐', '家居', '房产', '教育', '时尚', '时政', '游戏', '科技', '财经']
    label_dict = { l: i for i, l in enumerate(label_list)}

    data_labels = np.array(["娱乐", "体育", "房产", "科技", "财经"])
    data_label_ids = list(map(label_dict.get, data_labels))
    one_hot = np.zeros((data_labels.size, len(label_list)), dtype=np.int8)
    one_hot[np.arange(data_labels.size), data_label_ids] = 1
    print(one_hot)

输出结果如下:

[[0 1 0 0 0 0 0 0 0 0]
 [1 0 0 0 0 0 0 0 0 0]
 [0 0 0 1 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 1 0]
 [0 0 0 0 0 0 0 0 0 1]]

方法2:

使用np.eye

    import numpy as np
    label_list = ['体育', '娱乐', '家居', '房产', '教育', '时尚', '时政', '游戏', '科技', '财经']
    label_dict = { l: i for i, l in enumerate(label_list)}

    data_labels = np.array(["娱乐", "体育", "房产", "科技", "财经"])
    data_label_ids = list(map(label_dict.get, data_labels))

    # 方法2
    one_hot = np.eye(len(label_list), dtype=np.int8)[data_label_ids]
    print(one_hot)

输出结果如下:

[[0 1 0 0 0 0 0 0 0 0]
 [1 0 0 0 0 0 0 0 0 0]
 [0 0 0 1 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 1 0]
 [0 0 0 0 0 0 0 0 0 1]]

方法3:

使用sklearn.preprocessing.LabelBinarizer

    import numpy as np
    label_list = ['体育', '娱乐', '家居', '房产', '教育', '时尚', '时政', '游戏', '科技', '财经']
    label_dict = { l: i for i, l in enumerate(label_list)}

    data_labels = np.array(["娱乐", "体育", "房产", "科技", "财经"])
    data_label_ids = list(map(label_dict.get, data_labels))

    # 方法3:
    import sklearn.preprocessing
    label_binarizer = sklearn.preprocessing.LabelBinarizer()
    label_binarizer.fit(range(len(label_list)))
    one_hot = label_binarizer.transform(data_label_ids)
    print(one_hot)
相关文章
|
17小时前
|
Python
Python应用中语法不正确的缩进
【5月更文挑战第17天】
5 1
|
17小时前
|
IDE 开发工具 C++
|
18小时前
|
IDE 开发工具 C++
Python应用中语法拼写错误
【5月更文挑战第17天】
11 4
|
2天前
|
存储 关系型数据库 数据库
利用Python与SQLite构建轻量级数据库应用
在当今日益增长的数据处理需求下,数据库成为存储、检索和管理数据的关键技术。然而,对于小型项目或快速原型开发,大型数据库系统可能显得过于庞大和复杂。本文将介绍如何利用Python编程语言与SQLite轻量级数据库,快速搭建一个功能齐全、易于维护的数据库应用。我们将探讨SQLite数据库的特点、Python对SQLite的支持,并通过一个实际案例展示如何构建一个简单的数据库应用,为读者提供一种高效、灵活的解决方案。
|
2天前
|
机器学习/深度学习 分布式计算 数据处理
在Python中应用Spark框架
在Python中应用Spark框架
9 1
|
2天前
|
监控 程序员 Python
Python装饰器:深入解析与应用
Python装饰器:深入解析与应用
|
2天前
|
Python
Python中的模块与包——深入理解与应用
Python中的模块与包——深入理解与应用
|
2天前
|
Python
Python中的逻辑运算符:深入探索与应用
Python中的逻辑运算符:深入探索与应用
|
2天前
|
存储 算法 Python
Python中的列表推导式:深入探索与应用
Python中的列表推导式:深入探索与应用
|
3天前
|
存储 Python
Python中的布尔数据类型:深入探索与应用
Python中的布尔数据类型:深入探索与应用