--- tags: - pet_Health - veterinary license: mit language: - en metrics: - accuracy - f1 base_model: - havocy28/VetBERTDx pipeline_tag: text-classification --- # Model Card for Model ID This model classifies pet health symptoms from text descriptions into predefined health conditions, fine-tuned on VetBERTDx. ## Model Details ### Model Description Fine-tuned VetBERTDx for sequence classification. This is the model card of a 🤗 transformers model that has been pushed on the Hub. This model card has been automatically generated. - **Developed by:** Fatemeh Dastak - **Model type:** Fine-tuned VetBERTDx for sequence classification - **Language(s) (NLP):** English - **License:** MIT - **Finetuned from model [optional]:** havocy28/VetBERTDx ### Model Sources [optional] - **Repository:** https://huggingface.co/fdastak/model_classification - **Dataset:** [Pet Health Symptoms Dataset](https://www.kaggle.com/datasets/yyzz1010/pet-health-symptoms-dataset) ## Uses ### Direct Use ```python from transformers import AutoModelForSequenceClassification, AutoTokenizer model = AutoModelForSequenceClassification.from_pretrained("fdastak/model_classification") tokenizer = AutoTokenizer.from_pretrained("fdastak/model_classification") ``` ### Out-of-Scope Use - Not for actual medical diagnosis - Not a replacement for veterinary consultation - Not suitable for emergency medical decisions ### Downstream Use [optional] This model can be integrated into: - Veterinary triage systems - Pet health monitoring applications - Symptom screening tools - Educational veterinary platforms ### Out-of-Scope Use This model should NOT be used for: - Direct medical diagnosis - Emergency medical decisions - Replacement of veterinary consultation - Legal or insurance decisions - Automated treatment recommendation ## Bias, Risks, and Limitations ## Technical Limitations - Limited to 512 token input length - CPU-only training constraints - Early stopping at 301 steps - Batch size limitations (8 training, 20 evaluation) - Specific to owner-reported symptoms ## Data Biases - Training data from owner observations only - English language only - Limited to common pet conditions - Potential reporting biases in symptoms - Class imbalance considerations ### Risk -Misinterpretation of medical conditions -Over-reliance on automated classification -Delayed professional consultation -False confidence in predictions -Language and cultural biases ### Recommendations ## Best Practices - Always verify predictions with professionals - Use as screening tool only - Monitor prediction confidence scores - Implement user warnings - Regular model evaluation ## How to Get Started with the Model # Load required libraries from transformers import AutoModelForSequenceClassification, AutoTokenizer import torch.nn.functional as F # Load model and tokenizer repo_id = "fdastak/model_classification" model = AutoModelForSequenceClassification.from_pretrained(repo_id) tokenizer = AutoTokenizer.from_pretrained(repo_id) # Example usage def classify_symptoms(text: str): # Preprocess and tokenize inputs = tokenizer( text, truncation=True, padding=True, max_length=512, return_tensors="pt" ) ## Training Details ### Training Data - Source: Pet Health Symptoms Dataset (Kaggle) - Split: 80% training, 20% validation - Preprocessing: Text lowercasing, label encoding ### Training Procedure #### Training Hyperparameters - Epochs: 5 - Train batch size: 8 - Eval batch size: 20 - Learning rate: 2e-5 - Scheduler: Linear with warmup - Warmup ratio: 0.1 - Early stopping: At step 301 - Maximum sequence length: 512 ### Evaluation #### Metrics - Accuracy - Precision (weighted) - Recall (weighted) - F1-score (weighted) - #### Speeds, Sizes, Times - **Training Duration**: ~1 hour - **Steps**: 301 (with early stopping) - **Checkpoint Frequency**: Every 50 steps - **Batch Processing**: - Training: 8 samples/batch - Evaluation: 20 samples/batch - **Model Storage**: Local checkpoints in './model_classification' ## Evaluation ### Testing Data, Factors & Metrics #### Testing Data - **Source**: [Pet Health Symptoms Dataset](https://www.kaggle.com/datasets/yyzz1010/pet-health-symptoms-dataset) - **Split**: 20% of data (validation set) - **Format**: Text descriptions with condition labels - **Preprocessing**: Text lowercasing, label encoding #### Factors - **Record Types**: Owner observations - **Text Length**: Maximum 512 tokens - **Language**: English - **Conditions**: Multiple pet health conditions - **Data Balance**: Stratified split for class distribution #### Metrics - **Accuracy**: Overall classification accuracy - **Precision (weighted)**: Measure of exactness - **Recall (weighted)**: Measure of completeness - **F1-score (weighted)**: Harmonic mean of precision and recall - **Confusion Matrix**: Class-wise performance visualization ### Results #### Performance Summary - Overall Accuracy: 89% - Average F1-Score: 0.89 - Class-wise Performance: - Class 0: Highest precision (0.97) and F1-score (0.95) - Class 1: Perfect recall (1.00) - Class 2: Balanced performance (0.93 across metrics) - Classes 3 & 4: Similar performance (~0.82-0.83 F1-score) #### Key Metrics - **Precision (weighted)**: 0.89 - **Recall (weighted)**: 0.89 - **F1-score (weighted)**: 0.89 - **Support**: 200 validation samples (40 per class) #### Summary - Model shows balanced performance across classes - Early stopping at step 301 prevents overfitting - Validation performed every 50 steps - Best model selected based on eval_loss - Confusion matrix shows class-wise performance ## Model Examination ### Validation Results The model's performance was examined using several evaluation methods: 1. **Classification Metrics** - Computed using sklearn's classification_report - Includes precision, recall, and F1-score - Evaluated on validation dataset - Weighted averages to handle class imbalance 2. **Confusion Matrix Analysis** ```python # Visualization code from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay import matplotlib.pyplot as plt model.eval() with torch.no_grad(): # Prediction collection true_labels = [] pred_labels = [] pred_scores = [] # ...evaluation logic ``` 3. **Prediction Confidence** - Softmax probabilities for class predictions - Confidence scores tracked for each prediction - Score distribution analysis for reliability 4. **Early Stopping Analysis** - Training stopped at step 301 - Monitored eval_loss for best model selection - Used custom StopAtStepCallback for controlled training ### Model Interpretability - Base model: VetBERTDx (domain-specific veterinary BERT) - Fine-tuned for pet symptom classification - Uses attention mechanisms for text understanding - Maximum sequence length: 512 tokens ### Limitations - CPU-only training might affect model capacity - Limited to predefined condition categories - Performance varies by symptom complexity - Early stopping may affect final performance ## Environmental Impact Carbon emissions can be estimated using the [Machine Learning Impact calculator](https://mlco2.github.io/impact#compute) presented in [Lacoste et al. (2019)](https://arxiv.org/abs/1910.09700). - **Hardware Type:** CPU (Personal Computer) - **Hours used:** ~2 hours (301 steps with early stopping) - **Cloud Provider:** None (Local training) - **Compute Region:** USA (Colorado) - **Power Mix:** Rocky Mountain Power Grid - **Training Configuration:** - 301 steps with early stopping - CPU-based training - Batch size: 8 samples - Epochs: 5 - Local machine execution Environmental considerations: - Used CPU instead of GPU for lower power consumption - Implemented early stopping at step 301 - Leveraged pre-trained model (VetBERTDx) - Local training to minimize data center impact - Efficient batch size selection ## Technical Specifications [optional] ### Model Architecture and Objective - Base model: VetBERTDx - Task: Sequence classification - Input: Text descriptions of pet symptoms - Output: Classification among health conditions ### Compute Infrastructure - Framework: PyTorch - Training device: GPU - Python dependencies: - transformers - torch - numpy - scikit-learn #### Hardware The model was trained using: - Training Device: CPU - Batch Configuration: - Training batch size: 8 - Evaluation batch size: 20 - Training Steps: Limited to 301 (early stopping) - Local Storage: Required for model checkpoints in './model_classification' #### Software Training environment specifications: - Python 3.11 - Core Libraries: ```python torch>=2.0.0 transformers>=4.30.0 numpy>=1.24.0 pandas>=1.5.0 scikit-learn>=1.0.0 sentence-transformers>=2.2.0 ``` - Training Components: - Framework: 🤗 Transformers - Base Model: havocy28/VetBERTDx - Tokenizer: AutoTokenizer - Model Class: AutoModelForSequenceClassification - Training API: Transformers Trainer with custom callbacks - Logging: Python's built-in logging module ## Citation [optional] If you use this model in your research, please cite it using the following: **BibTeX:** ```bibtex @misc{dastak2024pethealthclassifier, title={Pet Health Symptoms Classification Model}, author={Dastak, Fatemeh}, year={2024}, publisher={Hugging Face}, howpublished={\url{https://huggingface.co/fdastak/model_classification}}, note={Based on VetBERTDx by Havocy28}, keywords={veterinary-nlp, text-classification, pet-health} } ``` **APA:** ``` Dastak, F. (2025). Pet Health Symptoms Classification Model [Machine learning model]. Hugging Face Model Hub. https://huggingface.co/fdastak/model_classification ``` Please also cite the base model: ``` @misc{havocy282023vetbertdx, title={VetBERTDx: A Domain-Specific Language Model for Veterinary Medicine}, author={Havocy28}, year={2023}, publisher={Hugging Face}, howpublished={\url{https://huggingface.co/havocy28/VetBERTDx}} } ``` ## Model Card Contact Author: Fatemeh Dastak Repository: https://huggingface.co/fdastak/model_classification