在分类树中定义数据:序数与名义
Defining data in classification trees: ordinal vs nominal
我的问题是,在sklearn中构建决策树时,如果我有一个分类变量,如果我手动输入变量的值作为数字会有问题吗? (假设数据框很小)
而且,如果我的变量是名义变量或有序变量,结果会有差异吗?
我认为应该没有太大区别,因为理论说你应该根据熵和其他指标寻找最佳组合,所以它不应该关心一个值是否小于另一个值。
非常感谢
如果您的分类变量是有序变量或名义变量,则存在差异:
如果您的变量是有序的,您只需将每个类别更改为一个数字(例如:坏、正常、好可以更改为 1、2、3)。请注意,您只保留一列。如果样品很少,您可以手动进行。您可以使用 sklearn 中的 LabelEncoder
来完成它。
如果您的变量不是有序的,您必须向数据集添加新列,每个类别一个。您可以手动完成,但我建议使用 pd.get_dummies()
.
总而言之,您必须非常小心地了解分类变量是否是有序的。并且你可以手动处理它们(你会得到相同的结果),但建议使用预定义的函数以避免一些错误。
我的问题是,在sklearn中构建决策树时,如果我有一个分类变量,如果我手动输入变量的值作为数字会有问题吗? (假设数据框很小) 而且,如果我的变量是名义变量或有序变量,结果会有差异吗?
我认为应该没有太大区别,因为理论说你应该根据熵和其他指标寻找最佳组合,所以它不应该关心一个值是否小于另一个值。
非常感谢
如果您的分类变量是有序变量或名义变量,则存在差异:
如果您的变量是有序的,您只需将每个类别更改为一个数字(例如:坏、正常、好可以更改为 1、2、3)。请注意,您只保留一列。如果样品很少,您可以手动进行。您可以使用 sklearn 中的 LabelEncoder
来完成它。
如果您的变量不是有序的,您必须向数据集添加新列,每个类别一个。您可以手动完成,但我建议使用 pd.get_dummies()
.
总而言之,您必须非常小心地了解分类变量是否是有序的。并且你可以手动处理它们(你会得到相同的结果),但建议使用预定义的函数以避免一些错误。