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

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

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

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

相关文章
|
10月前
|
机器学习/深度学习 人工智能 算法
AI 基础知识从 0.6 到 0.7—— 彻底拆解深度神经网络训练的五大核心步骤
本文以一个经典的PyTorch手写数字识别代码示例为引子,深入剖析了简洁代码背后隐藏的深度神经网络(DNN)训练全过程。
1473 56
|
9月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
628 0
|
10月前
|
机器学习/深度学习 数据采集 传感器
【故障诊断】基于matlab BP神经网络电机数据特征提取与故障诊断研究(Matlab代码实现)
【故障诊断】基于matlab BP神经网络电机数据特征提取与故障诊断研究(Matlab代码实现)
292 0
|
11月前
|
数据采集 存储 算法
MyEMS 开源能源管理系统:基于 4G 无线传感网络的能源数据闭环管理方案
MyEMS 是开源能源管理领域的标杆解决方案,采用 Python、Django 与 React 技术栈,具备模块化架构与跨平台兼容性。系统涵盖能源数据治理、设备管理、工单流转与智能控制四大核心功能,结合高精度 4G 无线计量仪表,实现高效数据采集与边缘计算。方案部署灵活、安全性高,助力企业实现能源数字化与碳减排目标。
388 0
|
12月前
|
Python
LBA-ECO CD-32 通量塔网络数据汇编,巴西亚马逊:1999-2006,V2
该数据集汇集了1999年至2006年间巴西亚马逊地区九座观测塔的碳和能量通量、气象、辐射等多类数据,涵盖小时至月度时间步长。作为第二版汇编,数据经过协调与质量控制,扩展了第一版内容,并新增生态系统呼吸等相关计算数据,支持综合研究与模型合成。数据以36个制表符分隔文本文件形式提供,配套PDF说明文件,适用于生态与气候研究。引用来源为Restrepo-Coupe等人(2021)。
487 1
|
机器学习/深度学习 存储 算法
NoProp:无需反向传播,基于去噪原理的非全局梯度传播神经网络训练,可大幅降低内存消耗
反向传播算法虽是深度学习基石,但面临内存消耗大和并行扩展受限的问题。近期,牛津大学等机构提出NoProp方法,通过扩散模型概念,将训练重塑为分层去噪任务,无需全局前向或反向传播。NoProp包含三种变体(DT、CT、FM),具备低内存占用与高效训练优势,在CIFAR-10等数据集上达到与传统方法相当的性能。其层间解耦特性支持分布式并行训练,为无梯度深度学习提供了新方向。
803 1
NoProp:无需反向传播,基于去噪原理的非全局梯度传播神经网络训练,可大幅降低内存消耗
|
8月前
|
机器学习/深度学习 数据可视化 网络架构
PINN训练新思路:把初始条件和边界约束嵌入网络架构,解决多目标优化难题
PINNs训练难因多目标优化易失衡。通过设计硬约束网络架构,将初始与边界条件内嵌于模型输出,可自动满足约束,仅需优化方程残差,简化训练过程,提升稳定性与精度,适用于气候、生物医学等高要求仿真场景。
918 4
PINN训练新思路:把初始条件和边界约束嵌入网络架构,解决多目标优化难题
|
8月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
320 0
|
9月前
|
机器学习/深度学习 数据采集 运维
改进的遗传算法优化的BP神经网络用于电厂数据的异常检测和故障诊断
改进的遗传算法优化的BP神经网络用于电厂数据的异常检测和故障诊断
|
11月前
|
存储 监控 算法
基于 Python 跳表算法的局域网网络监控软件动态数据索引优化策略研究
局域网网络监控软件需高效处理终端行为数据,跳表作为一种基于概率平衡的动态数据结构,具备高效的插入、删除与查询性能(平均时间复杂度为O(log n)),适用于高频数据写入和随机查询场景。本文深入解析跳表原理,探讨其在局域网监控中的适配性,并提供基于Python的完整实现方案,优化终端会话管理,提升系统响应性能。
274 4