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

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

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

特征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数组的拼接、合并

相关文章
|
2天前
|
机器学习/深度学习 数据采集 算法
基于MobileNet深度学习网络的MQAM调制类型识别matlab仿真
本项目基于Matlab2022a实现MQAM调制类型识别,使用MobileNet深度学习网络。完整程序运行效果无水印,核心代码含详细中文注释和操作视频。MQAM调制在无线通信中至关重要,MobileNet以其轻量化、高效性适合资源受限环境。通过数据预处理、网络训练与优化,确保高识别准确率并降低计算复杂度,为频谱监测、信号解调等提供支持。
|
1月前
|
机器学习/深度学习 文件存储 异构计算
YOLOv11改进策略【模型轻量化】| 替换骨干网络为EfficientNet v2,加速训练,快速收敛
YOLOv11改进策略【模型轻量化】| 替换骨干网络为EfficientNet v2,加速训练,快速收敛
98 18
YOLOv11改进策略【模型轻量化】| 替换骨干网络为EfficientNet v2,加速训练,快速收敛
|
12天前
|
机器学习/深度学习 数据可视化 API
DeepSeek生成对抗网络(GAN)的训练与应用
生成对抗网络(GANs)是深度学习的重要技术,能生成逼真的图像、音频和文本数据。通过生成器和判别器的对抗训练,GANs实现高质量数据生成。DeepSeek提供强大工具和API,简化GAN的训练与应用。本文介绍如何使用DeepSeek构建、训练GAN,并通过代码示例帮助掌握相关技巧,涵盖模型定义、训练过程及图像生成等环节。
|
1月前
|
机器学习/深度学习 文件存储 异构计算
RT-DETR改进策略【模型轻量化】| 替换骨干网络为EfficientNet v2,加速训练,快速收敛
RT-DETR改进策略【模型轻量化】| 替换骨干网络为EfficientNet v2,加速训练,快速收敛
39 1
|
12天前
|
缓存 小程序 API
微信小程序网络请求与API调用:实现数据交互
本文深入探讨了微信小程序的网络请求与API调用,涵盖`wx.request`的基本用法、常见场景(如获取数据、提交表单、上传和下载文件)及注意事项(如域名配置、HTTPS协议、超时设置和并发限制)。通过一个简单案例,演示了如何实现小程序与服务器的数据交互。掌握这些技能将帮助你构建功能更丰富的应用。
|
2月前
|
前端开发 小程序 Java
uniapp-网络数据请求全教程
这篇文档介绍了如何在uni-app项目中使用第三方包发起网络请求
96 3
|
3月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于深度学习网络的宝石类型识别算法matlab仿真
本项目利用GoogLeNet深度学习网络进行宝石类型识别,实验包括收集多类宝石图像数据集并按7:1:2比例划分。使用Matlab2022a实现算法,提供含中文注释的完整代码及操作视频。GoogLeNet通过其独特的Inception模块,结合数据增强、学习率调整和正则化等优化手段,有效提升了宝石识别的准确性和效率。
|
4月前
|
机器学习/深度学习 自然语言处理 语音技术
Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧
本文介绍了Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧,并通过TensorFlow和PyTorch等库展示了实现神经网络的具体示例,涵盖图像识别、语音识别等多个应用场景。
132 8
|
4月前
|
存储 安全 物联网
计算机网络的类型
本文介绍了网络的分类,涵盖按覆盖范围(PAN、LAN、MAN、WAN)、使用场景(公网、外网、内网)、传输介质(有线、无线)、特殊类型(VLAN、SAN、网络桥接、接入网)及拓扑结构(总线型、星型、树型、环型、网状型)和交换方式(电路交换、报文交换、分组交换)等,详细阐述了各类网络的特点和技术。
195 2
|
4月前
|
安全 Linux 网络安全
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息。本文分三部分介绍 nmap:基本原理、使用方法及技巧、实际应用及案例分析。通过学习 nmap,您可以更好地了解网络拓扑和安全状况,提升网络安全管理和渗透测试能力。
304 5

热门文章

最新文章