网络训练需要的混合类型数据的组织方式

简介: 网络训练需要的混合类型数据的组织方式

在准备神经网络模型需要的训练数据时,经常需要构造顺手的数据形式,如下

特征1 特征2 特征3 特征n 标签
37.584 37.632 38.045 38.902 ‘a’
33.216 39.193 42.887 44.917 ‘b’
31.747 32.359 33.127 33.687 ‘c’
34.268 35.169 36.632 38.900 ‘d’

用什么样的数据类型来组织以上数据呢?有四种选择

  • python 的二维列表 list
  • python 的字典结构 dict
  • numpy 的二维数组 array
  • pandas 的 DataFrame 结构
python 的 list 结构

很显然,这种数据组织成二维列表是不合适的,无法切片,本质上是列表中嵌套列表的结构。接下来详细介绍用 numpy 的 array 和 pandas 的DataFrame 结构。

python 的字典结构 dict

存成字典结构方便存取,如果特征列数据都是浮点数据,也需要借助 numpy 的 array 来实现。

numpy 的 array 结构

如果组织成二维数组 array 结构,由于特征列和标签列中的数据类型可能会出现字符型数据,那数组类型将必须设置成混合类型。即初始化特征数据时选择 dtype = object,然后将特征列表,使用列堆叠(column_stack)追加到最后一列即可。

data_array = np.array(data,dtype=object)
data_label_array = np.column_stack((data_array,label))

最终效果如下

data_label_array: [[37.584 37.632 38.045 38.902 ‘a’]

[33.216 39.193 42.887 44.917 ‘b’]

[31.747 32.359 33.127 33.687 ‘c’]

[34.268 35.169 36.632 38.9 ‘d’]]

如果初始化数据时选择 dtype = float 或 np.float64 时会怎样呢?

data_label_array: [[‘37.584’ ‘37.632’ ‘38.045’ ‘38.902’ ‘a’]

[‘33.216’ ‘39.193’ ‘42.887’ ‘44.917’ ‘b’]

[‘31.747’ ‘32.359’ ‘33.127’ ‘33.687’ ‘c’]

[‘34.268’ ‘35.169’ ‘36.632’ ‘38.9’ ‘d’]]

那么在追加标签列时,会将浮点类型的特征数据转化为字符型数据。这样的效果显然不是我们想要的。

pandas 的 DataFrame 结构

有两种方式,一种是将特征列数据放入某一个字段里,比如data,同时标签列放入label字段里。另一种方式,特征列有多少列就存多少个字段,label同样单独一个字段。如

df: [[37.584 37.632 38.045 38.902 ‘a’]

[33.216 39.193 42.887 44.917 ‘b’]

[31.747 32.359 33.127 33.687 ‘c’]

[34.268 35.169 36.632 38.9 ‘d’]]

这样,浮点类型的特征数据也是没办法设置成np.float64类型的,只能是python原生的float类型。

全部代码如下

import os
import pandas as pd
import numpy as np
def test():
    a_data = [37.584,37.632,38.045,38.902]
    b_data = [33.216,39.193,42.887,44.917]
    c_data = [31.747,32.359,33.127,33.687]
    d_data = [34.268,35.169,36.632,38.900]
    a_label = 'a'
    b_label = 'b'
    c_label = 'c'
    d_label = 'd'
    data =  [a_data,b_data,c_data,d_data]
    label = [a_label,b_label,c_label,d_label]
    print("####list####")
    print('data:',data)
    print('label:',label)
    print("####array####")
    data_array = np.array(data,dtype=float)
    data_label_array = np.column_stack((data_array,label))
    print('data_array:',data_array)
    print('data_label_array:',data_label_array)
    print("####DataFrame####")
    df = pd.DataFrame(data_array)
    df['label'] = label
    print('df:',df.values)
if __name__ == '__main__':
    test()
总结
  • 二维混合类型的数据组织,可以设置为 dict,numpy 的 array,pandas 的 DataFrame,但是不要组织为二维列表。
  • numpy 的 cloumn_stack,用来在特征数据的基础上增加标签列。
参考文档

Python中numpy数组的拼接、合并

相关文章
|
1月前
|
机器学习/深度学习 PyTorch 算法框架/工具
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
这篇文章介绍了如何使用PyTorch框架,结合CIFAR-10数据集,通过定义神经网络、损失函数和优化器,进行模型的训练和测试。
86 2
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
|
1月前
|
机器学习/深度学习 数据可视化 计算机视觉
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
这篇文章详细介绍了如何通过可视化深度学习中每层特征层来理解网络的内部运作,并使用ResNet系列网络作为例子,展示了如何在训练过程中加入代码来绘制和保存特征图。
56 1
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
|
1月前
|
监控 安全 网络安全
云计算与网络安全:保护数据的关键策略
【9月更文挑战第34天】在数字化时代,云计算已成为企业和个人存储、处理数据的优选方式。然而,随着云服务的普及,网络安全问题也日益凸显。本文将探讨云计算环境中的网络安全挑战,并提供一系列策略来加强信息安全。从基础的数据加密到复杂的访问控制机制,我们将一探究竟如何在享受云服务便利的同时,确保数据的安全性和隐私性不被侵犯。
65 10
|
2月前
|
存储 安全 网络安全
云计算与网络安全:守护数据,构筑未来
在当今的信息化时代,云计算已成为推动技术革新的重要力量。然而,随之而来的网络安全问题也日益凸显。本文从云服务、网络安全和信息安全等技术领域展开,探讨了云计算在为生活带来便捷的同时,如何通过技术创新和策略实施来确保网络环境的安全性和数据的保密性。
|
14天前
|
存储 安全 网络安全
云计算与网络安全:保护数据的新策略
【10月更文挑战第28天】随着云计算的广泛应用,网络安全问题日益突出。本文将深入探讨云计算环境下的网络安全挑战,并提出有效的安全策略和措施。我们将分析云服务中的安全风险,探讨如何通过技术和管理措施来提升信息安全水平,包括加密技术、访问控制、安全审计等。此外,文章还将分享一些实用的代码示例,帮助读者更好地理解和应用这些安全策略。
|
18天前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:从漏洞到加密,保护数据的关键步骤
【10月更文挑战第24天】在数字化时代,网络安全和信息安全是维护个人隐私和企业资产的前线防线。本文将探讨网络安全中的常见漏洞、加密技术的重要性以及如何通过提高安全意识来防范潜在的网络威胁。我们将深入理解网络安全的基本概念,学习如何识别和应对安全威胁,并掌握保护信息不被非法访问的策略。无论你是IT专业人士还是日常互联网用户,这篇文章都将为你提供宝贵的知识和技能,帮助你在网络世界中更安全地航行。
|
21天前
|
存储 安全 网络安全
云计算与网络安全:如何保护您的数据
【10月更文挑战第21天】在这篇文章中,我们将探讨云计算和网络安全的关系。随着云计算的普及,网络安全问题日益突出。我们将介绍云服务的基本概念,以及如何通过网络安全措施来保护您的数据。最后,我们将提供一些代码示例,帮助您更好地理解这些概念。
|
29天前
|
网络协议 网络安全 网络架构
|
1月前
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
46 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
|
1月前
|
机器学习/深度学习 算法 TensorFlow
深度学习笔记(五):学习率过大过小对于网络训练有何影响以及如何解决
学习率是深度学习中的关键超参数,它影响模型的训练进度和收敛性,过大或过小的学习率都会对网络训练产生负面影响,需要通过适当的设置和调整策略来优化。
271 0
深度学习笔记(五):学习率过大过小对于网络训练有何影响以及如何解决