«Ошибка типа: массив Singleton не может считаться допустимой коллекцией» с использованием sklearn train_test_split - PullRequest
0 голосов
/ 16 декабря 2018

TypeError: Массив одноэлементного массива (0.2) не может считаться допустимой коллекцией.

X = df.iloc[:, [1,7]].values
y= df.iloc[:,-1].values
from sklearn.model_selection import train_test_split 
X_train, X_test, y_train, y_test = train_test_split(X, y, 0.2)

Я получаю эту ошибку при попытке train_test_split.Я могу тренировать свою модель со значениями X и Y.Тем не менее, я хотел бы разбить мой фрейм данных, а затем обучить и протестировать его.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 16 декабря 2018

Не очень известный факт заключается в том, что 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)
...