如何在 Python 中使用 Hyperopt 为目标中的每个类而不是为整个多类分类模型最大化精度?

问题描述 投票:0回答:0

我尝试在 Python 中构建多类分类机器学习模型。我使用 Hyperopt 调整我的超参数如下:

1。为优化定义参数空间

space = {
    "n_estimators": hp.choice("n_estimators", [100, 200, 300, 400,500,600]),
    "max_depth": hp.quniform("max_depth", 1, 15,1)
}

2。定义一个函数来最小化(目标函数) hyperopic 最小化函数,这就是为什么我在 prec 中添加负号以最大化精度

def hyperparameter_tuning(params):
    model = XGBClassifier(**params)
    model.fit(X_train, y_train)
    y_pred_test = model.predict(X_test)
    preds_prob_test = model.predict_proba(X_test_lgb)
    prec = precision_score(y_test, y_pred_test, average="macro")
    return {"loss": -prec, "status": STATUS_OK}

3。微调模型

trials = Trials()

best = fmin(
    fn=hyperparameter_tuning,
    space = space, 
    algo=tpe.suggest, 
    max_evals=100, 
    trials=trials
)

4。最佳估算师 打印(“最佳:{}”。格式(最佳))

100%|██████████████████████████████████████████████ ███████████| 100/100 [10:30<00:00, 6.30s/trial, best loss: -0.8915] Best: {‘max_depth’: 11.0, ‘n_estimators’: 2}.

我的任务:

通过上面的代码,我能够最大化整个模型的精度,但是我如何修改目标函数(pkt.2)以便为我的多类分类模型的每个类而不是整个模型最大化精度?

如何在 Python 中做到这一点?

python machine-learning precision multiclass-classification hyperopt
© www.soinside.com 2019 - 2024. All rights reserved.