Я пытаюсь использовать scikit-learn LabelEncoder
для кодирования панд DataFrame
строковых меток. Поскольку в фрейме данных много (50+) столбцов, я хочу избежать создания объекта LabelEncoder
для каждого столбца; Я бы предпочел просто иметь один большой LabelEncoder
который работает во всех моих столбцах данных.
Бросок всего DataFrame
в LabelEncoder
создает LabelEncoder
ошибку. Пожалуйста, имейте в виду, что я использую фиктивные данные здесь; на самом деле я имею в виду около 50 столбцов данных, помеченных строками, поэтому мне нужно решение, которое не ссылается ни на один столбец по имени.
import pandas
from sklearn import preprocessing
df = pandas.DataFrame({
'pets': ['cat', 'dog', 'cat', 'monkey', 'dog', 'dog'],
'owner': ['Champ', 'Ron', 'Brick', 'Champ', 'Veronica', 'Ron'],
'location': ['San_Diego', 'New_York', 'New_York', 'San_Diego', 'San_Diego',
'New_York']
})
le = preprocessing.LabelEncoder()
le.fit(df)
Traceback (последний вызов был последним): файл "", строка 1, в файле "/Users/bbalin/anaconda/lib/python2.7/site-packages/sklearn/preprocessing/label.py", строка 103, в соответствии y = column_or_1d (y, warn = True) Файл "/Users/bbalin/anaconda/lib/python2.7/site-packages/sklearn/utils/validation.py", строка 306, в column_or_1d повышает ValueError ("неверная форма ввода { 0} ". Format (shape)) ValueError: неправильная форма ввода (6, 3)
Есть мысли о том, как обойти эту проблему?