我在训练数据上使用以下代码对标签进行了编码,代码运行环境为python 3
from sklearn.preprocessing import LabelEncoderle = preprocessing.LabelEncoder() dframe["hair"] = le.fit_transform(dframe["hair"]) dframe["beard"] = le.fit_transform(dframe["beard"]) dframe["scarf"] = le.fit_transform(dframe["scarf"])
我尝试使用以下代码对用户输入进行编码:
user_input["hair"] = le.transform(user_input["hair"])user_input["beard"] = le.transform(user_input["beard"])user_input["scarf"] = le.transform(user_input["scarf"])
但我收到了以下错误:
TypeError: ‘<‘ not supported between instances of ‘int’ and ‘str’
我在S/O上看到了这个问题的多个重复问题,但仍然找不到解决方案。所以请不要标记它为重复问题,友好地提供一个有用的解决方案。我是机器学习初学者,所以请随意指出代码中的任何错误,你也可以要求查看完整的代码。
回答:
标签编码器保存了从分类输入到数字的转换。然而,当你多次拟合它时,它只保存最后一个(‘scarf’)。当你尝试转换用户输入的头发数据时,使用的输入值不匹配。
解决方案是拟合三个标签编码器:
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"])
然后分别使用这些编码器来转换新的输入数据。