TypeError尝试对用户输入数据进行标签编码时

时间:2018-10-19 09:37:31

标签: python pandas machine-learning scikit-learn sklearn-pandas

我已经使用此代码对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"])

但是我收到以下错误:

enter image description here

  

TypeError:“ int”和“ str”的实例之间不支持“ <”

我已经在S / O上看到了这个问题的多个重复,但是仍然找不到解决方案。因此,请提供有用的解决方案,而不是将其标记为重复项。 我是机器学习的初学者,所以随时可以指出此代码中的任何错误,也可以要求提供完整的代码。

1 个答案:

答案 0 :(得分:3)

labelencoder保存从分类输入到数字的转换。但是,当您多次拟合它时,它只会保存最后一个(“围巾”)。然后,当您尝试转换头发的用户输入时,它用作输入的值将不匹配。

解决方案是安装三个标签编码器:

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"])  

,然后分别使用它们来转换新输入。