ONNX export of a PCA

ONNX export of a PCA 1:

Download Python samples

A Zip archive containing all samples can be found here: Samples of ONNX export

PCA with Scikit-learn

import numpy as np
from sklearn.decomposition import PCA
from skl2onnx import convert_sklearn
from skl2onnx.common.data_types import FloatTensorType, Int64TensorType

#Generate imput data_types
rng = np.random.RandomState(1)
X = np.dot(rng.rand(4, 3), rng.randn(3, 300)).T

# Dimensionality reduction with PCA 
pca = PCA(n_components=2)
pca.fit(X)
X_pca = pca.transform(X)
print("original shape:   ", X.shape)
print("transformed shape:", X_pca.shape)

#Convert model to ONNX
initial_type = [('float_input', FloatTensorType([None, X.shape[1]]))]
model_onnx = convert_sklearn(pca, initial_types=initial_type)
meta =  model_onnx.metadata_props.add()
with open("pca.onnx", "wb") as f:
    f.write( model_onnx.SerializeToString())

According to our level of knowledge, only Scikit-learn with skl2onnx is currently capable of converting a PCA to ONNX. For this reason, the description is limited to that.

ONNX export of a PCA 2: