是否可以针对不同的参数列表更改我现有的代码

Is it possible to change my existing code for different parameter list

下面给出的代码工作正常。在这里,我正在做并行化,我也使用了 param_gridParameterSampler.

def analyse(
    generate_dataset: Any,
    regressor: Any,
    method: Method,
    test_size: Tuple[float, float],
    k: int,
    n_reps: int,
    param_iters: int = 2,
) -> DataFrame:
    args = dict(
        generate_dataset=generate_dataset,
        regressor=regressor,
        method=method,
        test_size=test_size,
        k=k,
        n_reps=n_reps,
        param_iters=param_iters
    )

    param_grid = { "test_size": np.random.uniform(test_size[0], test_size[1], param_iters)  }
    sampler = list(ParameterSampler(param_grid, n_iter=param_iters))

    args = [Namespace(**{**args, **dict(params=params)}) for params in sampler]
   
    rows, _ = list(
        zip(*process_map(inner_loop, args, total=len(args), desc=f"Computing ECs for method '{method}'"))
    )

    df: DataFrame = pd.concat(rows, axis=0, ignore_index=True)
    return df

现在,我不想使用 param_gridParameterSampler。相反,我想在没有这两个(param_gridParameterSampler)的情况下传递 args。不过,我不确定我的想法是否可行。

想在没有 param_gridParameterSampler 的情况下传递参数吗?

不是 100% 确定,但可以给您一些关于更改的想法。根据您的想法,您需要在代码中进行更多更改。

  1. 使用 itertools 中的 repeat

  2. n_reps 更改为 repetitions

  3. 删除args = dict()

  4. args代码更改为

   args = Namespace(
        **dict(generate_dataset=generate_dataset, regressor=regressor, reg_name=reg_name, method=method, k=k, repetitions=repetitions)
        )
  1. rows, _改为
    rows, _ = list(
        zip(
            *process_map(
                inner_loop,
                repeat(args, repetitions),
                total=repetitions,
                desc=f"Computing ECs for method '{method}'",
            )
        )
    )

您需要删除程序中所有使用的 param_itersparamstest_size。否则会报错!