将数据集拆按照7:3的比例拆分为训练集和测试集合,拆分原则:同一名同学的手写体要么全部在训练集中,要么全部在测试集中。的python代码
时间: 2024-03-25 21:35:39 浏览: 108
好的,以下是一个简单的Python代码示例,用于将数据集按照7:3的比例拆分为训练集和测试集,同时保证同一名同学的手写体数据全部在训练集或测试集中:
```python
import random
# 假设数据集已经读取到了data中,其结构为[[(name, img), ...], ...]
# 其中name为同学姓名或学号,img为手写体图像数据
train_data = []
test_data = []
for student_data in data:
name = student_data[0][0] # 获取同学姓名或学号
imgs = [d[1] for d in student_data] # 获取同学所有手写体图像数据
random.seed(name) # 使用同学姓名或学号作为随机数种子
if random.random() <= 0.7: # 生成一个随机数,如果小于等于0.7,放入训练集
train_data.extend(student_data)
else:
test_data.extend(student_data) # 否则放入测试集
print(f"训练集大小: {len(train_data)}, 测试集大小: {len(test_data)}")
```
这段代码首先遍历所有同学的手写体数据,对于每个同学的数据,使用同学姓名或学号作为随机数种子,生成一个随机数。如果随机数小于等于0.7,则将该同学的所有手写体数据放入训练集;否则放入测试集。最终输出训练集和测试集的大小。
阅读全文