LabelEncoder — подходящий список кортежей — y должен быть 1d массивом

#python #scikit-learn

Вопрос:

Я хочу пометить-закодировать список кортежей , используя sklearn.preprocessing.LabelEncoder , например:

 [(4,5), (6, 7), (1, 1), (6, 7), ... ]
 

Так что каждый кортеж получает уникальную метку. Однако эта структура преобразуется в 2D np.ndarray , что является причиной следующей ошибки:

 ValueError: y should be a 1d array, got an array of shape (N, 2) instead.
 

Как я могу манипулировать своей исходной структурой, чтобы ее можно было правильно закодировать (я предполагаю, что это единственное решение, поскольку LabelEncoder оно не настраивается) ?

Ответ №1:

Кодеры требуют, чтобы их входные данные были равномерно строками или числами, поэтому стройте свои кортежи, прежде чем передавать их в le.fit() ?

 data = [(4,5), (6, 7), (1, 1), (6, 7), (8, 9), (10, 11)]
le.fit([str(t) for t in data])
print(le.classes_)
#Output: ['(1, 1)' '(10, 11)' '(4, 5)' '(6, 7)' '(8, 9)']
 

Комментарии:

1. так смутился, что не подумал об этом. Спасибо!

2. Не беспокойтесь @Proko, рад помочь!