| --- |
| 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 |
|
|