# sifat192/mushroom-classification-app architecture

> Architecture diagram of the GitHub repository sifat192/mushroom-classification-app, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sifat192/mushroom-classification-app
- Repository: https://github.com/sifat192/mushroom-classification-app

## Overview

This Streamlit app lets a user choose a mushroom classifier, adjust its available hyperparameters, and inspect predictions and evaluation results. At startup, app.py loads mushrooms.csv, label-encodes its categorical columns, and creates a train/test split. The selected Logistic Regression, SVM, or Random Forest model is fitted and evaluated; users can also request confusion-matrix, ROC, and precision-recall plots or display the raw and split data. The README documents these capabilities; the sampled source shows their implementation in app.py.

Main entry points: [`app.py`](https://github.com/sifat192/mushroom-classification-app/blob/main/app.py) (Streamlit App), [`mushrooms.csv`](https://github.com/sifat192/mushroom-classification-app/blob/main/mushrooms.csv) (Mushroom Data)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["User Interface"]
  node_app["Streamlit App<br/>[app.py]"]
  node_data_display["Data Display<br/>[app.py]"]
end

subgraph group_preparation["Data Preparation"]
  node_dataset["Mushroom Data<br/>[mushrooms.csv]"]
  node_encoding["Label Encoding<br/>[app.py]"]
  node_split["Train-Test Split<br/>[app.py]"]
end

subgraph group_models["Classification"]
  node_logistic["Logistic Regression<br/>[app.py]"]
  node_svm["Support Vector Machine<br/>[app.py]"]
  node_forest["Random Forest<br/>[app.py]"]
end

subgraph group_results["Evaluation"]
  node_scores["Metric Scores<br/>[app.py]"]
  node_plots["Metric Plots<br/>[app.py]"]
end

node_user(("App User"))

node_user -->|"selects model"| node_app
node_app -->|"reads"| node_dataset
node_app -->|"encodes columns"| node_encoding
node_encoding -->|"passes data"| node_split
node_app -->|"renders on request"| node_data_display
node_app -->|"configures and fits"| node_logistic
node_app -->|"configures and fits"| node_svm
node_app -->|"configures and fits"| node_forest
node_app -->|"computes metrics"| node_scores
node_app -->|"draws requested plots"| node_plots

click node_app "https://github.com/sifat192/mushroom-classification-app/blob/main/app.py"
click node_dataset "https://github.com/sifat192/mushroom-classification-app/blob/main/mushrooms.csv"
click node_encoding "https://github.com/sifat192/mushroom-classification-app/blob/main/app.py"
click node_split "https://github.com/sifat192/mushroom-classification-app/blob/main/app.py"
click node_logistic "https://github.com/sifat192/mushroom-classification-app/blob/main/app.py"
click node_svm "https://github.com/sifat192/mushroom-classification-app/blob/main/app.py"
click node_forest "https://github.com/sifat192/mushroom-classification-app/blob/main/app.py"
click node_scores "https://github.com/sifat192/mushroom-classification-app/blob/main/app.py"
click node_plots "https://github.com/sifat192/mushroom-classification-app/blob/main/app.py"
click node_data_display "https://github.com/sifat192/mushroom-classification-app/blob/main/app.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_data_display,node_user toneBlue
class node_dataset,node_encoding,node_split toneAmber
class node_logistic,node_svm,node_forest toneMint
class node_scores,node_plots toneRose
```

## Components

### User Interface

- [Streamlit App](https://github.com/sifat192/mushroom-classification-app/blob/main/app.py): `app.py`
- [Data Display](https://github.com/sifat192/mushroom-classification-app/blob/main/app.py): `app.py`

### Data Preparation

- [Mushroom Data](https://github.com/sifat192/mushroom-classification-app/blob/main/mushrooms.csv): `mushrooms.csv`
- [Label Encoding](https://github.com/sifat192/mushroom-classification-app/blob/main/app.py): `app.py`
- [Train-Test Split](https://github.com/sifat192/mushroom-classification-app/blob/main/app.py): `app.py`

### Classification

- [Logistic Regression](https://github.com/sifat192/mushroom-classification-app/blob/main/app.py): `app.py`
- [Support Vector Machine](https://github.com/sifat192/mushroom-classification-app/blob/main/app.py): `app.py`
- [Random Forest](https://github.com/sifat192/mushroom-classification-app/blob/main/app.py): `app.py`

### Evaluation

- [Metric Scores](https://github.com/sifat192/mushroom-classification-app/blob/main/app.py): `app.py`
- [Metric Plots](https://github.com/sifat192/mushroom-classification-app/blob/main/app.py): `app.py`

### Other components

- **App User**

## Connections

- App User → Streamlit App: selects model
- Streamlit App → Mushroom Data: reads
- Streamlit App → Label Encoding: encodes columns
- Label Encoding → Train-Test Split: passes data
- Streamlit App → Data Display: renders on request
- Streamlit App → Logistic Regression: configures and fits
- Streamlit App → Support Vector Machine: configures and fits
- Streamlit App → Random Forest: configures and fits
- Streamlit App → Metric Scores: computes metrics
- Streamlit App → Metric Plots: draws requested plots
