python代码自定义划分测试集与训练集
时间: 2023-09-22 13:08:33 浏览: 87
在 Python 中,我们可以使用 Scikit-Learn 库来进行数据集的划分,其中 train_test_split() 函数可以将数据集划分为训练集和测试集。
下面是一个示例代码,展示如何将数据集随机划分为训练集和测试集:
```python
from sklearn.model_selection import train_test_split
import numpy as np
# 生成数据集
X = np.random.rand(100, 10) # 特征矩阵,100个样本,每个样本有10个特征
y = np.random.randint(0, 2, size=100) # 标签,0或1
# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 输出训练集和测试集的大小
print("训练集大小:", len(X_train))
print("测试集大小:", len(X_test))
```
在上面的代码中,我们首先生成了一个包含100个样本、每个样本有10个特征的数据集和对应的标签。然后使用 train_test_split() 函数将数据集随机划分为训练集和测试集,其中 test_size=0.2 表示测试集占总数据集的20%,random_state=42 表示设置随机数种子,以保证每次划分的结果相同。最后输出训练集和测试集的大小。
相关问题
python代码不使用 Scikit-Learn 库来进行数据集的划分,自定义划分测试集与训练集
如果不使用 Scikit-Learn 库,我们也可以手动编写代码来自定义划分测试集和训练集。下面是一个示例代码:
```python
import numpy as np
# 生成数据集
X = np.random.rand(100, 10) # 特征矩阵,100个样本,每个样本有10个特征
y = np.random.randint(0, 2, size=100) # 标签,0或1
# 设置随机种子
np.random.seed(42)
# 随机打乱数据集
random_index = np.random.permutation(len(X))
X_shuffle = X[random_index]
y_shuffle = y[random_index]
# 划分数据集
test_ratio = 0.2 # 测试集比例
test_size = int(len(X) * test_ratio) # 测试集大小
X_train = X_shuffle[:-test_size]
y_train = y_shuffle[:-test_size]
X_test = X_shuffle[-test_size:]
y_test = y_shuffle[-test_size:]
# 输出训练集和测试集的大小
print("训练集大小:", len(X_train))
print("测试集大小:", len(X_test))
```
在上面的代码中,我们首先生成了一个包含100个样本、每个样本有10个特征的数据集和对应的标签。然后设置随机种子,以保证每次随机结果相同。接着使用 np.random.permutation() 函数随机打乱数据集的顺序,再根据比例划分成训练集和测试集。最后输出训练集和测试集的大小。
python代码不使用 Scikit-Learn 库来划分含索引的数据集,自定义划分测试集与训练集
可以使用 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 等方法。
阅读全文