#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, рад помочь!