我目前正在努力使用python labelEncoder 我试图将它应用于由模式填充值组成的数据集和某些列中较大量缺失值的“自编”值。
我尝试对数据集进行编码,当我只使用模式,中值或平均函数时,它工作得很好。但是,只要一个列部分由我自己估算的值(例如9999)组成,用这些值创建一个新的类别,LabelEncoder似乎不起作用..
发生以下错误:
TypeError: '<' not supported between instances of 'str' and 'float'
因为我知道当奇怪的符号或NaN仍然在数据集中时发生错误我可以向你保证我已经检查了所有这些。 这就是为什么我不知道如何继续前进..
知道问题在这里吗?
为了使问题更清楚,我就是这样做的:Y和N代表Yes和No,曾经是列的原始值。我总结了U下的所有缺失值来创建一个新类别。同样适用于未知或99999
答案 0 :(得分:1)
正如错误消息所示,您试图将float(数字)和字符串(text)与数字运算符进行比较,这没有任何意义(例如:哪个更大5
或{{1 }}?)。问题是当你自己添加这些值时,你认为你添加了一个数字fish
,但实际发生的是python正在插入一个包含文本9999
的字符串。
解决方案是使用'9999'
函数确保手动插入的标签作为浮点数放入。您也可以在进行数值比较的地方使用它们,以确保数据类型正确。
float()