优秀的编程知识分享平台

网站首页 > 技术文章 正文

深度学习数据集处理常用函数示例(Python)

nanyue 2025-05-27 16:42:26 技术文章 5 ℃

1. 图像数据集

import numpy as np
import matplotlib.pyplot as plot
from sklearn.model_selection import train_test_split
from PIL import Image
img_cnt, lbs_cnt = 100, 10 # 图像样本数, 类别数
height, width = 256, 256 #图像宽高
# 生成随机灰度图像数据集
image_list ={
'images':np.random.randint(0,256, size=(img_cnt, height, width), dtype=np.uint8),
'labels':np.random.randint(0, lbs_cnt, size=(img_cnt), dtype=np.int64)
}
# 打印数据集信息
print(f"总数据集数:{image_list['images'].shape}, \n第21个的标签值:{image_list['labels'][20]}")
# 拆分训练集和测试集
img_train, img_test, lbs_train, lbs_test = train_test_split(
image_list['images'], image_list['labels'], test_size=0.3, random_state=20
)
# 打印训练集和测试集数量
print(f"形状信息:\n训练集图片:{img_train.shape}, 测试集图片:{img_test.shape}\n训练集标签:{lbs_train.shape}, 测试集标签:{lbs_test.shape}")
# 显示第21个图片
img = Image.fromarray(image_list['images'][20])
plot.imshow(img, cmap='gray')
plot.show()

2. 文本数据集

import random
import string
from sklearn.model_selection import train_test_split
# 设置随机种子以确保结果可复现
random.seed(40)
count = 100 # 文本总数
max_len = 100 # 单文本最大长度
# 生成随机文本数据集
text_list = []
for _ in range(count):
text, text_len = '', random.randint(0, max_len) # 随机生成文本长度
for _ in range(text_len):
text += random.choice(string.ascii_letters) # 随机生成字符串
text_list.append(text)
# 打印数据集信息
print(f"总数据集数:{len(text_list)}, \n第20个数据长度:{len(text_list[2])},内容:{text_list[20]}")
0
# 拆分训练集和测试集
train, test = train_test_split(text_list, test_size=0.3, random_state=20)
# 打印训练集和测试集数量
print(f"训练集数:{len(train)}, 测试集数:{len(test)}")

3. 函数说明

3.1 sklearn.model_selection.train_test_split

train_test_split(*arrays, test_size=None, train_size=None, random_state=None, shuffle=True, stratify=None)【官网地址】

作用:

o 将数组或矩阵拆分为随机的训练和测试子集。

参数:

o *arrays:具有相同长度/形状的可索引项序列,列表、numpy数组、scipy稀疏矩阵或pandas数据帧

o test_size:float或int,默认值=无

如果为浮点数,则应介于0.0和1.0之间,并表示要包含在测试分割中的数据集的比例。如果为int,则表示测试样本的绝对数量。如果为“无”,则将该值设置为训练样本的补码。如果train_size也为None,则将其设置为0.25。

o train_size:float或int,默认值=无

如果为浮点数,则应介于0.0和1.0之间,并表示要包含在序列分割中的数据集的比例。如果为int,则表示训练样本的绝对数量。如果为“无”,则该值会自动设置为测试大小的补码。

o random_state:int,RandomState实例或None,默认值=None

控制在应用拆分之前应用于数据的洗牌。传递一个int,以便在多个函数调用之间进行可重复的输出。请参阅术语表。

o shuffle :bool,默认值为True

是否在拆分前对数据进行洗牌。如果shuffle=False,则分层必须为None。

o stratify :类似数组,默认值=无

如果不是None,则以分层方式分割数据,将其用作类标签。阅读用户指南中的更多内容。

返回值:

o 列表,长度=2*len(arrays),包含训练集-测试集输入拆分的列表。

如果输入是稀疏的,则输出将是scipy.sparse.csr_matrix。否则,输出类型与输入类型相同。

3.2 常用随机函数

o numpy.random 库【官方地址】

numpy.random.rand(d0,d1,…,dn):根据给定维度生成[0,1)之间的数据

numpy.random.randn(d0,d1,…,dn):返回标准正态分布中一个或多个样本值

numpy.random.randint(low, high=None, size=None, dtype=int):从“半开”区间[low,high)中指定数据类型的“离散均匀”分布返回随机整数。如果high为None(默认值),则结果来自[0,low)。

numpy.random.random(size=None):返回[0.0,1.0)中随机浮点数

numpy.random.choice(a, size=None, replace=True, p=None):返回给定的序列中的随机样本

numpy.random.sample():这是random_sample的别名


numpy.random.random_sample(size=None):返回半开区间[0.0,1.0)中的随机浮点数。

o random 库

random.seed(a, version):以一个数字作为开头(种子值)生成随机数,两次使用相同的种子值,将得到两次相同的随机数。

random.random():随机生成一个[0,1)范围内的实数

random.randint(start, stop):返回指定范围的一个整数

random.randrange(start=0, stop, step=1):返回指定范围内随机选择的样本

random.choice(sequence):返回指定序列中随机的一个样本

random.choices(sequence, weights=None, cum_weights=None, k=1):返回指定序列中随机选择的一个列表元素。

random.sample(sequence, k):返回序列中随机选择的指定数量元素。

最近发表
标签列表