Downloads · 30 days
0
VoltageVagabond/spam-classifier-mlx
spam-classifier-mlx is a text generation model from VoltageVagabond. Use it when you need the model to write or continue text. It is set up for mlx. The card lists the license as mit.
This repository was created for a senior project in ENGT 375 Applied Machine Learning at Old Dominion University. It is provided for educational and research demonstration purposes only. It is not intended for product…
Downloads · 30 days
0
Access
Public
Updated May 21, 2026
Repo size
202 MB
Likes
0
Public
Click a slice to open those files.
.safetensors318 MB · 85%
From the Hugging Face model README
This repository was created for a senior project in ENGT 375 Applied Machine Learning at Old Dominion University. It is provided for educational and research demonstration purposes only. It is not intended for production use, security filtering, or making real-world spam/phishing decisions. Always use established security tools for operational email protection.
ENGT 375 — Applied Machine Learning | Spring 2026 | ODU A Qwen 3.5 0.8B language model fine-tuned with LoRA adapters on Apple Silicon using the MLX framework for spam email classification.
mlx-lm)| Metric | Value |
|---|---|
| Test Loss | 0.996 |
| Test Perplexity | 2.708 |
| Best Training Loss | 0.808 (iteration 380) |
| Final Training Loss | 1.050 (iteration 600) |
| Hyperparameter | Value |
|---|---|
| Training examples | 2,204 (3-class: ham 819, spam 816, phishing 569) |
| Test examples | 551 (3-class: ham 216, spam 187, phishing 148) |
| Iterations | 1,500 |
| Batch size | 1 |
| Learning rate | 1e-5 |
| Gradient checkpointing | Enabled |
| Prompt masking | Enabled |
| Max sequence length | 1,024 |
| LoRA layers | 4 |
| LoRA rank | 8 |
| LoRA scale | 20.0 |
| Optimizer | Adam |
| Training time | ~60–90 minutes (scaled from the 30 min / 600-iter v0.3.0 reference run) |
from mlx_lm import load, generate
model, tokenizer = load("models/Qwen3.5-0.8B-OptiQ-4bit", adapter_path="adapters")
prompt = "Classify this email as spam or ham:\n\nSubject: You won a prize!\n..."
response = generate(model, tokenizer, prompt=prompt, max_tokens=100)
pip install -r requirements.txt
python app.py
adapters/ — LoRA adapter weights (.safetensors)fine_tune.py — Training scriptapp.py — Gradio web interfacetraining_data/ — Training dataset (JSONL)This model is an educational demonstration of LLM fine-tuning for text classification, created as part of a university course project. It is suitable for:
It is not intended for production spam filtering.
| Model | Description | Link |
|---|---|---|
| spam-classifier-liquid | Liquid AI LFM2.5-1.2B LoRA fine-tune | VoltageVagabond/spam-classifier-liquid |
| spam-xai-model | sklearn voting ensemble (RF + LR + SVM) with LIME/SHAP/ELI5 explainability | VoltageVagabond/spam-xai-model |
| spam-xai-classifier (Space) | Live Gradio web app for the sklearn classifier | VoltageVagabond/spam-xai-classifier |
@misc{voltagevagabond2026spammlx,
title={Spam Classifier — MLX LoRA Fine-Tune (Qwen 3.5 0.8B)},
author={VoltageVagabond},
year={2026},
howpublished={\url{https://huggingface.co/VoltageVagabond/spam-classifier-mlx}},
note={ENGT 375 — Applied Machine Learning, Old Dominion University, Spring 2026}
}