scikit изучает train_test_split для цикла

#python #scikit-learn

#python #scikit-learn

Вопрос:

Я хочу создать 5 разных обучающих и тестовых наборов, зациклив train_test_split, например:

 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, а затем как вы вызываете каждое разделение из списка для запуска test?
Для теста я имею в виду запуск алгоритмов ml.

Ответ №1:

Мое предложение в качестве простого решения:

 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]
  

Ответ №2:

На вопрос OPs для создания 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]) , чтобы просмотреть каждый фрейм данных!