Python ValueError:学习率必须大于0,但为0

Python ValueError:学习率必须大于0,但为0,python,scikit-learn,hyperparameters,hyperopt,Python,Scikit Learn,Hyperparameters,Hyperopt,我尝试使用Hyperopt优化器调整scikit GradientBoostingRegressionor模型的hyperparameters。我通过多种方式(例如: 'learning_rate': hp.quniform('learning_rate', 0.01, 1, 0.05) 或者作为简单数组[0.01,0.02,0.03,0.1]但是当我运行代码hyperopt开始计算时,我得到错误“ValueError:learning_rate必须大于0但为0” 我不知道代码中有什么问题,因

我尝试使用Hyperopt优化器调整scikit GradientBoostingRegressionor模型的hyperparameters。我通过多种方式(例如:

'learning_rate': hp.quniform('learning_rate', 0.01, 1, 0.05)
或者作为简单数组
[0.01,0.02,0.03,0.1]
但是当我运行代码hyperopt开始计算时,我得到错误“ValueError:learning_rate必须大于0但为0”

我不知道代码中有什么问题,因为零值不在参数的范围内。零值是如何起作用的

请帮我解决这个问题

先谢谢你

下面我附上相关的代码。注意:对于RandomForestRegregator和ExtratreesRegregator方法(估计器),代码工作没有问题


您使用
int()
将学习率转换为整数,因此Python将四舍五入为0。例如,您将
0.001
转换为整数,因此Python将其四舍五入为
0

问题在于这一行:

'learning_rate': int(params['learning_rate'])
把它变成:

'learning_rate': params['learning_rate']

亲爱的Nicolas,感谢您的回答。请建议我如何解决此问题,并在这种情况下将实数设置在[0.01,1]范围内。您好,请检查最后一行。您需要删除
int()
调用。亲爱的Nicolas,是的,这是个问题。我已删除int()打电话,现在一切正常。非常感谢您的帮助。致以最良好的问候。请不要对您的问题或回答添加评论以表示“谢谢”。评论是为了要求澄清、留下建设性的批评或添加相关但次要的附加信息,而不是为了社交。如果您想说“谢谢”投票并接受该人的答案。阅读:。
'learning_rate': params['learning_rate']