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

news2024/10/6 18:33:36

大家好,我是微学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, Dense

model = 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))  # 调整大小为28x28
    img = 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.coloradmin.cn/o/457567.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

听我一句劝,别去外包,干了三年,废了....

先说一下自己的情况,大专生,18年通过校招进入湖南某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

2.黑马SpringbBoot运维篇笔记自己修改

SpringBoot运维实用篇 ​ 基础篇发布以后,看到了很多小伙伴在网上的留言,也帮助超过100位小伙伴解决了一些遇到的问题,并且已经发现了部分问题具有典型性,预计将有些问题在后面篇章的合适位置添加到本套课程中,作为解…

[社区图书馆】《PyTorch高级机器学习实战》书评

《PyTorch高级机器学习实战》是一本非常实用的机器学习书籍,作者为阿里云智能首席AI专家赵健。这本书的目标读者是具有一定Python编程基础并对深度学习有兴趣的开发者和研究者。 在书中,作者从最基础的线性回归、逻辑回归、卷积神经网络(CNN…

前端食堂技术周刊第 80 期:Vite 4.3、Node.js 20、TS 5.1 Beta、Windi CSS 即将落幕

美味值:🌟🌟🌟🌟🌟 口味:东坡肉 食堂技术周刊仓库地址:https://github.com/Geekhyt/weekly 本期摘要 Vite 4.3Node.js 20TypeScript 5.1 BetaWindi CSS 即将落幕Pretty TypeScri…

springboot项目的jar文件以打包成docker镜像的方式部署

清单: 安装有docker的Linuxspringboot打包的jar文件(该项目只有一个返回"hello world"接口) Linux的IP地址:192.168.221.129 springboot项目的接口: 1、上传jar文件至Linux 我上传的位置为:/…

4.2——派生类的构造函数和析构函数

派生类继承了基类的成员,实现了原有代码的重用,但是基类的构造函数和析构函数不能被继承,在派生类中,如果对派生类新增的成员进行初始化,就需要加入派生类的构造函数。与此同时,对所有从基类继承下来的成员…

SpringMVC-学习修改尚硅谷最新教程笔记

三、SpringMVC 1、SpringMVC简介 1.1、什么是MVC MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分 M:Model,模型层,指工程中的JavaBean,作用是处理数据 JavaBean分为两类: **一类称为实…

【JAVA-模块五 数组】

JAVA-模块五 数组 一、数组(一维)1.1数组是什么?1.2java中数组静态初始化:(存)两种定义格式:数组初始化格式:静态初始化后,打印数组名: 1.3 数组元素访问&…

win11 环境下streamlit使用pycharm debug

目录 1. pycharm中配置run 脚本2. streamlit3. 开始debug调试 1. pycharm中配置run 脚本 (一)点击 Edit Configurations,按图操作. 2. streamlit 1.streamlit 安装在 anaconda 的 base 环境(随意哈,安装哪里都可以&#xff0c…

Zookeeper 面试题总结

Zookeeper 1、工作中 Zookeeper 有什么用途吗2、zookeeper 数据模型是什么样的3、那你知道 znode 有几种类型呢4、你知道 znode 节点里面存储什么吗5、每个节点数据最大不能超过多少呢6、你知道 znode 节点上监听机制嘛7、那你讲下 Zookeeper 特性吧8、你刚提到顺序一致性&…

LRU缓存淘汰策略——面试高频

⭐️前言⭐️ 本文主要介绍在面试中常见的高频手撕算法题目,LRU算法, 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 🍉博主将持续更新学习记录收获,友友们有任何问题可以在评论区…

LEVIR-CD遥感建筑变化检测数据集

LEVIR-CD是一个新的大规模遥感二元变化检测数据集,它将有助于开发新的基于深度学习的遥感图像变化检测算法。 下载地址:https://justchenhao.github.io/LEVIR/ 历史消息 20230311:我们为LEVIR_CD中的每个样本补充了地理空间信息(例如&#…

实例分割算法BlendMask

实例分割算法BlendMask 论文地址:https://arxiv.org/abs/2001.00309 github代码:https://github.com/aim-uofa/AdelaiDet 我的个人空间:我的个人空间 密集实例分割 ​ 密集实例分割主要分为自上而下top-down与自下而上bottom-up两类方法…

Node.js代码实例:简单Web服务端

文章目录 前言代码仓库为什么要写一份Node.js简单Web服务端的代码实例?内容目录结构代码server.jsindex.htmlindex.cssindex.jsvalue.html 结果总结参考资料作者的话 前言 Node.js代码实例:简单Web服务端。 代码仓库 yezhening/Programming-examples: …

LVS-DR

系列文章目录 文章目录 系列文章目录一、1.2. 二、实验1.2. 总结 一、 1. 2. 二、实验 1. 先把四台机器都关闭防火墙和安全机制 vim /etc/sysconfig/selinux把selinux都改成disabled 在NFS里面建立两个共享目录 给文件执行权限并写入内容给html 和www vim /etc/expor…

【C++】C++中的类型转化

说起类型转化,我们在C语言之前的学习中可以了解到,类型转换可以分为两种情况:隐式类型转化;显示类型转化。但是为什么在c中还要继续对类型转化做文章呢?我们一起来看: 目录 1. C语言中的类型转换 2. C强制…

【Transformer系列(5)】Transformer代码超详细解读(Pytorch)

前言 前面几篇我们一起读了transformer的论文,更进一步了解了它的模型架构,这一篇呢,我们就来看看它是如何代码实现的! (建议大家在读这一篇之前,先去看看上一篇模型结构讲解 这样可以理解更深刻噢&…

Python 基础(十二):字典

❤️ 博客主页:水滴技术 🌸 订阅专栏:Python 入门核心技术 🚀 支持水滴:点赞👍 收藏⭐ 留言💬 文章目录 一、声明字典1.1 使用 {} 声明字典1.2 使用 dict 函数声明字典1.3 声明一个空的字典 二…

【数据结构】AVLTree

1.AVL树的概念 二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。因此,两位俄罗斯的数G.M.Adelson-Velskii 和E.M.Landis在1962年 发明了一种解决上…

会话与会话技术(Session)

前言 Cookie将用户的信息保存在各自的浏览器中,并且可以在多次请求下实现数据的共享。但是如果当传递的信息较多时,Cookie技术会增大服务器程序处理的难度,因此,Servlet提供了另一种会话技术————Session,Session可…