gpt4 book ai didi

python - 使用 Sklearn 进行梯度提升

转载 作者:行者123 更新时间:2023-11-30 09:57:16 25 4
gpt4 key购买 nike

我想使用 Sklearn 的 GradientBoostingRegressor 类来预测回归问题中目标变量的值。我拥有的特征是混合类型的 - 有些是连续数字,有些是 bool 值,两个是分类的,一个是连续数字的向量。我之所以选择梯度增强树,是因为数据是混合数据类型。特征向量的一个例子是:

['Category1', 41.93655, -87.642079, 0, 0, <1x822 类型为 '' 的稀疏矩阵,具有压缩稀疏行格式的 4 个存储元素>, 'mobile_app', 'NA']

但是,当我尝试使用 fit() 训练 GradientBoostingRegressor 时,出现错误:

ValueError:无法将字符串转换为 float :Category1

此功能的值是通过枚举实现的。我只有一个方法:

def enum(self, **enums):
return type('Enum', (), enums)

然后,当我创建类别时,我会这样做:

categories = self.enum(Category1='Category1', Category2='Category2', ...)

我猜问题是它仍然以字符串形式返回实际值。但是,如果我将值更改为 0、1、2 等,这将使某些类别与其他类别“更接近”,而实际上它们应该与所有其他类别等距。

那么这个对象实际上是否处理混合类型的数据,还是都必须以数字方式完成?如果它必须全部是数字,那么是否有人使用此对象处理过分类数据来阐明表示类别的最佳方式?感谢任何帮助

最佳答案

每个特征都必须是数字的。由于梯度提升基于决策树,而决策树基于特征分割而不是距离来工作,因此“0、1、2等”。只要您适本地设置 max_depth 参数(确保进行网格搜索),表示实际上应该可以正常工作。

关于python - 使用 Sklearn 进行梯度提升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20163718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com