仅对特定ID/对象进行训练/测试拆分

我想将我的数据集拆分为训练集和测试集。然而,我不希望使用常规的百分比拆分方式,而是希望例如将“subject01.dat”设为测试数据,而将其他对象设为训练数据。我该如何实现这一点?

如果这有关系的话,数据集是一个时间序列的3D数据。但在我的预处理之后,它变成了一个2D的numpy数组。

我考虑使用sklearn.test_train_split,但我要设置哪些选项才能确保“subject01.dat”保持为测试数据集呢?

import pandas as pdimport tensorflow as tfimport numpy as npfrom sklearn.model_selection import train_test_splitdir = '/home/hanna/Documents/_DDA_Lab/Exercise6/PAMAP2_Dataset/Protocol/'filelist = ['subject101.dat','subject102.dat','subject103.dat','subject104.dat','subject105.dat','subject106.dat','subject107.dat']# 所需的列columns = [1,2,4,5,6,7,8,9,10,11,12,13,14,15,20,21,22,23,24,25,26,27,28,29,30,31,32,37,38,39,40,41,42,43,44,45,46,47,48,49]# 所需的行ID_rows = [3,4,12,13]for file in filelist:    input = dir + file    df = pd.read_csv(input, header=None, delim_whitespace=True)    print('已完成读取数据文件 ', input)    df = df[columns] # 只保留所需的列并删除其余列    df = df[df[1].isin(ID_rows)] # 只保留所需的行并删除其余行    df=df.fillna(0) # 用零替换NaN    df = (df - df.mean()) / df.std() # 归一化数据    data.append(df)df = pd.concat(data) # 合并为一个数据框print(df.shape)# 将数据框转换为张量x_data = df.drop(1, axis=1).valuesy_data = df[[1]].values# 训练/测试拆分xTrain, xTest, yTrain, yTest = train_test_split(x_data, y_data, test_size=0.15, random_state=0)

回答:

我不确定我是否完全理解了你的意思,但我认为你可以为你希望包含在训练集中的每个文件创建一个单独的数据框,并为你的测试集文件创建一个单独的数据框。

例如,假设subject101.dat将成为你的测试集:

filelist_test = ['subject101.dat']filelist_train = ['subject102.dat','subject103.dat','subject104.dat','subject105.dat','subject106.dat','subject107.dat']for train_file in filelist_train:    # 执行相同的操作train_df = pd.concat(data)for test_file in filelist_test:    # 执行相同的操作test_df = pd.concat(data)

之后,你可以删除你想要的标签列,并像之前一样进行操作。希望这对你有帮助。

Related Posts

在使用k近邻算法时,有没有办法获取被使用的“邻居”?

我想找到一种方法来确定在我的knn算法中实际使用了哪些…

Theano在Google Colab上无法启用GPU支持

我在尝试使用Theano库训练一个模型。由于我的电脑内…

准确性评分似乎有误

这里是代码: from sklearn.metrics…

Keras Functional API: “错误检查输入时:期望input_1具有4个维度,但得到形状为(X, Y)的数组”

我在尝试使用Keras的fit_generator来训…

如何使用sklearn.datasets.make_classification在指定范围内生成合成数据?

我想为分类问题创建合成数据。我使用了sklearn.d…

如何处理预测时不在训练集中的标签

已关闭。 此问题与编程或软件开发无关。目前不接受回答。…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注