网站首页 > 技术文章 正文
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):返回序列中随机选择的指定数量元素。
- 上一篇: Go语言-指针
- 下一篇: Java中transient字段的作用
猜你喜欢
- 2025-05-27 Python进阶 - day1:深入理解数据结构
- 2025-05-27 Java中transient字段的作用
- 2025-05-27 Go语言-指针
- 2025-05-27 什么是 happens-before 规则?
- 2025-05-27 「Java」一张图教会你关于null的几种处理方式(内附代码)
- 2025-05-27 Python 中常用的数据结构,帮助你从基础到精通
- 2025-05-27 1、数值类型
- 2025-05-27 基础函数20例,案例解读,再不掌握就真的Out了
- 2025-05-27 12 个 C# 提效实用干货
- 2025-05-27 Java中数组的声明和初始化方法
- 05-27Python进阶 - day1:深入理解数据结构
- 05-27Java中transient字段的作用
- 05-27深度学习数据集处理常用函数示例(Python)
- 05-27Go语言-指针
- 05-27什么是 happens-before 规则?
- 05-27「Java」一张图教会你关于null的几种处理方式(内附代码)
- 05-27Python 中常用的数据结构,帮助你从基础到精通
- 05-271、数值类型
- 最近发表
- 标签列表
-
- cmd/c (64)
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- sqlset (64)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)