Как избежать фиктивной переменной-ловушки для преобразования sklearn2pmml - PullRequest
0 голосов
/ 21 февраля 2019

При попытке создать конвейер sklearn2pmml я использую следующий код для создания пользовательского сопоставления, а затем использую PMMLLabelBinarizer для создания фиктивных переменных.Дело в том, что я хочу избежать фиктивной переменной-ловушки.Есть ли способ сделать это с помощью PMMLPipelines и избежать использования каких-либо пользовательских функций FunctionTransformer (я хочу в конечном итоге преобразовать конвейер в файл PMML)

Я не смог найти способ отбросить мой последний столбец, используя легкодоступна PMML-совместимая функция.(DataframeMapper - это функция sklearn_pandas).

DataFrameMapper([
     ('Merchant', [CategoricalDomain(missing_values=[None, np.nan])
                    , LookupTransformer(map_dict, 'ZZ'), PMMLLabelBinarizer()
                   ])
])

1 Ответ

0 голосов
/ 21 февраля 2019

Вы можете использовать sklearn.compose.ColumnTransformer для ограничения количества столбцов;Идея состоит в том, чтобы указать ColumnTransformer.remainder = "drop".

Например, если ваш конвейер начинается с DataFrameMapper, который создает матрицу из 5 столбцов, но вы хотите сохранить только первые четыре столбца:

pipeline = PMMLPipeline([
  ("mapper", DataFrameMapper[...]),
  ("slicer", ColumnTransformer([
    ("keep", "passthrough", [0, 1, 2, 3])
  ], remainder = "drop"),
  ("estimator", ...)
])

Поддержка ColumnTransformer доступна, начиная с последней версии SkLearn2PMML 0.42.0, поэтому вам может потребоваться сначала обновить ее до *. 1009 *

...