iris-classifier / README.md
rajuamburu's picture
Upload folder using huggingface_hub
44b3ab8 verified
---
license: mit
tags:
- iris
- classification
- supervised-learning
- lda
- scikit-learn
library_name: sklearn
pipeline_tag: tabular-classification
language:
- en
---
# Iris Flower Classifier
A supervised classification model trained on the classic **Iris dataset** using **Linear Discriminant Analysis (LDA)**. Achieves **100% accuracy** on the test set.
## Model Details
| Property | Value |
|---|---|
| **Algorithm** | Linear Discriminant Analysis (LDA) |
| **Type** | Supervised Classification |
| **Input** | 4 flower measurements (cm) |
| **Output** | Species prediction + class probabilities |
| **Training Accuracy** | 97.5% (10-fold CV) |
| **Test Accuracy** | 100% |
| **Classes** | Iris-setosa, Iris-versicolor, Iris-virginica |
## Features
| Feature | Description | Range |
|---|---|---|
| `sepal_length` | Length of sepal (cm) | 4.3 – 7.9 |
| `sepal_width` | Width of sepal (cm) | 2.0 – 4.4 |
| `petal_length` | Length of petal (cm) | 1.0 – 6.9 |
| `petal_width` | Width of petal (cm) | 0.1 – 2.5 |
## Quick Start
```python
import joblib
import numpy as np
model = joblib.load("models/iris_model.pkl")
scaler = joblib.load("models/scaler.pkl")
label_encoder = joblib.load("models/label_encoder.pkl")
# Predict a flower: [sepal_length, sepal_width, petal_length, petal_width]
sample = np.array([[5.1, 3.5, 1.4, 0.2]])
scaled = scaler.transform(sample)
prediction = model.predict(scaled)[0]
species = label_encoder.inverse_transform([prediction])[0]
print(f"Predicted: {species}") # Iris-setosa
```
## Model Comparison
8 algorithms were compared using 10-fold stratified cross-validation:
| Algorithm | CV Accuracy |
|---|---|
| **LDA** | **97.5%** |
| SVM | 96.7% |
| Logistic Regression | 95.8% |
| KNN | 95.8% |
| Naive Bayes | 95.8% |
| Decision Tree | 95.0% |
| Random Forest | 95.0% |
| Gradient Boosting | 95.0% |
## Files
```
models/
iris_model.pkl # Trained LDA classifier
scaler.pkl # StandardScaler for feature normalization
label_encoder.pkl # LabelEncoder for species names
metadata.pkl # Model metadata (name, accuracy, features, classes)
app.py # Flask web app for interactive predictions
templates/
index.html # Web UI with sliders
```
## Web App
A Flask web app is included for interactive predictions:
```bash
pip install flask joblib scikit-learn numpy
python app.py
# Open http://localhost:5000
```
## Training Data
The classic Iris dataset (150 samples, 3 classes, 50 samples each). No missing values.
## Citation
```
@misc{rajuamburu-iris-classifier,
author = {rajuamburu},
title = {Iris Flower Classifier},
year = {2026},
publisher = {Hugging Face},
url = {https://huggingface.co/rajuamburu/iris-classifier}
}
```
## License
MIT