Получение ошибки значения при использовании OneHotEncoder и данных подгонки

Я работаю над заданием, и мы используем OneHotEncoder в scikit-learn, чтобы распечатать все категории. Вот образец данных и код, который я использовал для их преобразования:

      grade sub_grade  short_emp  emp_length_num home_ownership        term
0          B        B2          0              11           RENT   36 months
1          C        C4          1               1           RENT   60 months
2          C        C5          0              11           RENT   36 months
3          C        C1          0              11           RENT   36 months
4          A        A4          0               4           RENT   36 months
5          E        E1          0              10           RENT   36 months

Код:

from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder(categorical_features='all', handle_unknown='error', n_values='auto', sparse=True)
encoder.fit(lending_club)

Ошибка, которую я получаю, относится к столбцу терминов:

ValueError: could not convert string to float: ' 36 months'

person macshaggy    schedule 13.02.2017    source источник


Ответы (2)


OneHotEncoder не поддерживает функции строк. Вы должны преобразовать их в целые числа, например, используя LabelEncoder. Другой вариант — использовать LabelBinarizer для всех столбцов.

См. Как сделать Onehotencoding в Sklearn Pipeline.

person dukebody    schedule 14.02.2017
comment
Другой вопрос: я получаю ошибку значения при попытке передать DataFrame с выбором более чем одного строкового столбца, такого как lending_club ['grade', 'term']. Должен ли я разделить DataFrame на два фрейма? Или использовать DataMapper, чтобы отделить строковые данные от числовых данных? - person macshaggy; 16.02.2017
comment
Можете ли вы создать новый вопрос в SO со всей необходимой информацией, пожалуйста? - person dukebody; 17.02.2017

scikit-learn OneHotEncoder поддерживает строку из 0.20.0.

person NiYanchun    schedule 11.10.2018