Python 字符串的整数编码并将其用作决策树(sklearn)的输入,会使分割属性离散还是连续?

Python 字符串的整数编码并将其用作决策树(sklearn)的输入,会使分割属性离散还是连续?,python,scikit-learn,decision-tree,Python,Scikit Learn,Decision Tree,我必须使用决策树分类器对某些数据进行分类。但是,属性值是字符串,正如我发现的,它表示字符串不能用作输入。因此,我对字符串使用整数编码 在本文中,我发现传递整数编码的数据可能会导致错误的答案,因为sklearn假设数据之间存在排序。因此,唯一的出路是使用onehotcoder模块 使用OneHotEncoder模块可以增加功能的数量(例如,如果有一个属性'price'的值['high'、'med'、'low'],一个热编码将导致包含与实际属性'price'相关的3个属性;这些属性可以解释为['pr

我必须使用决策树分类器对某些数据进行分类。但是,属性值是字符串,正如我发现的,它表示字符串不能用作输入。因此,我对字符串使用整数编码

在本文中,我发现传递整数编码的数据可能会导致错误的答案,因为sklearn假设数据之间存在排序。因此,唯一的出路是使用
onehotcoder
模块

使用
OneHotEncoder
模块可以增加功能的数量(例如,如果有一个属性'price'的值
['high'、'med'、'low']
,一个热编码将导致包含与实际属性'price'相关的3个属性;这些属性可以解释为
['price-high'、'price-med'、'price-low']
属性值将为1或0,具体取决于数据),我不希望这样,因为我必须以特定格式打印决策树,这将需要原始功能(例如,我需要“价格”)

有办法解决这个问题吗?

我认为这很有用,因为在创建一个热向量时,您希望跟踪原始特征名称

示例:

df = pd.DataFrame({'price': ['high', 'medium', 'high', 'low'], 'some_feature': ['b', 'a', 'c','a']})
pd.get_dummies(df,columns=['price','some_feature'])

    price_high  price_low   price_medium    some_feature_a  some_feature_b  some_feature_c
0   1   0   0   0   1   0
1   0   0   1   1   0   0
2   1   0   0   0   0   1
3   0   1   0   1   0   0

当将此数据帧提供给决策树时,您可以更好地理解

当然。这将把数据转换成一种热编码形式。但是,决策树将基于新特性(例如价格高、价格低等)构建。因此,在打印决策树时,特征不是“价格”或“某些特征”,而是“价格高”、“价格低”等。当我们已经为它创建了虚拟模型时,为什么您只想将
价格
作为功能名称呢。我认为,如果将其设置为
price\u high
,将有助于更好地解释决策树中如何进行拆分