Как исправить: «Для оператора SklearnSimpleImputer (тип: SklearnSimpleImputer) поддерживается не более 1 входных данных, но мы получили 15 выходных данных ...» - PullRequest
0 голосов
/ 29 апреля 2019

Я пишу некоторый код, который использует Pipeline для запуска классификаторов дерева решений, импутеров и тому подобного.Я пытаюсь преобразовать эту модель конвейера в файл .onnx.У меня возникают некоторые проблемы с этим, особенно с аргументами метода convert_sklearn.

Я выполняю это на ноутбуке Jupyter и уже рассмотрел несколько различных способов реализации convert_sklearn и создания нового метода.,Я также попытался изменить свой фрейм данных, потому что подозреваю, что это может быть причиной моих проблем, но пока безрезультатно.

Это блок, который использует convert_sklearn:

from skl2onnx import convert_sklearn
from skl2onnx.common.data_types import FloatTensorType
input_types = dict([(x, FloatTensorType([1, 1])) for x in var_train.columns])

try:
    model_onnx = convert_sklearn(pipeline,
                                initial_types=list(input_types.items()))
except Exception as e:
    print(e)

with open("pipeline.onnx", "wb") as f:
    f.write(model_onnx.SerializeToString())

Если это поможет, вот код, в котором я установил различные фреймы данных

varset = pd.DataFrame(data.iloc[:,:-1])
targetset = pd.DataFrame(data.iloc[:,15])
from sklearn.model_selection import train_test_split
var_train, var_test, tar_train, tar_test = train_test_split(varset, targetset, test_size = 0.15)

data_train = pd.concat([var_train, tar_train], axis=1)
data_test = pd.concat([var_test, tar_test], axis = 1)

Файл onnx никогда не создается, скорее он дает мне следующее исключение во всей его полноте:

For operator SklearnSimpleImputer (type: SklearnSimpleImputer), at most 1 input(s) is(are) supported but we got 15 output(s) which are ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O']

Кто-нибудь знает, что может быть причиной этой ошибки?Спасибо!

...