【发布时间】:2013-12-08 10:42:50
【问题描述】:
我想使用 Sklearn 的 GradientBoostingRegressor 类来预测回归问题中目标变量的值。我拥有的特征是混合类型的——一些是连续数字,一些是布尔值,两个是分类的,一个是连续数字的向量。我之所以选择梯度提升树,是因为数据是混合数据类型。一个特征向量的例子是:
['Category1', 41.93655, -87.642079, 0, 0, , 'mobile_app', 'NA']
但是,当我尝试使用 fit() 训练 GradientBoostingRegressor 时,我收到一条错误消息:
ValueError:无法将字符串转换为浮点数:Category1
此功能的值是通过枚举实现的。我只有一个方法:
def enum(self, **enums):
return type('Enum', (), enums)
然后当我创建我的类别时,我会这样做:
categories = self.enum(Category1='Category1', Category2='Category2', ...)
我猜问题是它仍然将实际值作为字符串返回。但是,如果我将值更改为 0、1、2 等,那么当某些类别应该与所有其他类别等距时,这将使某些类别“更接近”其他类别。
那么这个对象实际上是处理混合类型的数据还是必须全部以数字方式完成?如果它必须全是数字,那么有没有人用这个对象处理过分类数据,阐明了表示类别的最佳方式?任何帮助表示赞赏
【问题讨论】:
标签: python numpy machine-learning scipy regression