python代码不使用 Scikit-Learn 库来划分含索引的数据集,自定义划分测试集与训练集
时间: 2024-03-25 10:37:36 浏览: 117
python 划分数据集为训练集和测试集的方法
可以使用 Python 中的 random 库来自定义划分测试集与训练集。
假设我们有一个数据集 data,包含了 m 个样本,每个样本有 n 个特征。我们需要将这个数据集按照一定比例划分为训练集和测试集,假设划分比例为 p,则测试集的大小为 m*p,训练集的大小为 m-m*p。
代码如下:
```python
import random
# 假设数据集 data 中每个样本有 n 个特征
m = len(data) # 数据集大小
p = 0.2 # 划分比例,假设为 0.2
test_size = int(m * p) # 测试集大小
train_size = m - test_size # 训练集大小
# 随机选取测试集的索引
test_index = random.sample(range(m), test_size)
# 将测试集和训练集分别存放到 test_set 和 train_set 中
test_set = []
train_set = []
for i in range(m):
if i in test_index:
test_set.append(data[i])
else:
train_set.append(data[i])
```
在上面的代码中,我们使用 random.sample(range(m), test_size) 随机选取测试集的索引。然后将测试集和训练集分别存放到 test_set 和 train_set 中。
需要注意的是,这种方法是随机划分数据集,并不能保证每个类别在训练集和测试集中的比例相同。如果需要保证每个类别的样本在训练集和测试集中的比例相同,可以使用 StratifiedKFold 或者 StratifiedShuffleSplit 等方法。
阅读全文