我正在编写一些代码,这些代码使用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']
有人知道什么可能导致此错误吗?谢谢!