PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteiTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
Python libraries to interpret machine learning models fall into two groups: tools that build transparent models and tools that explain black-box predictions after training. Start with scikit-learn inspection for basic diagnostics, SHAP for broad feature attribution, InterpretML for interpretable-by-design models, Captum for PyTorch, LIME for local surrogates, and Alibi for counterfactuals and anchors.
The right library depends on the question, model framework, data type, and required evidence. Explaining why a single loan-risk prediction was made is different from understanding global model behavior, finding a feasible action that changes an outcome, or proving that a real-world intervention causes a result.
Key takeaways
- scikit-learn inspection is the simplest starting point for permutation importance, partial dependence plots, and ICE plots in a scikit-learn workflow.
- SHAP is the strongest general-purpose choice for local and global feature attribution, with specialized explainers for tree and linear models.
- InterpretML can build intrinsically interpretable models such as Explainable Boosting Machines instead of explaining an opaque model after the fact.
- LIME explains one prediction with a local surrogate, but its result can change with perturbation, neighborhood, and random-seed settings.
- Captum is designed for PyTorch neural networks, while Alibi is useful for anchors, counterfactuals, prototypes, and other explanation families.
- SHAP, LIME, feature importance, PDP, and ICE describe model behavior, not causation; intervention questions belong to causal-inference tools such as DoWhy or EconML.
Which Python library should you choose?
Choose the library that matches the explanation question rather than selecting the most popular package. The following recommendations are practical starting points, not universal rankings.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Repair Windows errors before they cause bigger problemsFix Now →| Need | Best starting point | Reason |
|---|---|---|
| Basic feature importance and response curves | sklearn.inspection |
Built into scikit-learn and provides permutation importance, partial dependence, and ICE. |
| Tree-model explanations | SHAP TreeExplainer |
Uses a model-specific SHAP implementation for tree ensembles. |
| General local explanations | LIME | Fits an interpretable surrogate around one prediction without requiring model internals. |
| An interpretable production model | InterpretML | Includes glass-box models such as Explainable Boosting Machines. |
| PyTorch neural networks | Captum | Provides neural-network attribution, layer, neuron, gradient, and perturbation methods. |
| Anchors and counterfactuals | Alibi | Offers several local and global explanation families beyond ordinary importance scores. |
| scikit-learn debugging and formatted output | ELI5 | Conveniently displays weights, predictions, pipeline features, tree importance, and text highlights. |
| Intervention or treatment-effect questions | DoWhy or EconML | Causal inference is a different problem from predictive attribution. |
The PyWhy ecosystem includes DoWhy, EconML, and causal-learn for causal machine learning and causal inference. Those tools should not be presented as drop-in replacements for SHAP or LIME.
#1 Best Overall
What is the difference between an interpretable model and a model explanation?
An intrinsically interpretable model has a structure people can inspect directly. A sparse logistic regression exposes coefficients, a shallow decision tree exposes decision paths, a rule list exposes conditions, and a generalized additive model exposes feature-effect functions.
A post-hoc explanation is an additional analysis applied after a model has been trained. A random forest plus SHAP, a neural network plus Captum, and a text classifier plus LIME are examples. The explainer approximates or attributes the behavior of an existing model; the explainer does not automatically make the underlying model transparent.
| Approach | What the reader can inspect | Typical use | Important limitation |
|---|---|---|---|
| Sparse linear or logistic regression | Coefficients and signs | Transparent baseline or constrained decision model | Coefficients are affected by scaling, correlation, encoding, and regularization. |
| Shallow decision tree | Rules and decision paths | Human-readable classification or triage | Depth constraints can reduce flexibility. |
| Explainable Boosting Machine | Per-feature effect functions and interactions | Interpretable tabular production model | Performance and supported constraints must be measured on the actual dataset. |
| Black-box model plus explainer | Approximate global or local behavior | Debugging, monitoring, and triage | Explanation fidelity, stability, and data realism require validation. |
Choose an intrinsically interpretable model when stakeholders must understand the decision process itself, when the decision is high-stakes, or when auditability and constraints are product requirements. Choose a post-hoc explainer when an existing complex model has a material measured performance advantage or cannot easily be replaced. A transparent model is not universally less accurate; the performance gap is dataset-dependent.
Free tools Windows power users keep installed
One-click scans. No signup required.
What does SHAP explain?
SHAP attributes a prediction to input features using Shapley-value-based explanations. The SHAP documentation describes a common Explanation API and explainers for several model families, including tree, linear, and model-agnostic workflows.
SHAP supports both local and global analysis. A local waterfall plot can show why one observation moved away from a baseline, while a beeswarm or mean-absolute-attribution summary can show which features the model uses most across a dataset.
import shap
explainer = shap.Explainer(model, X_background)
shap_values = explainer(X_test)
# Global view
shap.plots.beeswarm(shap_values)
# One prediction
shap.plots.waterfall(shap_values[0])
For tree ensembles, use the model-specific tree implementation when appropriate:
explainer = shap.TreeExplainer(model)
shap_values = explainer(X_test)
shap.summary_plot(shap_values, X_test)
The SHAP API reference lists shap.Explainer, TreeExplainer, LinearExplainer, SamplingExplainer, and the Explanation object. A tree-specific explainer should not be described as identical to a generic model-agnostic explainer.
Recommended Free Tools
What are SHAP’s main limitations?
- SHAP values depend on the background or reference distribution. Document how background rows were selected.
- Correlated features can divide or shift attribution in unintuitive ways.
- A large attribution means that the model relied on a feature; it does not prove that changing the feature would cause the outcome.
- A global mean absolute SHAP summary does not explain every individual prediction.
- Multiclass output shapes and plotting behavior require careful handling.
- Explanation cost can become substantial for large datasets or complex models.
The SHAP documentation cautions readers against treating predictive explanations as causal insights. A SHAP plot can expose that a model uses a location variable or a proxy for a protected attribute, but the plot alone cannot establish the real-world mechanism behind that relationship.
How does LIME work?
LIME explains one prediction by creating perturbed samples near that observation, querying the black-box model, weighting nearby samples more heavily, and fitting a simple local surrogate. The InterpretML explanation of LIME describes this local-neighborhood and surrogate-model process.
from lime.lime_tabular import LimeTabularExplainer
explainer = LimeTabularExplainer(
X_train,
feature_names=feature_names,
class_names=class_names,
mode="classification",
discretize_continuous=True,
random_state=42,
)
explanation = explainer.explain_instance(
X_test[0],
model.predict_proba,
num_features=10,
)
print(explanation.as_list())
The LIME Python documentation provides separate tabular, text, and image modules. LIME is attractive when a developer needs an intuitive explanation around one observation and the model exposes a prediction function but not useful internal structure.
When can LIME be misleading?
LIME is local, so a surrogate that fits one neighborhood should not be generalized to the entire model. LIME results can vary with random sampling, neighborhood size, distance metric, discretization, and the local surrogate’s fidelity.
Rank #2
- Use scikit-learn to track an example ML project end to end
- Explore several models, including support vector machines, decision trees, random forests, and ensemble methods
- Exploit unsupervised learning techniques such as dimensionality reduction, clustering, and anomaly detection
- Dive into neural net architectures, including convolutional nets, recurrent nets, generative adversarial networks, autoencoders, diffusion models, and transformers
- Use TensorFlow and Keras to build and train neural nets for computer vision, natural language processing, generative models, and deep reinforcement learning
Perturbations also need to be realistic. Independent changes can create impossible combinations such as a negative age, an invalid categorical pairing, an ungrammatical text sample, or an image outside the training distribution. Test explanations across multiple seeds and neighborhood settings, and measure how well the local surrogate reproduces the original model.
Can InterpretML build an interpretable model?
Yes. InterpretML is especially useful when the goal is to train a model that exposes its behavior directly rather than attach an explanation layer to a black box. The InterpretML project documentation separates glass-box models, including Explainable Boosting Machines, from black-box explanation techniques.
from interpret.glassbox import ExplainableBoostingClassifier
model = ExplainableBoostingClassifier(random_state=42)
model.fit(X_train, y_train)
predictions = model.predict(X_test)
An Explainable Boosting Machine is designed to show feature effects directly. That is materially different from fitting a random forest and then using SHAP: SHAP describes the random forest’s learned behavior after training, whereas the EBM’s model form is intended to expose the effects themselves.
InterpretML also brings several explanation approaches into one project, including black-box explainers such as SHAP, LIME, partial dependence, and sensitivity analysis. That breadth is useful when a team wants one interface for comparing glass-box and post-hoc methods.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
What can scikit-learn inspection do without another package?
The scikit-learn inspection module provides permutation feature importance, partial dependence plots, individual conditional expectation plots, and related diagnostic utilities. Many scikit-learn users can answer their first interpretability questions without installing a dedicated XAI package.
from sklearn.inspection import permutation_importance
result = permutation_importance(
model,
X_test,
y_test,
n_repeats=10,
random_state=42,
scoring="neg_root_mean_squared_error",
)
importance = result.importances_mean
from sklearn.inspection import PartialDependenceDisplay
PartialDependenceDisplay.from_estimator(
model,
X_test,
features=["age", "income"],
)
Permutation importance measures how a chosen evaluation score changes when a feature’s values are shuffled. The result is metric-dependent: a feature can be important for accuracy but less important for recall or calibration.
Partial dependence plots show an average predicted response as a feature changes. ICE plots show separate response curves for individual observations and can reveal subgroups or heterogeneous behavior hidden by the average.
Permutation importance can be misleading with strongly correlated predictors. When one feature is shuffled, a second correlated feature may preserve enough information for the model to perform well, making the first feature appear unimportant. The scikit-learn documentation discusses this failure mode. Group correlated variables, compare multiple methods, and avoid presenting one ranking as definitive.
What is ELI5 useful for?
ELI5 is a practical debugging and formatted-output library for scikit-learn-oriented workflows. The ELI5 overview documents support for weights, predictions, decision trees, tree and ensemble importance, scikit-learn pipelines and feature unions, text highlighting, and output formats including HTML, text, dictionaries, JSON, pandas, and image-oriented representations.
import eli5
from eli5.sklearn import PermutationImportance
perm = PermutationImportance(
model,
random_state=42,
scoring="accuracy",
)
perm.fit(X_test, y_test)
eli5.show_weights(perm, feature_names=feature_names)
ELI5 is a good choice for notebook diagnostics, checking transformed feature names, inspecting a pipeline, and producing readable output quickly. ELI5 is not the first choice for modern deep-learning attribution; Captum is better aligned with PyTorch neural-network workflows.
Compatibility matters. The current ELI5 documentation snapshot supplied for this article states that ELI5 0.16.0 requires Python 3.9 or newer and scikit-learn 1.6 or newer, and documents installation with pip install eli5. Confirm those requirements in the project documentation when creating a new environment because framework compatibility changes over time.
Rank #3
Why is Captum the PyTorch choice?
Captum is a PyTorch-focused interpretability library for neural networks. Captum includes Integrated Gradients, saliency and other gradient-based attribution, layer-level and neuron-level analysis, perturbation methods, and LIME support through LimeBase.
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Scan for outdated or missing drivers - takes under a minute3Clear out junk files and repair common Windows errorsfrom captum.attr import IntegratedGradients
ig = IntegratedGradients(model)
attributions = ig.attribute(
inputs,
target=target_class,
)
The Captum documentation covers the broader PyTorch attribution API, while the Captum LIME API describes LimeBase, which accepts a forward function and configurable interpretable models, similarity functions, and perturbation functions.
Captum explanations are sensitive to the baseline used by methods such as Integrated Gradients, preprocessing, and the selected output target. A pixel-level attribution map is not automatically a human-readable explanation, and a saliency map should be checked with suitable sanity tests and domain validation.
When should you use Alibi?
Use Alibi when ordinary feature attribution is not enough and you need anchors, counterfactuals, prototypes, partial dependence, accumulated local effects, integrated gradients, or other model-inspection methods. The Alibi project documentation describes its broad method collection and scikit-learn-inspired initialization, fitting, and explanation pattern.
pip install alibi
from alibi.explainers import AnchorTabular
explainer = AnchorTabular(
predict_fn,
feature_names=feature_names,
category_map=category_map,
)
explainer.fit(X_train)
explanation = explainer.explain(X_test[0])
An anchor is a rule-like condition intended to be sufficient for a prediction with a stated precision and coverage. A counterfactual asks how an input might need to change to receive a different outcome. A prototype represents a typical or influential example.
Counterfactuals must respect feasibility, actionability, permissions, and domain constraints. A mathematically valid suggestion can still be impossible or unethical: a person cannot instantly change a historical diagnosis, a prohibited attribute should not be prescribed as an action, and mutually dependent fields cannot always be edited independently.
Which library fits each data type and framework?
| Library or tool | Main role | Model scope | Local/global scope | Best fit | Main weakness |
|---|---|---|---|---|---|
sklearn.inspection |
Built-in inspection | Many scikit-learn estimators | Mostly global, with PDP, ICE, and local rows | Baseline diagnostics | Less specialized attribution support. |
| SHAP | Feature attribution | Broad, with tree and linear explainers | Local and global | General-purpose tabular and model attribution | Baseline, correlation, and computational caveats. |
| LIME | Local surrogate | Model-agnostic prediction functions | Local | One-prediction explanations for tabular, text, and images | Sampling instability and unrealistic perturbations. |
| InterpretML | Glass-box models plus explainers | Its interpretable models and supported black boxes | Local and global | Interpretable-by-design tabular modeling | May not replace framework-specific neural tools. |
| ELI5 | Debugging and formatted explanations | Mainly scikit-learn and selected workflows | Local and global | Weights, pipelines, trees, and text | Narrower deep-learning coverage. |
| Captum | Neural-network attribution | PyTorch | Local, feature, layer, and neuron level | PyTorch vision, NLP, and deep learning | PyTorch-specific and baseline-sensitive. |
| Alibi | Broad XAI toolkit | Model-agnostic with integrations | Local and global | Anchors, counterfactuals, prototypes, and ALE | More concepts and configuration to learn. |
| DoWhy/EconML | Causal inference | Causal estimators and designs | Causal effects | Interventions, treatments, and policy questions | Not ordinary feature-importance tools. |
How should you install the main libraries?
The following commands are represented in the documentation sources supplied for this article:
pip install shap
pip install interpret
pip install eli5
pip install alibi
pip install lime
Use a virtual environment and pin the complete environment for reproducibility. The SHAP documentation, LIME documentation, InterpretML repository, ELI5 documentation, and Alibi repository document their respective installation paths.
Do not publish an unverified “latest version” claim. The research snapshot is dated August 16, 2026, and the current article date is August 18, 2026. The supplied documentation identifies scikit-learn documentation version 1.9.0 and ELI5 documentation version 0.16.0, while exact current versions for SHAP, LIME, Alibi, Captum, and InterpretML should be checked in the target Python environment at publication time.
How do you choose between global and local explanations?
Start by writing the explanation question in plain language. Different questions require different evidence.
| Question | Useful first methods | What the result means |
|---|---|---|
| Which features influence predictions overall? | Permutation importance, SHAP summary, PDP, ICE | Patterns in model behavior across a dataset or selected population. |
| Why did this individual receive this prediction? | SHAP waterfall, LIME, local surrogate, Captum attribution | Factors associated with one model output or local neighborhood. |
| How does a prediction change as a feature changes? | PDP, ICE, ALE, SHAP dependence | Response behavior under the method’s data and dependence assumptions. |
| What rule is sufficient for a prediction? | Anchors | A rule-like local condition with reported precision and coverage. |
| What could change the prediction? | Counterfactual explainers | A proposed input change, subject to feasibility and actionability checks. |
| Would an intervention change the outcome? | DoWhy, EconML, or another causal design | An estimate of an intervention under explicit causal assumptions. |
A global explanation does not replace a local explanation, and a local explanation does not describe every region, demographic group, time period, or production distribution. Compare both views when the model will affect people or operational decisions.
Rank #4
What workflow produces trustworthy explanations?
- Define the question. Decide whether the goal is debugging, global understanding, an individual reason, fairness analysis, an actionable change, or a causal intervention.
- Establish a simple baseline. Inspect coefficients, plot a shallow tree, calculate permutation importance, and generate PDP or ICE before adding a large explanation framework.
- Preserve the full preprocessing pipeline. Explain the features the model actually receives while retaining a clear mapping back to human concepts. One-hot encoding can turn one conceptual variable into several columns.
- Select representative background data. For SHAP and related attribution methods, use training data that represents the intended population. Do not use future information or leak test labels into the reference set.
- Compare global and local results. For SHAP, a beeswarm plot and a waterfall plot answer different questions.
- Test stability. Repeat explanations with different background samples, random seeds, LIME neighborhood sizes, and correlated-feature treatments.
- Check domain realism. Confirm that influential variables were available at decision time and that perturbations or counterfactuals describe valid cases.
- Review subgroups. Examine explanation behavior across relevant demographic groups, time periods, and distribution segments rather than showing one attractive example.
- Validate with domain experts. Ask whether the direction of effects is plausible, whether a suggested change is actionable, and whether the explanation reveals a proxy rather than a meaningful factor.
- Log metadata. Store the model version, data snapshot, explainer and library versions, background data or baseline, random seed, feature order, preprocessing, target output, and explainer configuration.
What are the most common interpretation mistakes?
Treating feature importance as causation
Feature importance shows how a fitted model uses information. A feature can be predictive because it is a proxy, because of leakage, or because it records a consequence of the target. Ordinary SHAP, LIME, permutation importance, PDP, and ICE do not independently prove that changing the feature would cause the predicted result.
Ignoring correlated features
Correlated variables can split attribution, hide importance during permutation, or make linear coefficients unstable. Group related variables where appropriate, report uncertainty, and compare methods rather than presenting a precise but unsupported ranking.
Allowing data leakage
An explanation can faithfully expose a leaky model without making the model valid. Check post-outcome fields, customer IDs, timestamps that encode label creation, future information, and preprocessing that was fitted using data outside the training split.
Generalizing one local explanation
A LIME explanation or a single SHAP waterfall describes one input or neighborhood. The explanation may change for another region of feature space, subgroup, time period, or production distribution.
Using impossible perturbations or counterfactuals
Model-agnostic explainers can evaluate invalid combinations, while counterfactual generators can suggest changes that are infeasible, impermissible, or not actionable. Add domain constraints and inspect generated examples before exposing them to users.
Confusing explanation quality with model quality
A clear plot can still be unstable or unfaithful. Evaluate predictive performance, explanation fidelity, stability, plausibility, coverage, computational cost, fairness usefulness, reproducibility, and actionability separately.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Breaking the explanation pipeline during an upgrade
New estimator types, NumPy or pandas changes, sparse-versus-dense behavior, categorical metadata, multiclass output shapes, plotting changes, and GPU requirements can break an explanation workflow even when the model still runs. Test the complete model-plus-explainer pipeline after dependency changes.
Worked choices for common projects
A random forest for loan-risk prediction
Start with scikit-learn permutation importance and PDP or ICE for global diagnostics. Add SHAP TreeExplainer for individual decisions and subgroup analysis. Treat location, income, employment, and other variables as predictive signals rather than causal explanations, and audit for leakage and prohibited proxies.
A PyTorch image classifier
Use Captum for Integrated Gradients, saliency, and layer-level attribution. Choose and document a meaningful baseline, target class, and preprocessing path. Use LIME image or SHAP-related workflows only after checking that perturbations remain meaningful for the image domain.
A text classifier
Use LIME’s text module or a suitable SHAP text workflow to inspect token-level behavior, and consider ELI5 when the text model is part of a supported scikit-learn pipeline. Check whether highlighted terms are genuine signals or artifacts such as headers, identifiers, formatting, or leakage.
A production model that must be understandable
Evaluate a sparse linear model, shallow tree, rule list, or InterpretML Explainable Boosting Machine before choosing a black box plus post-hoc explanations. Measure the actual performance gap and document the model’s constraints, not an assumed trade-off.
Best Value
A question about what action would change an outcome
Use a constrained counterfactual explainer such as an Alibi method for a model-oriented “what could change this prediction?” question. Use DoWhy, EconML, or another causal approach when the question is whether an intervention would change a real-world outcome.
Should you use a managed cloud explainability service?
Most developers need only open-source Python libraries for local notebooks, experimentation, and self-managed deployment. Managed alternatives become relevant when explanations must be monitored in production, centrally governed, access-controlled, and retained as part of an enterprise model-risk process.
| Managed option | Relevant capability | Best fit |
|---|---|---|
| Amazon SageMaker Clarify | Managed bias detection and explainability in AWS workflows | Teams already operating models and data in AWS. |
| Azure Machine Learning Responsible AI dashboard | Interpretability, fairness, debugging, and error analysis | Teams using Azure Machine Learning and needing a managed dashboard. |
| Google Vertex AI Explainable AI | Managed explanations for supported Vertex AI workflows | Teams already using Vertex AI model services. |
| IBM watsonx.governance | Enterprise AI governance and risk-management tooling | Organizations needing broader governance beyond Python plots. |
No current pricing figures are established by the supplied research. Managed-service cost depends on region, compute, storage, model endpoints or jobs, dataset size, monitoring frequency, existing cloud subscription, and governance features. Consult the vendor’s current pricing material rather than relying on an unverified number.
Managed services are usually a poor fit for a small local SHAP plot, privacy-restricted data, academic experimentation, or a team that does not already use the vendor’s cloud. Managed services are more defensible when centralized audit trails, access control, production monitoring, and cross-team governance justify the additional infrastructure.
Bottom-line recommendations by goal
- For a scikit-learn baseline, begin with
sklearn.inspection. - For broad feature attribution across tree, linear, and other supported models, begin with SHAP.
- For a transparent tabular model, evaluate InterpretML’s Explainable Boosting Machine and compare it with simpler linear or tree baselines.
- For one local, model-agnostic explanation, use LIME, then test local surrogate fidelity and stability.
- For PyTorch neural networks, use Captum and document baselines, targets, and preprocessing.
- For anchors, counterfactuals, prototypes, and related methods, evaluate Alibi with domain constraints.
- For convenient scikit-learn notebook debugging and formatted output, use ELI5, while checking its documented Python and scikit-learn requirements.
- For causal intervention questions, use a causal-inference framework such as DoWhy or EconML instead of treating attribution as causality.
Frequently Asked Questions
Is SHAP better than LIME for interpreting machine learning models?
SHAP is usually the better general-purpose starting point for local and global feature attribution, while LIME is useful for an intuitive local surrogate around one prediction. Neither method is universally better: SHAP depends on background and feature-dependence choices, and LIME depends on perturbations, neighborhood settings, and surrogate fidelity.
Can SHAP prove that a feature caused a prediction?
No. SHAP describes how a trained predictive model used information; a SHAP value does not prove that changing the feature would cause the outcome. Causal questions require an explicit causal design and tools such as DoWhy or EconML.
What is the best Python library for interpreting PyTorch models?
Captum is the most framework-specific choice for PyTorch models. Captum provides Integrated Gradients, saliency, gradient-based attribution, layer and neuron analysis, perturbation methods, and LIME support through LimeBase.
What is the difference between InterpretML and SHAP?
InterpretML includes intrinsically interpretable models such as Explainable Boosting Machines as well as post-hoc explainers. SHAP primarily provides attribution methods for explaining model predictions, so a random forest plus SHAP remains a black-box model with an explanation layer.
Does scikit-learn include model-interpretation tools?
Yes. The scikit-learn inspection module includes permutation feature importance, partial dependence plots, individual conditional expectation plots, and related utilities. These tools are often enough for an initial diagnostic, although correlated features and evaluation-metric choices require care.
The Bottom Line
There is no universally best Python interpretability library. Use scikit-learn inspection for a low-dependency baseline, SHAP for broad attribution, InterpretML for transparent models, LIME for local surrogates, Captum for PyTorch, and Alibi for anchors or counterfactuals. Validate every explanation for fidelity, stability, realism, and usefulness—and use causal-inference tools when the question concerns intervention rather than prediction.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

