Имеет смысл перетасовать набор данных только до разделения
Если вы перетасуете набор данных после разделения, перемешивание не повлияет на производительность, вы меняете только порядок экземпляров
В основном, если вы тасуете перед разделением, вы получаете разные наборы для ваших тренировочных / проверочных / тестовых наборов
Если вы тасуете после разделения, у вас всегда есть одинаковые наборы.
Пример:
1) перемешивание перед разделением
my_set = ["A", "B", "C", "D", "E", "F", "G"]
shuffle(my_set)
# ["B", "A", "D", "E", "C", "G", "F"]
train = my_set[:3] # ["B", "A", "D"]
val = my_set[3:5] # ["E", "C"]
test = my_set[5:-1] # ["G", "F"]
2) перемешивание после разбиения
my_set = ["A", "B", "C", "D", "E", "F", "G"]
train = my_set[:3] # ["A", "B", "C"]
val = my_set[3:5] # ["D", "E"]
test = my_set[5:-1] # ["F", "G"]
new_train = shuffle(train, inplace=False)
new_val = shuffle(val, inplace=False)
new_test = shuffle(test, inplace=False)
set(new_train) == set(train) #True
set(new_val) == set(val) #True
set(new_test) == set(test) #True
ПРИМЕЧАНИЕ: При обучении установленный порядок может влиять на производительность, например, когда вы используете алгоритмы, в которых вы используете пакеты и производные подходы