【问题标题】:How to tune more than 2 hyperparameters in Grid Search in Python?如何在 Python 的网格搜索中调整 2 个以上的超参数?
【发布时间】:2023-02-03 18:48:32
【问题描述】:

我正在对 Logistic 回归应用网格搜索,以便找到达到最佳精度的参数组合。在这部分代码中,我只调整了两个超参数(学习率和迭代或“n_steps”),但如果我想调整超过 2 个参数(例如学习率、迭代和正则化因子或“lmd”),我会遇到一些困难。

注意:我需要从头开始做所有事情,所以我不能使用 sklearn,只能使用 numpy

这是我调整 learning_rate 和迭代次数的代码:

max_accuracy = 0
learning_rates = [0.01, 0.02, 0.03, 0.04, 0.05, 0.001, 0.002, 0.003, 0.004, 0.005]
iterations = [1000, 1500, 2000, 2500, 3000]

parameters = []
for i in learning_rates:
    for j in iterations:
        parameters.append((i, j))
print("Possible combinations: ", parameters)

for k in range(len(parameters)):
    model = LogisticRegression(learning_rate=parameters[k][0], n_steps=parameters[k][1], n_features=X_train.shape[1], lmd=2)
    model.fit_reg(X_train, y_train, X_valid, y_valid)

    Y_pred = model.predict(X_test, thrs=0.5)

如果我想调整 learning_rate、n_steps 和 lmd,我该如何更改代码?

【问题讨论】:

    标签: python machine-learning


    【解决方案1】:

    我们可以使用下面的代码,其中 grid_search 函数将模型、训练数据 X 和 y 以及定义超参数及其可能值的 param_grid 字典作为输入。该函数迭代所有可能的超参数组合,用每个组合拟合模型,并计算分数。最后函数返回得分最高的组合作为最佳超参数和最佳得分。

    
    import itertools
    import numpy as np
    
    def grid_search(model, X, y, param_grid):
        best_score = -np.inf
        best_params = {}
        for combination in itertools.product(*param_grid.values()):
            params = dict(zip(param_grid.keys(), combination))
            model.set_params(**params)
            model.fit(X, y)
            score = model.score(X, y)
            if score > best_score:
                best_score = score
                best_params = params
        return best_params, best_score
    
    param_grid = {
        'a': [1, 2, 3],
        'b': [4, 5, 6],
        'c': [7, 8, 9]
    }
    model = LogisticRegression()
    best_params, best_score = grid_search(model, X, y, param_grid)
    
    
    

    【讨论】:

      猜你喜欢
      • 2019-10-15
      • 2021-02-07
      • 2021-03-27
      • 2018-05-12
      • 2021-06-14
      • 2021-08-24
      • 2021-10-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多