随机森林搜索参数中hyperopt的ValueError

亚历山大·霍罗沙文

我正在尝试使用 hyperopt 查找 RandomForestClassifier 的参数。这是我的代码:

X, y = load_wine(return_X_y=True)

def rf_neg_score(params):
  X, y = params.pop('X'), params.pop('y')
  cv = params.pop('cv')
  scoring = params.pop('scoring')
  rf_clf = RandomForestClassifier(**params)
  score = cross_val_score(rf_clf, X=X, y=y, n_jobs=-1, scoring=scoring,
                          cv=cv).mean()
  return -score

rf_search_space = {
    'n_estimators': hp.choice('n_estimators', np.arange(10, 1000, dtype=int)),
    'max_depth': hp.choice('max_depth', np.arange(2, 8, dtype=int)),
    'max_leaf_nodes': hp.choice('max_leaf_nodes', np.arange(2, 65, dtype=int)),
    'n_jobs': -1,
    'X': X,
    'y': y,
    'cv': StratifiedKFold(n_splits=5),
    'scoring': 'f1_micro'
}

rf_best_params = fmin(fn=rf_neg_score, space=rf_search_space, max_evals=100,
                     algo=tpe.suggest)

在我运行 ValueError 后立即引发:

/usr/local/lib/python3.6/dist-packages/hyperopt/utils.py in use_obj_for_literal_in_memo(expr, obj, lit, memo)
    167     for node in pyll.dfs(expr):
    168         try:
--> 169             if node.obj == lit:
    170                 memo[node] = obj
    171         except AttributeError:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

你觉得我做错了什么?

亚历山大·霍罗沙文

找到决定。似乎 hyperopt 会检查搜索空间中的每个项目,如果它具有 hyperopt.hp.* 功能,并且在检查 ValueError 时引发。所以没有机会以这种方式提供数据。这是正确的代码:

def rf_neg_score(params):
  scoring = params.pop('scoring')
  cv = params.pop('cv')
  rf_clf = RandomForestClassifier(**params)
  # X and y are provided out of function
  score = cross_val_score(rf_clf, X=X, y=y, n_jobs=-1, 
                          scoring='f1_micro', cv=5).mean()
  return -score

rf_search_space = {
    'n_estimators': hp.choice('n_estimators', np.arange(10, 1000, dtype=int)),
    'max_depth': hp.choice('max_depth', np.arange(2, 8, dtype=int)),
    'max_leaf_nodes': hp.choice('max_leaf_nodes', np.arange(2, 65, dtype=int)),
    'scoring': 'f1_micro',
    'cv': StratifiedKFold(n_splits=5)
}

rf_best_params = fmin(fn=rf_neg_score, space=rf_search_space, max_evals=100,
                     algo=tpe.suggest)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python中的随机森林

来自分类Dev

Python中的随机森林

来自分类Dev

调整Caret包中随机森林的两个参数

来自分类Dev

随机森林包预测,newdata参数?

来自分类Dev

随机森林中的tuneGrid参数问题

来自分类Dev

随机森林包预测,newdata参数?

来自分类Dev

如何为随机森林指定 minInstancesPerNode 参数?

来自分类Dev

随机森林中的 class_weight 超参数改变了混淆矩阵中的样本数量

来自分类Dev

ValueError:scikit的随机森林分类学习

来自分类常见问题

什么是“随机森林”中的出库错误?

来自分类Dev

结合scikit学习中的随机森林模型

来自分类Dev

插入符号包中的“随机森林”错误

来自分类Dev

R中的多栅格随机森林

来自分类Dev

R中随机森林图的图例

来自分类Dev

随机森林模型中预测结果的差异

来自分类Dev

插入符号包中的“随机森林”错误

来自分类Dev

在 R 中打开 csv 文件随机森林

来自分类Dev

R内存错误中的随机森林

来自分类Dev

网格搜索随机森林“尚未安装 RandomForestClassifier 实例”

来自分类Dev

如何绘制与最佳参数相对应的随机森林树

来自分类Dev

对象中缺少值-R中的随机森林混淆矩阵

来自分类Dev

鼠标r包中执行随机森林时出错

来自分类Dev

获取R中随机森林的准确性

来自分类Dev

如何为随机森林修复“ eval()中的错误”?

来自分类Dev

获得R中连续变量的随机森林预测精度

来自分类Dev

在插入符号中拟合随机森林模型后使用partialPlot

来自分类Dev

scikit-learn / python中带有字符的随机森林

来自分类Dev

R中随机森林时间序列的变量重要性

来自分类Dev

提高sklearn中的随机森林回归器的性能

Related 相关文章

热门标签

归档