是否可以针对不同的参数列表更改我现有的代码
Is it possible to change my existing code for different parameter list
下面给出的代码工作正常。在这里,我正在做并行化,我也使用了 param_grid
、ParameterSampler
.
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_grid
和 ParameterSampler
。相反,我想在没有这两个(param_grid
和 ParameterSampler
)的情况下传递 args
。不过,我不确定我的想法是否可行。
想在没有 param_grid
和 ParameterSampler
的情况下传递参数吗?
不是 100% 确定,但可以给您一些关于更改的想法。根据您的想法,您需要在代码中进行更多更改。
使用 itertools
中的 repeat
。
将 n_reps
更改为 repetitions
。
删除args = dict()
和
将args
代码更改为
args = Namespace(
**dict(generate_dataset=generate_dataset, regressor=regressor, reg_name=reg_name, method=method, k=k, repetitions=repetitions)
)
- 将
rows, _
改为
rows, _ = list(
zip(
*process_map(
inner_loop,
repeat(args, repetitions),
total=repetitions,
desc=f"Computing ECs for method '{method}'",
)
)
)
您需要删除程序中所有使用的 param_iters
、params
和 test_size
。否则会报错!
下面给出的代码工作正常。在这里,我正在做并行化,我也使用了 param_grid
、ParameterSampler
.
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_grid
和 ParameterSampler
。相反,我想在没有这两个(param_grid
和 ParameterSampler
)的情况下传递 args
。不过,我不确定我的想法是否可行。
想在没有 param_grid
和 ParameterSampler
的情况下传递参数吗?
不是 100% 确定,但可以给您一些关于更改的想法。根据您的想法,您需要在代码中进行更多更改。
使用
itertools
中的repeat
。将
n_reps
更改为repetitions
。删除
args = dict()
和将
args
代码更改为
args = Namespace(
**dict(generate_dataset=generate_dataset, regressor=regressor, reg_name=reg_name, method=method, k=k, repetitions=repetitions)
)
- 将
rows, _
改为
rows, _ = list(
zip(
*process_map(
inner_loop,
repeat(args, repetitions),
total=repetitions,
desc=f"Computing ECs for method '{method}'",
)
)
)
您需要删除程序中所有使用的 param_iters
、params
和 test_size
。否则会报错!