Convert scikit-learn models and pipelines to ONNX
Python
631
542 commits
updated Oct 13, 2026

sklearn-onnx converts scikit-learn models to ONNX. Once in the ONNX format, you can use tools like ONNX Runtime for high performance scoring. All converters are tested with onnxruntime. Any external converter can be registered to convert scikit-learn pipeline including models or transformers coming from external libraries.
Full documentation including tutorials is available at https://onnx.ai/sklearn-onnx/. Supported scikit-learn Models Last supported opset is 21.
You may also find answers in existing issues or submit a new one.
You can install from PyPi:
pip install skl2onnx
Or you can install from the source with the latest changes.
pip install git+https://github.com/onnx/sklearn-onnx.git
# Train a model.
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
iris = load_iris()
X, y = iris.data, iris.target
X = X.astype(np.float32)
X_train, X_test, y_train, y_test = train_test_split(X, y)
clr = RandomForestClassifier()
clr.fit(X_train, y_train)
# Convert into ONNX format.
from skl2onnx import to_onnx
onx = to_onnx(clr, X[:1])
with open("rf_iris.onnx", "wb") as f:
f.write(onx.SerializeToString())
# Compute the prediction with onnxruntime.
import onnxruntime as rt
sess = rt.InferenceSession("rf_iris.onnx", providers=["CPUExecutionProvider"])
input_name = sess.get_inputs()[0].name
label_name = sess.get_outputs()[0].name
pred_onx = sess.run([label_name], {input_name: X_test.astype(np.float32)})[0]
We welcome contributions in the form of feedback, ideas, or code.
Before you submit any PR, you should apply the following command lines to fix the style issues.
black .
ruff check .
Overall
Maintained
Code review
PyPI
Latest release
Releases this year
760 followers · starred May 2023
340 followers · starred Feb 2026
411 followers · starred Dec 2024
456 followers · starred Oct 2023
Convert scikit-learn models and pipelines to ONNX
Python
631
542 commits
updated Oct 13, 2026

sklearn-onnx converts scikit-learn models to ONNX. Once in the ONNX format, you can use tools like ONNX Runtime for high performance scoring. All converters are tested with onnxruntime. Any external converter can be registered to convert scikit-learn pipeline including models or transformers coming from external libraries.
Full documentation including tutorials is available at https://onnx.ai/sklearn-onnx/. Supported scikit-learn Models Last supported opset is 21.
You may also find answers in existing issues or submit a new one.
You can install from PyPi:
pip install skl2onnx
Or you can install from the source with the latest changes.
pip install git+https://github.com/onnx/sklearn-onnx.git
# Train a model.
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
iris = load_iris()
X, y = iris.data, iris.target
X = X.astype(np.float32)
X_train, X_test, y_train, y_test = train_test_split(X, y)
clr = RandomForestClassifier()
clr.fit(X_train, y_train)
# Convert into ONNX format.
from skl2onnx import to_onnx
onx = to_onnx(clr, X[:1])
with open("rf_iris.onnx", "wb") as f:
f.write(onx.SerializeToString())
# Compute the prediction with onnxruntime.
import onnxruntime as rt
sess = rt.InferenceSession("rf_iris.onnx", providers=["CPUExecutionProvider"])
input_name = sess.get_inputs()[0].name
label_name = sess.get_outputs()[0].name
pred_onx = sess.run([label_name], {input_name: X_test.astype(np.float32)})[0]
We welcome contributions in the form of feedback, ideas, or code.
Before you submit any PR, you should apply the following command lines to fix the style issues.
black .
ruff check .
Overall
Maintained
Code review
PyPI
Latest release
Releases this year
760 followers · starred May 2023
340 followers · starred Feb 2026
411 followers · starred Dec 2024
456 followers · starred Oct 2023