手动实现train_test_split函数
时间: 2023-10-13 15:06:10 浏览: 82
数据集分割train和test程序
好的,下面是手动实现的 train_test_split 函数:
```python
import random
def train_test_split(data, test_ratio=0.2, random_seed=None):
"""
划分训练集和测试集的函数,返回按照比例划分后的训练集和测试集。
:param data: 待划分的数据集,可以是列表、元组、集合、numpy数组等。
:param test_ratio: 测试集所占比例,默认为0.2。
:param random_seed: 随机种子数,保证可复现。默认为None。
:return: 训练集和测试集的元组。(train_data, test_data)
"""
assert test_ratio >= 0 and test_ratio <= 1, "test_ratio 必须在0和1之间!"
data = list(data)
if random_seed:
random.seed(random_seed)
random.shuffle(data)
cut_position = int(len(data) * (1 - test_ratio))
train_data = data[:cut_position]
test_data = data[cut_position:]
return train_data, test_data
```
该函数的实现原理是:首先将数据随机打乱,然后按照指定比例划分训练集和测试集。其中,`data`是待划分的数据集,`test_ratio`表示测试数据占总数据的比例,`random_seed`是可选参数,用于保证在相同的随机种子下,每次划分的结果相同。函数返回分割后的训练数据和测试数据。
阅读全文