You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中从零实现逻辑回归的多超参数网格搜索调优

实现逻辑回归三超参数的网格搜索(纯NumPy实现)

要扩展到三个超参数的网格搜索,核心就是在原有双层循环的基础上增加一层循环,生成所有参数的三元组组合,再逐个训练模型并跟踪最优结果。以下是修改后的完整代码:

import numpy as np

# 初始化最高准确率和最优参数
max_accuracy = 0
best_params = None

# 定义三个超参数的候选值列表
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]
lmds = [0.1, 0.5, 1, 2, 5, 10]  # 新增正则化因子的候选值

# 生成所有参数组合:三层循环遍历所有可能的三元组
parameters = []
for lr in learning_rates:
    for n_step in iterations:
        for lmd in lmds:
            parameters.append((lr, n_step, lmd))

print(f"Possible combinations: {len(parameters)} total")

# 遍历每个参数组合训练模型
for params in parameters:
    lr, n_step, lmd = params
    # 传入当前组合的所有三个超参数
    model = LogisticRegression(learning_rate=lr, n_steps=n_step, n_features=X_train.shape[1], lmd=lmd)
    model.fit_reg(X_train, y_train, X_valid, y_valid)
    
    # 预测并计算准确率
    Y_pred = model.predict(X_test, thrs=0.5)
    # 基于测试集标签计算准确率
    accuracy = np.mean(Y_pred == y_test)
    
    # 更新最高准确率和最优参数
    if accuracy > max_accuracy:
        max_accuracy = accuracy
        best_params = params
        print(f"New best accuracy: {max_accuracy:.4f}, params: {best_params}")

print(f"\nFinal best accuracy: {max_accuracy:.4f}")
print(f"Best parameters: learning_rate={best_params[0]}, n_steps={best_params[1]}, lmd={best_params[2]}")

关键改动说明

  • 新增参数候选列表:添加lmds列表定义正则化因子的待选值,可根据模型需求调整范围和步长
  • 扩展参数组合生成:用三层嵌套循环生成所有(learning_rate, n_steps, lmd)的三元组组合,确保覆盖所有可能的参数搭配
  • 参数传入模型:实例化LogisticRegression时,将当前遍历到的lmd值传入,替换原来固定的lmd=2
  • 准确率跟踪逻辑:补充基于NumPy的准确率计算逻辑,实时更新最高准确率和对应的最优参数,方便后续查看

内容的提问来源于stack exchange,提问作者Kalman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 13:21:24