从JSON加载Scikit-Learn管道步骤

时间:2019-09-24 12:05:58

标签: python json loops scikit-learn pipeline

我是Python和ML的新手,所以请多多包涵。

我正在尝试基于JSON文件中的参数以编程方式生成scikit学习管道步骤。

参数如下:

{
    "scaler": ["STAN", "MINMAX", "MAXABS", "ROBUST", "PT"],
    "imbalance": ["SMOTE", "RUS", "SMOTEENN"],
    "classifier": ["SVM", "RF", "GBC"]
}

我试图遍历每个列表,从缩放器开始,并在每次迭代中添加管道步骤。 目标是为每种可能的组合使用一个管道。

以下循环将为我提供一些输出:

complete_pipelines = []
pipeline_steps = []
for scaler in scalerList:
    pipeline_steps.append(scaler)

    for imbalancer in imbalancerList:
        pipeline_steps.append(imbalancer)

        for classifier in classifierList:
            pipeline_steps.append(classifier)

            if (len(pipeline_steps) == 3):
                complete_pipelines.append(pipeline_steps)
                pipeline_steps = []
                pipeline_steps.append(scaler)
                pipeline_steps.append(imbalancer)

使用上述方法得到的是:

[
  ['STAN', 'SMOTE', 'SVM'], 
  ['STAN', 'SMOTE', 'RF'], 
  ['STAN', 'SMOTE', 'GBC']
]

这是一个开始,但是我正在寻找的是:

[
  [“STAN”, “SMOTE”, “SVM”]
  [“STAN”, “SMOTE”, “RF”]
  [“STAN”, “SMOTE”, “GBC”]
  [“STAN”, “RUS”, “SVM”]
  [“STAN”, “RUS”, “RF”]
  [“STAN”, “RUS”, “GBC”]
  [“STAN”, “SMOTEENN”, “SVM”]
  [“STAN”, “SMOTEENN”, “RF”]
  [“STAN”, “SMOTEENN”, “GBC”]

  [“MINMAX”, “SMOTE”, “SVM”]
  [“MINMAX”, “SMOTE”, “RF”]
  [“MINMAX”, “SMOTE”, “GBC”]
  .
  .
  .
  [“PT”, “SMOTEENN”, “SVM”]
  [“PT”, “SMOTEENN”, “RF”]
  [“PT”, “SMOTEENN”, “GBC”]
]

生成这些列表之后,我将遍历每个列表并相应地设置管道。 但是让它正常工作已经让我感到难过……

如果有任何有关如何实现这样的循环的指针,或者是否有任何函数可以创建“内置”这样的集合,我将不胜感激。

谢谢 史蒂夫

1 个答案:

答案 0 :(得分:0)

可能是这样的

complete_pipelines = []
for scaler in scalerList:
    for imbalancer in imbalancerList:
        for classifier in classifierList:
            complete_pipelines.append([scaler,imbalancer,classifier ])

print(complete_pipelines)

http://ideone.com/tftPGd