仅对特定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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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