.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "gyexamples/plot_converters.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note Click :ref:`here ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_gyexamples_plot_converters.py: .. _l-b-transformed-target-regressor: A converter for a TransformedTargetRegressor ============================================ There is no easy way to convert a :class:`sklearn.preprocessing.FunctionTransformer` or a :epkg:`sklearn.compose.TransformedTargetRegressor` unless the function is written in such a way the conversion is implicit. .. GENERATED FROM PYTHON SOURCE LINES 13-24 .. code-block:: default from typing import Any import numpy as np from sklearn.compose import TransformedTargetRegressor from sklearn.preprocessing import FunctionTransformer from sklearn.linear_model import LinearRegression from mlprodict.onnx_conv import to_onnx from mlprodict import __max_supported_opset__ as TARGET_OPSET from mlprodict.npy import onnxnumpy_default, NDArray from mlprodict.onnxrt import OnnxInference import mlprodict.npy.numpy_onnx_impl as npnx .. GENERATED FROM PYTHON SOURCE LINES 25-27 TransformedTargetRegressor ++++++++++++++++++++++++++ .. GENERATED FROM PYTHON SOURCE LINES 27-49 .. code-block:: default @onnxnumpy_default def onnx_log_1(x: NDArray[Any, np.float32]) -> NDArray[(None, None), np.float32]: return npnx.log1p(x) @onnxnumpy_default def onnx_exp_1(x: NDArray[Any, np.float32]) -> NDArray[(None, None), np.float32]: return npnx.exp(x) - np.float32(1) model = TransformedTargetRegressor( regressor=LinearRegression(), func=onnx_log_1, inverse_func=onnx_exp_1) x = np.arange(18).reshape((-1, 3)).astype(np.float32) y = x.sum(axis=1) model.fit(x, y) expected = model.predict(x) print(expected) .. rst-class:: sphx-glr-script-out .. code-block:: none [ 5.3555384 9.108676 15.0781555 24.572792 39.67432 63.693733 ] .. GENERATED FROM PYTHON SOURCE LINES 50-51 Conversion to ONNX .. GENERATED FROM PYTHON SOURCE LINES 51-57 .. code-block:: default onx = to_onnx(model, x, rewrite_ops=True, target_opset=TARGET_OPSET) oinf = OnnxInference(onx) got = oinf.run({'X': x}) print(got) .. rst-class:: sphx-glr-script-out .. code-block:: none {'variable': array([[ 5.3555384], [ 9.108676 ], [15.0781555], [24.572792 ], [39.67432 ], [63.693733 ]], dtype=float32)} .. GENERATED FROM PYTHON SOURCE LINES 58-60 FunctionTransformer +++++++++++++++++++ .. GENERATED FROM PYTHON SOURCE LINES 60-66 .. code-block:: default model = FunctionTransformer(onnx_log_1) model.fit(x, y) expected = model.transform(x) print(expected) .. rst-class:: sphx-glr-script-out .. code-block:: none [[0. 0.6931472 1.0986123] [1.3862944 1.609438 1.7917595] [1.9459101 2.0794415 2.1972246] [2.3025851 2.3978953 2.4849067] [2.5649493 2.6390574 2.7080503] [2.7725887 2.8332133 2.8903718]] .. GENERATED FROM PYTHON SOURCE LINES 67-68 Conversion to ONNX .. GENERATED FROM PYTHON SOURCE LINES 68-73 .. code-block:: default onx = to_onnx(model, x, rewrite_ops=True, target_opset=TARGET_OPSET) oinf = OnnxInference(onx) got = oinf.run({'X': x}) print(got) .. rst-class:: sphx-glr-script-out .. code-block:: none {'variable': array([[0. , 0.6931472, 1.0986123], [1.3862944, 1.609438 , 1.7917595], [1.9459101, 2.0794415, 2.1972246], [2.3025851, 2.3978953, 2.4849067], [2.5649493, 2.6390574, 2.7080503], [2.7725887, 2.8332133, 2.8903718]], dtype=float32)} .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 3.255 seconds) .. _sphx_glr_download_gyexamples_plot_converters.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_converters.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_converters.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_