我想用Sklearn的GradientBoostingRegressor类预测值的回归问题的目标变量推进。我拥有的功能是混合类型 - 一些是连续数字,一些是布尔型,两种是分类型的,一种是连续数字的向量。我选择渐变增强树,因为数据是混合数据类型。一个特征向量的例子如下:梯度Sklearn
['Category1',41.93655,-87.642079,0,0,< 1x822'''稀疏矩阵类型'',其中4个存储元素以压缩稀疏行格式>,'mobile_app', “NA”]
然而,当我尝试训练相契合的GradientBoostingRegressor(),我得到一个错误说:
ValueError异常:无法将字符串转换为float:组别
此功能的值用枚举实现。我只是有一个方法:
def enum(self, **enums):
return type('Enum',(), enums)
后来,当我创建我的类别,我不喜欢这样写道:
categories = self.enum(Category1='Category1', Category2='Category2', ...)
我猜问题是,它仍然是返回的实际值作为一个字符串。但是,如果我将值更改为0,1,2等,这会使某些类别与其他类别“距离更近”,因为它们应该与其他所有类别等距。
那么这个对象实际上是混合类型的句柄数据还是这一切都必须做数值?如果必须是全部数字,那么使用此对象处理分类数据的任何人都可以了解表示类别的最佳方式?任何帮助表示赞赏