python - 字符串的整数编码并将其用作决策树(sklearn)的输入是否会使分割属性离散或连续?
问题描述
我必须使用决策树分类器对某些数据进行分类。但是,属性值是字符串,正如我在这里找到的,它说字符串不能用作输入。因此,我对字符串使用整数编码。
在本文中,我发现传递整数编码的数据可能会导致错误的答案,因为 sklearn 假定数据之间是有序的。所以,唯一的出路是使用OneHotEncoder
模块。
使用OneHotEncoder
模块增加了特征的数量(例如,如果有一个属性 'price' 带有 values ['high','med','low']
,one-hot-encoding 将导致包含与实际属性 'price' 相关的 3 个属性;这些可以解释为['price-high','price-med', 'price-low']
和属性值将是 1 或 0,具体取决于数据),这是我不想要的,因为我必须以某种格式打印决策树,这需要原始特征(例如,我需要“价格”)。
有没有办法解决这个问题?
解决方案
我认为pd.get_dummies
这会很有用,因为您想在创建单热向量时跟踪原始特征名称。
例子:
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
当将此数据框输入决策树时,您可以更好地理解!
推荐阅读
- r - 使用动物园包我得到一个奇怪的频率
- python - AttributeError:“NodeView”对象没有属性“索引”
- c# - C# - 实例化一个返回 JSON 对象的类
- c# - 开发人员如何保持参考大量不同的实体预制件?
- reactjs - 在调整大小时重新排列反应组件
- flask - flask login_required 下一个参数不起作用
- php - Symfony 4 在新的开发项目中,简单的身份验证失败并出现错误“由于系统问题无法处理身份验证请求”
- mysql - 在 HAVING 子句中使用 MAX/MIN 优化查询
- sql - 如何通过相关表上的列的总和对 SELECT 查询进行排序?
- algorithm - 为什么我不断获得 POJ 1984 的 TLE - Navigation Nightmare?