yobx.sklearn.preprocessing.quantile_transformer#
- yobx.sklearn.preprocessing.quantile_transformer.sklearn_quantile_transformer(g: GraphBuilderExtendedProtocol, sts: Dict, outputs: List[str], estimator: QuantileTransformer, X: str, name: str = 'quantile_transformer') str[source]#
Converts a
sklearn.preprocessing.QuantileTransformerinto ONNX.The transformation maps each feature to a uniform or normal distribution using piecewise linear interpolation through the fitted quantile values.
X ──interp(quantiles_, references_)──► uniform [0,1] │ output_distribution='uniform'? ──► output │ output_distribution='normal' │ ▼ ndtri ▼ ──Clip(clip_min, clip_max)──► outputInterpolation follows sklearn exactly: for each feature j the forward transform computes the bidirectional average
0.5 · (interp(x, q_j, r) - interp(-x, -q_j_rev, -r_rev))
which correctly handles tied quantile values (repeated feature values in the training data).
Normal distribution output uses Acklam’s rational-function approximation of the inverse normal CDF (max error ≈ 1.15 x 10⁻⁹).
Minimum opset requirements:
opset ≥ 13 -
ReduceSumwith axes as input tensor
- Parameters:
g – the graph builder to add nodes to
sts – shapes defined by scikit-learn
estimator – a fitted
QuantileTransformeroutputs – desired output names
X – input name (shape
(N, F))name – prefix name for the added nodes
- Returns:
output name