Python3.7.5下scikit-learn 0.22的ParameterGrid是否会产生重复项?
问题结论
scikit-learn 0.22版本的ParameterGrid本身不会生成重复项,你遇到的重复问题是参数配置错误导致的
问题原因
ParameterGrid的核心逻辑是生成所有参数候选值的笛卡尔积,仅当某一个参数的候选值列表本身存在重复项时,才会生成重复的参数组合- 你提供的参数字典中,
CROSSVAL_PROTEINS_STRING的候选值列表里PPARG重复出现了2次,导致其他参数完全相同的组合会被重复生成两次,最终统计到重复项
修复方案
方案1:修复参数配置(推荐)
删掉CROSSVAL_PROTEINS_STRING列表中重复的PPARG值,修改后的参数项如下:
"CROSSVAL_PROTEINS_STRING": ['MARK4', 'ACHE', 'JNK2', 'AR', 'EPHB4', 'PPARG', 'MDM2', 'PARP-1', 'TP', 'TPA', 'SIRT2', 'SARS-HCoV'],
修改后重新运行测试代码,即可得到无重复的参数组合。
方案2:生成后去重
如果业务场景确实需要保留参数候选列表里的重复值,可以在生成参数组合后手动去重,示例代码如下:
# 去重参数组合 unique_params = [dict(t) for t in {tuple(p.items()) for p in ParameterGrid(hyper_params_dict)}] # 转DataFrame df = pd.DataFrame(unique_params)
内容的提问来源于stack exchange,提问作者tevang
相关产品推荐
相关产品推荐

