我尝试在 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 中做到这一点?