为什么随机数生成器不会在循环中改变

问题描述

我有一些用于随机搜索代码我有一个参数“params”的字典,我想更改它以探索数据科学模型的超参数。

如果我包含 f = xgb.cv(....) 行,我的随机数不会改变循环。

_______________done_______________
{'objective': 'binary:logistic','booster': 'gbtree','eval_metric': 'logloss','eta': 0.03,'subsample': 0.5488135039273248,'colsample_bytree': 0.7151893663724195,'max_depth': 15}
=====================================
_______________done_______________
{'objective': 'binary:logistic','max_depth': 15}
=====================================

如果我注释掉该行,它会按预期工作。我错过了一些微妙的东西。

_______________done_______________
{'objective': 'binary:logistic','subsample': 0.8579456176227568,'colsample_bytree': 0.8472517387841254,'subsample': 0.6458941130666561,'colsample_bytree': 0.4375872112626925,'max_depth': 3}
=====================================

我正在使用的代码(是的,我可以直接分配它们,作为故障排除的一部分,我移动了生成):

params = {
    "objective": "binary:logistic","booster": "gbtree","eval_metric":"logloss","eta": 0.03,"subsample": 0.5,"colsample_bytree": 0.5,"max_depth": 3,}
max_depth = [3,5,10,15,20,40]
for i in range(10):
    params = params
    x=np.random.random()
    y=np.random.random()
    z=np.random.randint(0,len(max_depth))
    params['subsample']=x
    params['colsample_bytree']=y
    params['max_depth']=max_depth[z]
    f = xgb.cv(params,xgtrain,num_boost_round=5,nfold=5,stratified=False,early_stopping_rounds=5,as_pandas=True,verbose_eval=False,show_stdv=True,seed=0,shuffle=False)
    print("_______________done_______________")
    print(params)
    print("=====================================")

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)