python - 如何处理 sklearn 决策树中的分类自变量
问题描述
我使用 onehotencoder 将所有分类自变量从字符串转换为数字(二进制 1 和 0),但是当我运行决策树时,算法将二进制分类变量视为连续变量。
例如,如果性别是我的自变量之一,则将男性转换为 1,将女性转换为 0。当我在决策树中使用它时,节点在 0.5 处分裂,这是没有意义的。
如何将此数字连续转换为数字分类?
解决方案
如何将此数字连续转换为数字分类?
如果结果相同,你需要吗?
例如,如果性别是我的自变量之一,则将男性转换为 1,将女性转换为 0。当我在决策树中使用它时,节点在 0.5 处分裂,这是没有意义的。
也许我错了,但这种分裂对我来说是有意义的。
假设我们有一个带有分类规则的决策树。除法将是二进制除法,这意味着“0”在左边,“1”在右边(在这种情况下)。
现在,我们如何优化这个划分规则?我们可以使用一个操作来替换这两个检查,而不是搜索值是“0”还是“1”。左边是“0”,其他一切都是正确的。现在,我们可以将相同的检查从类别替换为浮点数,<0.5 为左,否则为右。
在代码中,它很简单:
情况1:
if value == "0":
tree.left()
elif value == "1":
tree.right()
else:
pass # if you work with binary, this will never happen, so its useless
案例二:
if value == "0":
tree.left()
else:
tree.right()
案例3:
if value < 0.5:
tree.left()
else:
tree.right()
推荐阅读
- clr-profiling-api - 我们可以在 CLR 分析中使用 IMetaDataImport2 从类中调用方法吗?
- sql-server - 存储过程的输出参数
- javascript - 是否可以在单个语句中从另一个模块导出 * 和默认值?
- json - 如何使用数据外部块将来自 Terraform null_resource 的 JSON 解析为地图
- ms-access - 如何解决“条件表达式中的数据类型不匹配”
- sql - 当 Oracle 为空时选择大小写
- node.js - 多个反应在同一个 ip
- hive - Hive 计数的结果不正确
- vb.net - 在 Visual Studio 2019 中,如何配置 VB.NET 代码编辑器的 IntelliSense 在我按 Enter 时不插入换行符?
- flutter - 如何将上下文传递给提供者的第二个小部件树