下面是一个使用Python的示例代码,用于将数据集拆分为训练集和测试集,同时保持相似的值在一起:
import numpy as np
from sklearn.model_selection import train_test_split
# 假设有一个特征矩阵 X 和一个目标向量 y
X = np.array([[1, 2], [3, 4], [5, 6], [7, 8], [9, 10], [11, 12]])
y = np.array([1, 1, 2, 2, 3, 3])
# 首先将特征矩阵和目标向量合并为一个数组
data = np.column_stack((X, y))
# 对目标值进行排序
sorted_data = data[data[:, -1].argsort()]
# 拆分数据集为训练集和测试集,同时保持相似的值在一起
train_data, test_data = train_test_split(sorted_data, test_size=0.2, stratify=sorted_data[:, -1])
# 分离特征矩阵和目标向量
X_train, y_train = train_data[:, :-1], train_data[:, -1]
X_test, y_test = test_data[:, :-1], test_data[:, -1]
在这个示例中,我们首先将特征矩阵 X
和目标向量 y
合并为一个数组 data
。然后,我们根据目标值对数据进行排序,以确保相似的值在一起。接下来,我们使用 train_test_split
函数将数据集拆分为训练集和测试集,同时使用 stratify
参数来保持相似的值在一起。最后,我们将特征矩阵和目标向量分离为训练集和测试集的特征矩阵 X_train
、X_test
和目标向量 y_train
、y_test
。
请注意,这只是一种解决方法,具体的实现方式可能因实际情况而有所不同。