---
myst:
html_meta:
description: "Check skgrad support for linear models, kernel SVMs, MLPs, and pipelines, including explicit model and transformer restrictions."
---
# Model coverage
| Family | Models | Differentiated output |
|---|---|---|
| Linear regression | `LinearRegression`, `Ridge`, `Lasso`, `ElasticNet` | Prediction |
| Linear classification | `LogisticRegression`, `RidgeClassifier`, `LinearSVC` | Decision score |
| Linear support-vector regression | `LinearSVR` | Prediction |
| Kernel support-vector regression | `SVR`, `NuSVR` | Prediction |
| Binary kernel classification | `SVC`, `NuSVC` | Decision score |
| Neural-network regression | `MLPRegressor` with squared-error or Poisson loss | Prediction, including the Poisson exponential output link |
| Neural-network classification | `MLPClassifier` | Binary or multiclass logits before logistic/softmax |
| Continuous pipelines | Supported scalers, polynomial expansion, PCA, and fitted feature selectors, then any supported estimator | Final estimator output, differentiated with respect to pipeline input features |
MLP hidden activations may be identity, logistic, tanh, or ReLU. At ReLU's
nondifferentiable origin, `skgrad` uses a zero derivative, matching
scikit-learn's backpropagation convention. Scalar and multi-output regression,
binary classification, and multiclass classification are supported.
Kernel SVMs support scikit-learn's `linear`, `poly`, `rbf`, and `sigmoid`
kernels. Multiclass kernel classifiers, callable kernels, and precomputed
kernels are not currently supported.
Tree models are intentionally excluded. Their predictions are piecewise
constant, so ordinary gradients are zero almost everywhere and undefined at
split boundaries. Use [TreeIG](https://github.com/LudgerHentschel/treeig),
which computes exact Integrated Gradients from the prediction jumps at tree
split crossings.
`skgrad` expects finite dense numeric inputs. Sequential and nested sklearn
pipelines may combine `StandardScaler`, `RobustScaler`, `MaxAbsScaler`,
`MinMaxScaler`, `PolynomialFeatures`, `PCA`, and supported fitted feature
selectors before a supported estimator. Gradients refer to the inputs of the
supplied pipeline, including every supported preprocessing chain rule.
Unknown transformers reject the entire analytic route; preprocessing is never
silently removed. See [pipeline conventions](https://ludgerhentschel.github.io/skgrad/pipelines.html)
for clipping, whitening, feature selection, and attribution coordinates.
## Important gaps
Coverage is focused rather than exhaustive. `ColumnTransformer`, categorical
encoders, arbitrary `FunctionTransformer` functions, and unsupported custom
transformer subclasses are not composed automatically. `KernelRidge`, Gaussian
processes, generalized linear regressors such as `PoissonRegressor`, and many
meta-estimators are also outside the current backend list. Having a `coef_`
attribute alone does not confer support.
Transformer recognition uses an explicit class list so an overridden `transform`
method cannot silently inherit an incorrect derivative. Estimator subclasses are accepted only when they inherit the differentiated
prediction method unchanged, including through intermediate base classes.
Regressors protect `predict`; score classifiers protect `decision_function`.
MLP classifiers protect `predict` and `predict_proba` because their exposed
logits derive from that prediction path. Overrides of these methods are refused.
This guard does not certify arbitrary changes to fitting or private helpers.
Nonlinear kernel SVMs depend on sklearn's private fitted `_gamma` attribute to
resolve `gamma="scale"` and `gamma="auto"`. If it is unavailable, evaluation raises
a clear compatibility error. CI tests scikit-learn pre-releases without imposing
an upper dependency bound.
See [pipeline gradients](pipelines.md) for the exact supported transformations
and [numerical fallback policy](numerical.md) for unsupported models.