TypeError При попытке метки закодировать данные пользовательского ввода - PullRequest
0 голосов
/ 19 октября 2018

Я закодировал свои метки, используя этот код для данных поезда в python 3

from sklearn.preprocessing import LabelEncoder
le = preprocessing.LabelEncoder()                      
dframe["hair"] = le.fit_transform(dframe["hair"])          
dframe["beard"] = le.fit_transform(dframe["beard"])         
dframe["scarf"] = le.fit_transform(dframe["scarf"])  

enter image description here

После обучения мою модель я хочупроверить это с помощью ввода от пользователя enter image description here

Я пытаюсь закодировать ввод пользователя с помощью этого кода:

user_input["hair"] = le.transform(user_input["hair"])
user_input["beard"] = le.transform(user_input["beard"])
user_input["scarf"] = le.transform(user_input["scarf"])

Но я 'm получает следующую ошибку:

enter image description here

TypeError: '<' не поддерживается между экземплярами 'int' и 'str' </p>

Я видел многократные дубликаты этого вопроса на S / O, но все еще не мог найти решение.Поэтому, вместо того, чтобы пометить его как дубликат, предоставьте полезное решение.Я новичок в машинном обучении, поэтому не стесняйтесь указывать на любую ошибку в этом коде, вы также можете запросить полный код.

1 Ответ

0 голосов
/ 19 октября 2018

Лабеленкодер сохраняет преобразование из категориального ввода в числа.Однако, когда вы подгоняете его несколько раз, он сохраняет только последний («шарф»).Когда вы затем пытаетесь преобразовать пользовательский ввод для волос, значения, которые он использует в качестве ввода, не совпадают.

Решение состоит в том, чтобы установить три кодировщика меток:

le_hair = preprocessing.LabelEncoder()
le_beard = preprocessing.LabelEncoder()                      
le_scarf = preprocessing.LabelEncoder()                                            
dframe["hair"] = le_hair.fit_transform(dframe["hair"])          
dframe["beard"] = le_beard.fit_transform(dframe["beard"])         
dframe["scarf"] = le_scarf.fit_transform(dframe["scarf"])  

, а затем использоватьэти соответственно преобразовать новый ввод.

...