Загрузка шагов конвейера Scikit-Learn из JSON - PullRequest
0 голосов
/ 24 сентября 2019

Я новичок в Python и ML, поэтому, пожалуйста, потерпите меня.

Я пытаюсь программно генерировать шаги конвейера scikit-learn на основе параметров в файле JSON.

Параметры следующие:

{
    "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 голосов
/ 24 сентября 2019

может быть что-то вроде этого

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...