Не очень известный факт заключается в том, что train_test_split
может разбивать любое количество массивов, а не только два ("train" и "test").См. Связанные документы и исходный код для получения дополнительной информации.
Например,
np.random.seed(0)
df1 = pd.DataFrame(np.random.choice(10, (5, 4)), columns=list('ABCD'))
y = df1.pop('C')
z = df1.pop('D')
X = df1
splits = train_test_split(X, y, z, test_size=0.2)
len(splits)
# 6
IOW, единственный способ указать размер теста - указатьключевое слово аргумент test_size
.Предполагается, что все позиционные аргументы являются коллекциями, которые должны быть разделены, и в вашем случае, так как вы делаете
train_test_split(X, y, 0.2)
Функция пытается разделить 0.2
, но поскольку float не является коллекцией,ошибка повышенаРешение состоит в том, чтобы (как уже упоминалось), указать ключевое слово аргумент:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)