深度学习技巧应用8-各种数据类型的加载与处理,并输入神经网络进行训练

news/2024/4/26 9:09:50/文章来源:https://blog.csdn.net/weixin_42878111/article/details/130346812

大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用8-各种数据类型的加载与处理,并输入神经网络进行训练。在模型训练中,大家往往对各种的数据类型比较难下手,对于非结构化数据已经复杂的数据的要进行特殊处理,这里介绍一下我们如何进行数据处理才能输入到模型中,进行训练的,说白了就是将数据进行0,1化,让计算机读懂数据。我总结了三种类型的数据,后期还会继续总结。

一、模型训练中的数据处理的步骤:

1.数据读取:从数据源(例如文件、数据库等)读取数据。

2.数据预处理:对原始数据进行处理,使其更适合用于模型的训练。这可能包括特征提取、规范化和缩放等操作。

3.数据划分:将预处理后的数据划分为训练集、验证集和测试集,以便进行训练和评估。

4.数据增强:对于图像和视频等数据类型,可以通过旋转、剪裁、平移等方法扩充数据集,以增加模型的泛化能力。

二、结构化数据样例

假设我们有一个数据集包含房屋的信息,如面积、卧室数量、楼层数等等。我们可以使用pandas库读取CSV格式的数据文件,并对数据进行预处理,数据样例:

Areabedroomfloor_numprice
10032200
8021150
12043250
13047270
9034190

结构化数据处理:

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler# 读取CSV文件
data = pd.read_csv('house_data.csv')# 分离特征和目标变量
X = data.drop('price', axis=1)
y = data['price']# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 特征缩放
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)print(X_train)
print(X_test)

三、文本数据样例

假设我们有一个情感分析的任务,需要对电影评论进行分类。我们可以使用nltk库读取文本文件,并对文本进行预处理。电影评论的数据集,包含评论内容和情感标签(正面或负面)。该数据集可以表示为一个由若干个字符串组成的列表,每个字符串代表一个电影评论,对应的情感标签可以表示为整数0或1。数据样例:

这部电影非常好看,推荐给大家! 1
剧情老套,不值得一看。 0
演员功力很出色,赞一个! 1
节奏很快,紧凑有力。 1
太烂了,一点都不好看。 0
不好,一点都不好看。 0
这部电影还行,下次再看! 1
演员太差,电影不好! 0
非常好看,大家可以一起看! 1
大家有空可以看,挺不错的呢 1
不好看!不好看! 0
这部电影根本就不好看! 0
import nltk
import string
from nltk.corpus import stopwords
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras.utils import to_categorical# 读取文本文件
with open('movie_reviews.txt', 'r',encoding='utf-8') as f:reviews = f.readlines()# 分离特征和目标变量
X = [review.split(' ')[0] for review in reviews]
y = [int(review.split(' ')[1]) for review in reviews]# 文本预处理
stop_words = set(stopwords.words('english'))
def preprocess(text):# 去除标点符号text = text.translate(str.maketrans('', '', string.punctuation))# 转换为小写text = text.lower()# 去除停用词words = [word for word in text.split() if word not in stop_words]return ' '.join(words)X = [preprocess(review) for review in X]# 将文本转换为序列
tokenizer = Tokenizer(num_words=500)
tokenizer.fit_on_texts(X)
X_seq = tokenizer.texts_to_sequences(X)# 进行padding和truncating操作
X_seq = pad_sequences(X_seq, maxlen=100)# 将目标变量转换为独热编码
y_cat = to_categorical(y)# 构建LSTM模型(示例代码)
from keras.models import Sequential
from keras.layers import Embedding, LSTM, Densemodel = Sequential()
model.add(Embedding(input_dim=500, output_dim=32, input_length=100))
model.add(LSTM(units=32))
model.add(Dense(units=2, activation='softmax'))model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])model.fit(x=X_seq, y=y_cat, epochs=20, batch_size=10, validation_split=0.2)

四、图片数据样例

假设我们有一个图像分类的任务,需要对多个图片进行分类。我们可以使用opencv库读取图片文件,并对图片进行预处理,要将多个图像数据批量输入到CNN模型中进行训练,需要提供一组训练数据和对应的标签。假设我们有10个数字图片,分别保存为digit_0.png到digit_9.png,并且对应的标签为0到9。可以使用以下代码将这些数据读取并转换为张量格式:

import cv2
import numpy as np
from keras.models import Sequential
from keras.layers import Dense,MaxPooling2D,Flatten,Conv2D# 读取多个图片文件,并将它们堆叠成一个张量
X = []
Y = []
for i in range(10):img = cv2.imread(f'digit_{i}.png', cv2.IMREAD_GRAYSCALE)img = cv2.threshold(img, 128, 255, cv2.THRESH_BINARY)[1]  # 二值化处理img = cv2.resize(img, (28, 28))  # 调整大小为28x28img = img.astype(np.float32) / 255.0  # 归一化处理X.append(img)Y.append(i)X = np.stack(X, axis=0)
X = np.expand_dims(X, axis=-1)  # 添加通道维度Y = np.array(Y)# 构建简单的CNN模型
model = Sequential()
model.add(Conv2D(filters=32, kernel_size=(3,3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dense(units=128, activation='relu'))
model.add(Dense(units=10, activation='softmax'))# 编译模型
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])# 训练模型
model.fit(X, Y, epochs=10, batch_size=32, validation_split=0.2)

大家现在应该清楚数据处理部分的内容了吧,这个是关键,数据没有处理好,模型就加载不到格式化的数据,就没有下一步训练的过程了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_102936.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode:6390. 滑动子数组的美丽值

🍎道阻且长,行则将至。🍓 🌻算法,不如说它是一种思考方式🍀 算法专栏: 👉🏻123 一、🌱6390. 滑动子数组的美丽值 题目描述:给你一个长度为 n 的整…

波形生成:均匀和非均匀时间向量

波形生成—— 脉冲、chirp、VCO、正弦函数、周期性/非周期性和调制信号 使用 chirp 生成线性、二次和对数 chirp。使用 square、rectpuls 和 sawtooth 创建方波、矩形波和三角形波。 如需了解此处未显示的其他无线波形生成功能,请参阅无线波形发生器 (Communicat…

完整的生产车间管理流程是怎样的?六大步骤分享

阅读本文您将了解:1.生产车间管理的特征;2.生产车间管理流程具体步骤;3.生产车间管理流程规范的重要性。 一、生产车间管理的特征 车间管理是指对车间所从事的各项生产经营活动进行计划、组织、指挥、协调和控制的一系列管理工作。生产车间…

巧用千寻位置GNSS软件| 电力线勘测如何实现?

正如大家所知,电力线勘测是在做电力线路设计之前对设计线路沿途自然环境进行勘察测量,最后把手簿测量数据在电脑端经过转换输出为电力软件专用格式数据的专用功能。 那么在千寻位置GNSS软件中该如何操作完成电力线的勘察测量呢? 点击【测量】…

SwiftUI 中 TabView 如何原生使用类 UIPageView 的翻页样式?

功能需求 我们知道 TabView 是 SwiftUI 中非常好用的布局组织容器,它可以分类组织视图并依次展示给用户。 从 SwiftUI 2.0 开始(iOS 14.0+),TabView 除了常规的以标签(Tab Label)样式显示外,还可以用类似 UIPageView 的样式分页原生显示视图,显得更加简洁: 如上图所…

AWT-对话框——Dialog以及其子类FileDialog

Dialog: Dialog时Window类的子类,时一个容器类,属于特殊组件。对话框是可以独立存在的顶级窗口,因此用法与普通窗口的用法几乎完全一样,但是使用对话框需要注意以下几点: 对话框通常依赖于其它窗口,就是通…

基于Java+SpringBoot+vue学生学习平台详细设计实现

基于JavaSpringBootvue学生学习平台详细设计实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 文章目…

AI Stable Diffusion Prompt参数【二】之 生成效果查验

AI Stable Diffusion Prompt参数【二】之 生成效果查验 效果国漫风生成参数配置prompt:Negative prompt:Model:Steps:Sampler:CFG scale:Clip skip:Model hash:Hires upscale:Hires upscaler:Denoising strength: 全部效果 效果 国漫风生成参数配置 prompt&#xf…

拉格朗日粒子扩散模式FLEXPART

为了高效、精准地治理区域大气污染,需要弄清污染物的来源。拉格朗日粒子扩散模式FLEXPART通过计算点、线、面或体积源释放的大量粒子的轨迹,来描述示踪物在大气中长距离、中尺度的传输、扩散、干湿沉降和辐射衰减等过程。该模式既可以通过时间的前向运算…

汇编与内联 x86-64

机器字长 x86是32位系统 64是64位系统 这里的32和64,指的都是机器字长 机器字长是 能直接进行整数/位运算的大小指针的大小(索引内存的范围) 容易与机器字长混淆的概念:字 字 字存储字长 字是MDR寄存器的位数,代表每个主存存储体中的存储…

[HDU - 4578]Transformation(线段树+多重懒标记)

[HDU - 4578]Transformation(线段树多重懒标记) 一、问题二、分析1、节点定义2、pushup3、pushdown(1)每种标记如何下传?赋值乘法加法 (2)三种标记下传的优先级问题 三、代码 一、问题 二、分析…

C++数据结构:手撕AVL树

目录 一. 什么是AVL树 二. AVL树的节点定义 三. AVL树的插入操作 3.1 寻找插入位置 3.2 更新平衡因子 3.3 AVL树的旋转调整 3.4 AVL树插入操作的整体实现 四. AVL树的检验 附录:AVL树的实现完整代码 AVL树定义代码 -- AVLTree.h AVL树检验代码 -- test.…

MFC加载动态gif图片文件C++语言,基于MFC的动画播放控件

MFC加载动态gif图片,使用VS2015环境 一、将下载的PictureEx.h和PictureEx.cpp放在工程文件的目录下,动态gif图片放在工程文件的res文件夹下;(GIF动图下载 https://icons8.com/preloaders/en/search/move) &#xff08…

软考软件设计师 操作系统笔记

操作系统地位 程序顺序执行(进程管理) 程序顺序执行的特征,顺序性封闭性可再现性 前趋图 P1结束后 V操作 SS1 P2操作前先执行S S -1 此时S0 一个箭头对应一个信号量 程序并发执行和前驱图 找到输入i计算c输出p,如果找不到就…

“老司机”机器视觉工程师警告,硬件,软件,固件,程序使用新版本务必谨慎

做任何事情之前,程序先保存。没保存,真的会哭的。千万别保存在系统盘。​ 机器视觉最终的目的解决是什么问题?项目验收结束。 如果公司不知道或者希望去测试新的东西,要积极主动去使用,也会学到很多新的东西&#xff…

Java版本企业电子招投标采购系统源代码——功能模块功能描述+数字化采购管理 采购招投标

​ 功能模块: 待办消息,招标公告,中标公告,信息发布 描述: 全过程数字化采购管理,打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力,为外…

塔望食研院丨百年益生菌,千亿市场正蓝海!

2022年12月塔望咨询开设塔望食品大健康消费研究院(简称塔望食研院)栏目,塔望食研院以“为食品行业品牌高质量发展赋能”为理念,将不定期发布食品大健康行业研究、消费研究报告。塔望食研院致力于结合外部数据、消费调研数据、企业…

Mybatis学习基础篇(一)——使用Maven快速搭建一个mybatis项目,并实现简单的增删改查

题外话: 在了解mybatis框架之前,我先说明一句,目前主流的框架技术层出不穷,每个人都有自己喜欢的技术框架,自己喜欢用就行。技术并没有高低之分,喜欢用就用,虽然目前大部分人都喜欢向新技术看齐…

C++、STL标准模板库和泛型编程 ——迭代器、 算法、仿函数(侯捷)

C、STL标准模板库和泛型编程 ——迭代器、 算法、仿函数 (侯捷) 迭代器iterator_category 算法accumulatefor_eachreplacecountfindsortbinary_search 仿函数 functors(六大部件中最简单的一种!) 使用一个东西,却不明白它的道理&a…

4月21日第壹简报,星期五,农历三月初二

4月21日第壹简报,星期五,农历三月初二坚持阅读,静待花开1. 推特拒向大模型免费开放数据!马斯克威胁起诉微软;Reddit宣布不再向大模型免费开放数据,要求科技巨头付费使用API接口。2. 浙江:鼓励杭…