python - 尽管没有缺失值,但无法应用 LabelEncoder
问题描述
我目前正在努力使用 python labelEncoder。
我尝试将其应用于由模式填充值和“自编”值组成的数据集,以获取某些列中大量缺失值。
我尝试对数据集进行编码,当我只使用众数、中值或均值函数时,它工作得非常好。但是,一旦一列部分包含我自己估算的值(例如 9999)以创建具有这些值的新类别,LabelEncoder 似乎不起作用..
出现以下错误:
TypeError: '<' not supported between instances of 'str' and 'float'
因为我知道当奇怪的符号或 NaN 仍在数据集中时会发生错误,所以我可以向您保证我检查了它们。这就是为什么我不知道如何继续前进..
知道这里有什么问题吗?
为了使问题更清楚,这就是我所做的:Y 和 N 代表是和否,并且曾经是该列的原始值。我总结了 U 下的所有缺失值以创建一个新类别。未知或 99999 相同
解决方案
正如错误消息所说,您正在尝试将浮点数(数字)和字符串(文本)与数字运算符进行比较,这没有任何意义(例如:哪个更大5
或fish
?)。问题是,当您自己添加这些值时,您认为您添加了一个 number 9999
,但实际发生的是 python 正在插入一个包含 text 的字符串'9999'
。
解决方案是使用该float()
函数确保将手动插入的标签作为浮点数放入。您还可以在进行数字比较时使用它们以确保数据类型正确。
x = '5.5'
1 + x
TypeError: unsupported operand type(s) for +: 'int' and 'str'
1 + float(x)
6.5
推荐阅读
- python - 具有用户定义字段和外键选择的 ModelForm
- node.js - Nodejs-将数据导出到excel时在单元格中进行TextWrap
- javascript - 从一个数组中删除代表另一个数组的重复数据
- c# - asp:literal 控件上如何避免xss?
- javascript - React JS 中 webpack.config.js 中的这个相对路径有什么问题?
- c# - 在 Word 中模拟从另一个 VSTO 插件单击功能区按钮
- sql - 检查 SQL Server 中的条目
- c# - 在不打开浏览器的情况下调用自动下载 URL
- node.js - 如何创建多个 Laravel + Angular 开发环境
- php - 简单的 For-Loop 导致内存耗尽错误