使用python中的hypopt包在GridSearch函数中指定评分指标

使用python中的hypopt包在GridSearch函数中指定评分指标,python,machine-learning,grid-search,hyperparameters,Python,Machine Learning,Grid Search,Hyperparameters,我正在使用hypopt包中的Gridsearch函数使用指定的验证集进行超参数搜索。分类的默认指标似乎是准确性(不是很确定)。这里我想用F1成绩作为衡量标准。我不知道应该在哪里指定度量标准。我看了文档,但有点困惑 熟悉hypopt包的人知道我怎么做吗?先谢谢你 from hypopt import GridSearch log_reg_params = {"penalty": ['l1'], 'C': [0.001, 0.01]} opt = GridSearch(model=Logistic

我正在使用hypopt包中的Gridsearch函数使用指定的验证集进行超参数搜索。分类的默认指标似乎是准确性(不是很确定)。这里我想用F1成绩作为衡量标准。我不知道应该在哪里指定度量标准。我看了文档,但有点困惑

熟悉hypopt包的人知道我怎么做吗?先谢谢你

from hypopt import GridSearch

log_reg_params = {"penalty": ['l1'], 'C': [0.001, 0.01]}
opt = GridSearch(model=LogisticRegression())
opt.fit(X_train, y_train, log_reg_params, X_val, y_val)

对于您使用的任何模型,
hypopt
包的默认度量是
score()
函数,因此在您的情况下,默认为准确性的是
logistic回归().score()

如果通过
pip install hypopt--upgrade
将hypopt包升级到1.0.8版,则可以在
GridSearch.fit()
scoring
参数中指定您选择的任何指标,例如,
fit(scoring='f1')
。下面是一个基于使用F1度量的代码的简单工作示例:

from hypopt import GridSearch

param_grid = {"penalty": ['l1'], 'C': [0.001, 0.01]}
opt = GridSearch(model=LogisticRegression(), param_grid = param_grid)
# This will use f1 score as the scoring metric that you optimize.
opt.fit(X_train, y_train, X_val, y_val, scoring='f1')
hypopt
支持几乎所有
sklearn
支持的评分功能

  • 对于分类,
    hypopt
    支持以下指标(作为字符串):“准确度”、“brier_分数损失”、“平均精度”、“f1”、“f1_微观”、“f1_宏观”、“f1_加权”、“负对数损失”、“精度”、“召回率”或“roc_auc”
  • 对于回归,
    hypopt
    支持:“解释方差”、“负均值绝对误差”、“负均值平方误差”、“负均值平方对数误差”、“负中值绝对误差”、“r2”
您还可以创建自己的度量
您的_custom_score_func(y_true,y_pred)
,方法是将其包装到如下对象中:

from sklearn.metrics import make_scorer
scorer = make_scorer(your_custom_score_func)
opt.fit(X_train, y_train, X_val, y_val, scoring=scorer)
您可以在下面的
hypopt.GridSearch.fit()
docstring中了解更多信息:

您可以在此处了解有关创建自己的自定义评分标准的更多信息:

  • 例如:
  • 源代码:

非常感谢您的详细回答!还有一个问题,hypopt和hyperopt包一样吗?很好-如果答案正确,就给它打分并投票。回答你的问题——一点也不。Hypopt是一个通用软件包,您可以随时为任何模型找到最佳参数设置。Hypopt是唯一一个用验证集优化参数的简单python包。然而,hyperopt针对贝叶斯-高斯过程的特定情况实现了一种树搜索算法。有许多用于贝叶斯超参数优化的软件包,hyperopt可能是一个不错的软件包,我不知道,因为我没有使用过它@泽斯兰刚刚投了赞成票。谢谢。我以为你也是这本书的作者hyperopt@zesla注意,您需要升级到1.0.7版,1.0.6中有一个减号错误。现已修复:)