编写一个采用留出法的训练集与测试集创建程序 my_split(data, ratio),要求 (不使用 sklearn)返回训练集与测试集。
时间: 2024-11-07 14:13:47 浏览: 10
编写一个名为`my_split`的函数,用于采用留出法将数据集`data`划分为训练集和测试集,可以按照给定的比例`ratio`来确定。假设`data`是一个列表或数组,我们可以这样做:
```python
def my_split(data, ratio):
if not 0 <= ratio <= 1 or len(data) < 2:
raise ValueError("Ratio should be between 0 and 1, and data length must be at least 2.")
# 确保比例是一个整数部分,用于分割数据
num_train = int(len(data) * ratio)
# 随机选择测试样本索引
test_indices = random.sample(range(len(data)), num_train)
# 创建训练集和测试集
train_data = [data[i] for i in range(len(data)) if i not in test_indices]
test_data = [data[i] for i in test_indices]
return train_data, test_data
# 使用示例
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
train, test = my_split(data, 0.7) # 划分70%的数据作为测试集,剩余30%作为训练集
```
这个函数首先检查输入的比例是否有效,然后随机选择指定数量的样本作为测试集,并从剩下的样本中构建训练集。请注意,Python的`random.sample()`函数用于无放回地从序列中抽取指定数量的元素。
阅读全文