Вы можете достичь этого с помощью
split = random.sample(range(len(X)), 105)
X_train = [X[i] for i in split]
X_test = [X[i] for i in [i for i in [i for i in range(len(X)) if i not in split]]]
Это создаст вам список случайного уникального числа из 105 предметов и будет, а затем он извлечет в X_train все индексы случайных чисел и в X_test это будет Извлеките все 45 чисел, которых нет в разделенном списке.