用python代码实现:将数据集打乱,随机划分,80%为训练集,20%为测试集(120条训练样本,30条测试样本)
时间: 2024-10-23 21:16:33 浏览: 27
在Python中,我们可以使用`sklearn.model_selection.train_test_split`函数来方便地对数据集进行随机划分。首先,确保你已经安装了`sklearn`库。以下是如何实现这个过程的示例:
```python
import numpy as np
from sklearn.model_selection import train_test_split
# 假设你有一个名为X的数据数组(特征),形状为(150, n_features),和一个名为y的目标数组(标签),形状为(150,),总共150个样本
# X = ... # 你的特征数据
# y = ... # 你的目标数据
# 首先,我们需要确保数据长度是一致的
assert len(X) == len(y), "特征和标签数据长度不一致"
# 打乱数据的顺序
np.random.seed(42) # 设置随机种子,使得每次运行结果一致
perm = np.random.permutation(len(X)) # 获取随机排列索引
X_shuffled = X[perm]
y_shuffled = y[perm]
# 划分数据集
train_size = int(0.8 * len(X_shuffled)) # 训练集占80%
test_size = len(X_shuffled) - train_size # 测试集占20%
X_train, X_test, y_train, y_test = train_test_split(
X_shuffled, y_shuffled, train_size=train_size, test_size=test_size, random_state=42
)
# 现在X_train有120条样本(120*n_features),y_train有120条对应的目标;X_test有30条样本(30*n_features),y_test有30条对应的目标
print(f"训练集样本数: {len(X_train)}, 测试集样本数: {len(X_test)}")
```
这里,`random_state`参数用于设置随机状态,这样你可以重现相同的数据分割。如果你想要每次都得到不同的划分,可以去掉该参数。
阅读全文