scikit学习train_test_split进行循环

时间:2020-09-20 04:27:08

标签: python scikit-learn

我想通过像下面这样循环train_test_split创建5个不同的训练和测试集:

for i in range(0,5):
X_train, X_test, y_train, y_test = train_test_split(features, y, test_size=0.2, random_state=i)

,我想创建一个存储5个不同拆分的列表,我可以从每个拆分中运行测试。我的问题是我应该如何创建一个列表来存储X_train,X_test,y_train,y_test,然后如何调用列表中的每个拆分来运行测试? 对于测试,我的意思是运行ml算法。

2 个答案:

答案 0 :(得分:0)

我的建议是一个简单的解决方案:

datas = []
for i in range(0,5):
    a,b,c,d = train_test_split(features, y, test_size=0.2, random_state=i)
    datas.append((a,b,c,d)

如果要从数据中获取任何集合,可以使用此代码。例如,您想使用索引3。

X_train, X_test, y_train, y_test = datas[3]

答案 1 :(得分:0)

对于OP创建5个不同的测试和训练数据帧的问题,应该执行以下操作:

from random import randint
trainX_list=[[]]
trainY_list=[[]]
testX_list=[[]]
testY_list=[[]]
for i in range (0,4):
    X_train, X_test, y_train, y_test = train_test_split(features, y, test_size=0.2, random_state=randint(100, 1000))
    trainX_list.append([X_train])
    trainY_list.append([y_train])
    testX_list.append([X_test])
    testY_list.append([y_test])

然后您可以执行pd.concat(trainX_list[i])来查看每个数据框!