如何解决:“对于操作员SklearnSimpleImputer(类型:SklearnSimpleImputer),最多支持1个输入,但我们有15个输出...”

时间:2019-04-29 01:23:03

标签: python machine-learning pipeline onnx

我正在编写一些代码,这些代码使用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']

有人知道什么可能导致此错误吗?谢谢!

0 个答案:

没有答案