Skip to content

Visualization

🧭 Purpose

This page explains the visualization outputs used in Sake to inspect data quality, understand distributions, evaluate models, and communicate results.

Visual review is an important complement to statistical metrics. A model can report acceptable summary metrics while still showing bias, outliers, unstable residuals, or poor performance for important classes.

📊 Visualization Categories

Category Purpose
Data profile charts Inspect distributions, missing values, and outliers.
Statistical charts Compare groups and relationships.
Classification diagnostics Review categorical prediction performance.
Regression diagnostics Review numeric prediction performance.
Feature charts Identify influential predictors or reduced-dimension structure.
Benchmark charts Compare model performance across algorithms.

📈 Distribution Plots

Histograms show the distribution of numeric fields.

import matplotlib.pyplot as plt

column = "obligations"

plt.figure()
df_accounts[column].dropna().hist(bins=30)
plt.xlabel(column)
plt.ylabel("Count")
plt.title(f"Distribution of {column}")
plt.show()

Use distribution plots to identify skew, zeros, negative values, and extreme values.

📦 Boxplots

Boxplots help identify outliers and compare groups.

column = "obligations"

plt.figure()
df_accounts.boxplot(column=column)
plt.title(f"Boxplot of {column}")
plt.show()

Grouped boxplot:

df_accounts.boxplot(column="obligations", by="account_type")
plt.title("Obligations by Account Type")
plt.suptitle("")
plt.show()

🔥 Correlation Heatmap

import matplotlib.pyplot as plt

df_corr = df_accounts.select_dtypes(include="number").corr()

plt.figure()
plt.imshow(df_corr)
plt.xticks(range(len(df_corr.columns)), df_corr.columns, rotation=90)
plt.yticks(range(len(df_corr.columns)), df_corr.columns)
plt.colorbar()
plt.title("Correlation Matrix")
plt.tight_layout()
plt.show()

✅ Classification Visuals

Visual Use
Confusion matrix Shows correct and incorrect class predictions.
ROC curve Shows tradeoff between true-positive and false-positive rates.
Precision-recall curve Useful when positive classes are rare.
Class distribution chart Shows class imbalance.
Feature importance chart Shows influential predictors for supported models.

Confusion Matrix Example

from sklearn.metrics import ConfusionMatrixDisplay

ConfusionMatrixDisplay.from_predictions(y_test, predictions)
plt.title("Confusion Matrix")
plt.show()

📉 Regression Visuals

Visual Use
Predicted versus actual Shows fit and systematic bias.
Residuals versus predicted Shows error structure.
Residual histogram Shows error distribution.
Feature importance Shows influential predictors.
Benchmark bar chart Compares model metrics.

Predicted Versus Actual Example

plt.figure()
plt.scatter(y_test, predictions)
plt.xlabel("Actual")
plt.ylabel("Predicted")
plt.title("Predicted Versus Actual")
plt.show()

Residual Histogram Example

residuals = y_test - predictions

plt.figure()
residuals.hist(bins=30)
plt.xlabel("Residual")
plt.ylabel("Count")
plt.title("Residual Distribution")
plt.show()

🧮 Model Benchmark Chart

df_results.plot(
    kind="bar",
    x="model",
    y="score",
    legend=False
)

plt.ylabel("Score")
plt.title("Model Benchmark")
plt.tight_layout()
plt.show()

🏛️ Budget Execution Visualization Notes

Budget data often includes very large outliers. Consider:

  • log-scale views for high-dollar variables
  • separate views by account type
  • showing top accounts by obligation or outlay
  • reviewing negative values separately
  • labeling charts clearly with fiscal year or reporting period
  • avoiding misleading axes for financial data

✅ Visualization Checklist

Before using charts in reports:

  • Chart title describes the measure and population.
  • Axes are labeled.
  • Units are clear.
  • Outliers are not hidden without explanation.
  • Group definitions are documented.
  • Model diagnostics support the metric interpretation.
  • The chart is readable in dark-mode documentation.