-
Notifications
You must be signed in to change notification settings - Fork 0
USAGE‐GUIDE
SRIJA DE CHOWDHURY edited this page Dec 29, 2025
·
1 revision
|
Simple predictions Get started fast |
Training & tuning Custom workflows |
REST endpoints Integration guide |
from depression_predictor import DepressionPredictor
import pandas as pd
# 1️⃣ Initialize the model
model = DepressionPredictor()
# 2️⃣ Load your data
data = pd.read_csv('your_data.csv')
# 3️⃣ Make predictions
predictions = model.predict(data)
# 4️⃣ Display results
print(f"✅ Predictions completed: {len(predictions)} samples")
print(predictions)Expected Output:
✅ Predictions completed: 100 samples
[0, 1, 0, 0, 1, 1, 0, ...]
sample = {
# Demographics
'age': 28,
'gender': 'female',
'education': 'bachelors',
'employment': 'full_time',
'marital_status': 'single',
# Behavioral
'sleep_hours': 5. 5,
'activity_level': 'low',
'social_interaction': 'minimal',
'screen_time': 8,
# Symptoms
'mood_score': 3,
'energy_level': 2,
'concentration': 4,
'interest_level': 3,
# ... other features
} |
# Predict
result = model.predict_single(sample)
# Pretty print results
print(f"""
╔════════════════════════════════╗
║ 🎯 PREDICTION RESULTS ║
╠════════════════════════════════╣
║ Risk Level: {result['prediction']} ║
║ Probability: {result['probability']:.1%} ║
║ Confidence: {result['confidence']} ║
║ Timestamp: {result['timestamp']} ║
╚════════════════════════════════╝
""") |
Output:
╔════════════════════════════════╗
║ 🎯 PREDICTION RESULTS ║
╠════════════════════════════════╣
║ Risk Level: 1 ║
║ Probability: 76.3% ║
║ Confidence: high ║
║ Timestamp: 2025-12-29... ║
╚════════════════════════════════╝
# 🔹 Option 1: Load from file path
model = DepressionPredictor(model_path='models/best_model.h5')
# 🔹 Option 2: Load after initialization
model = DepressionPredictor()
model.load('models/best_model.h5')
# 🔹 Option 3: Load with config
model = DepressionPredictor(
model_path='models/best_model.h5',
config='config/production.yml'
)
# ✅ Verify model loaded
print(f"✅ Model loaded successfully!")
print(f"📦 Version: {model.version}")
print(f"🎯 Accuracy: {model. accuracy:.1%}")import pandas as pd
from tqdm import tqdm
# Load large dataset
data = pd.read_csv('large_dataset.csv')
print(f"📊 Processing {len(data)} samples...")
# Process in batches
batch_size = 100
results = []
for i in tqdm(range(0, len(data), batch_size)):
batch = data.iloc[i:i+batch_size]
predictions = model.predict(batch)
results.extend(predictions)
# Save results
output = pd.DataFrame({
'id': data['id'],
'prediction': results,
'timestamp': pd. Timestamp.now()
})
output.to_csv('predictions. csv', index=False)
print("✅ Results saved to predictions.csv")Output:
📊 Processing 10000 samples...
100%|████████████████████████| 100/100 [00:45<00:00, 2.21it/s]
✅ Results saved to predictions.csv
📖 Full Training Example
from depression_predictor import DepressionPredictor
from depression_predictor.data import load_dataset
from depression_predictor.callbacks import CustomCallback
# 1️⃣ Load training data
print("📥 Loading dataset...")
X_train, y_train = load_dataset('train')
X_test, y_test = load_dataset('test')
print(f"✅ Training samples: {len(X_train)}")
print(f"✅ Testing samples: {len(X_test)}")
# 2️⃣ Initialize model
model = DepressionPredictor()
# 3️⃣ Configure training
training_config = {
'epochs': 100,
'batch_size': 32,
'validation_split': 0.2,
'callbacks': [
'early_stopping',
'model_checkpoint',
'tensorboard'
]
}
# 4️⃣ Train model
print("🚀 Starting training...")
history = model.train(
X_train, y_train,
validation_data=(X_test, y_test),
**training_config
)
# 5️⃣ Evaluate
print("📊 Evaluating model...")
results = model.evaluate(X_test, y_test)
print(f"""
Training Complete! 🎉
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📈 Final Training Accuracy: {results['train_accuracy']:.2%}
📉 Final Training Loss: {results['train_loss']:.4f}
✅ Validation Accuracy: {results['val_accuracy']:. 2%}
📉 Validation Loss: {results['val_loss']:.4f}
🎯 Test Accuracy: {results['test_accuracy']:. 2%}
⏱️ Training Time: {results['training_time']}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
""")
# 6️⃣ Save model
model. save('models/my_custom_model.h5')
print("💾 Model saved successfully!")from depression_predictor.tuning import GridSearch, RandomSearch
# Define parameter grid
param_grid = {
'learning_rate': [0.001, 0.01, 0.1],
'batch_size': [16, 32, 64],
'dropout_rate': [0.2, 0.3, 0.4],
'hidden_units': [64, 128, 256]
}
# Option 1: Grid Search (exhaustive)
print("🔍 Running Grid Search...")
grid_search = GridSearch(param_grid)
best_params_grid = grid_search.fit(X_train, y_train)
# Option 2: Random Search (faster)
print("🎲 Running Random Search...")
random_search = RandomSearch(param_grid, n_iter=20)
best_params_random = random_search.fit(X_train, y_train)
# Display results
print(f"""
🏆 Best Parameters Found:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Learning Rate: {best_params_random['learning_rate']}
Batch Size: {best_params_random['batch_size']}
Dropout Rate: {best_params_random['dropout_rate']}
Hidden Units: {best_params_random['hidden_units']}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Best Accuracy: {random_search.best_score_:.2%}
""")
# Train final model with best params
final_model = DepressionPredictor(**best_params_random)
final_model.train(X_train, y_train)from depression_predictor.preprocessing import CustomPreprocessor
# Create custom preprocessor
preprocessor = CustomPreprocessor()
# Add custom transformations
preprocessor.add_transformation('age', lambda x: (x - 18) / 62) # Normalize age
preprocessor. add_transformation('sleep_hours', lambda x: np.clip(x, 0, 12)) # Clip outliers
# Custom feature engineering
def create_interaction_features(data):
"""Create custom interaction features"""
data['sleep_activity_interaction'] = data['sleep_hours'] * data['activity_level']
data['mood_energy_ratio'] = data['mood_score'] / (data['energy_level'] + 1)
return data
preprocessor.add_feature_engineer(create_interaction_features)
# Apply preprocessing
X_processed = preprocessor.fit_transform(X_raw)
# Use with model
model = DepressionPredictor(preprocessor=preprocessor)
model.train(X_processed, y_train)from depression_predictor.interpretation import FeatureImportance, SHAP
# 1️⃣ Feature Importance
fi = FeatureImportance(model)
importance_df = fi.calculate()
print("🔝 Top 10 Most Important Features:")
print(importance_df.head(10))
# 2️⃣ SHAP Values
shap_explainer = SHAP(model)
shap_values = shap_explainer.explain(X_test)
# Visualize
shap_explainer.plot_summary()
shap_explainer.plot_force(sample_index=0)
# 3️⃣ Individual Prediction Explanation
explanation = model.explain_prediction(sample)
print(f"""
🔍 Prediction Explanation:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Prediction: {explanation['prediction']}
Top Contributing Features:
1. {explanation['top_features'][0]['name']}: {explanation['top_features'][0]['contribution']}
2. {explanation['top_features'][1]['name']}: {explanation['top_features'][1]['contribution']}
3. {explanation['top_features'][2]['name']}: {explanation['top_features'][2]['contribution']}
""")|
Request: curl -X POST \
http://localhost:5000/api/v1/predict \
-H 'Content-Type: application/json' \
-d '{
"age": 28,
"gender": "female",
"sleep_hours": 5.5,
"mood_score": 3,
"energy_level": 2
}' |
Response: {
"status": "success",
"prediction": 1,
"probability": 0.763,
"confidence": "high",
"risk_level": "elevated",
"timestamp": "2025-12-29T10:30:00Z",
"model_version": "1.0. 0"
} |
curl -X POST \
http://localhost:5000/api/v1/batch-predict \
-H 'Content-Type: application/json' \
-d '{
"samples": [
{"age": 28, "sleep_hours": 5.5, ... },
{"age": 45, "sleep_hours": 7.0, ...},
{"age": 32, "sleep_hours": 6.0, ...}
]
}'Response:
{
"status": "success",
"total_samples": 3,
"predictions": [
{"id": 0, "prediction": 1, "probability": 0.763},
{"id": 1, "prediction": 0, "probability": 0.234},
{"id": 2, "prediction": 0, "probability": 0.412}
],
"processing_time_ms": 145
}curl http://localhost:5000/api/v1/model/infoResponse:
{
"model_name": "Advanced Depression Predictor",
"version": "1.0.0",
"accuracy": 0.892,
"auc": 0.920,
"f1_score": 0.864,
"last_trained": "2025-12-01T00:00:00Z",
"features_count": 50,
"total_parameters": 12789
}import requests
import json
class DepressionPredictorAPI:
"""Wrapper for Depression Predictor API"""
def __init__(self, base_url="http://localhost:5000/api/v1"):
self.base_url = base_url
def predict(self, sample):
"""Make a single prediction"""
response = requests.post(
f"{self.base_url}/predict",
json=sample
)
return response.json()
def batch_predict(self, samples):
"""Make batch predictions"""
response = requests.post(
f"{self.base_url}/batch-predict",
json={"samples": samples}
)
return response.json()
def get_model_info(self):
"""Get model information"""
response = requests.get(f"{self.base_url}/model/info")
return response.json()
# Usage
api = DepressionPredictorAPI()
# Single prediction
result = api.predict({
"age": 28,
"sleep_hours": 5.5,
# ... other features
})
print(f"Prediction: {result['prediction']}")
print(f"Probability: {result['probability']:.1%}")
# Batch prediction
results = api.batch_predict([sample1, sample2, sample3])
print(f"Processed {results['total_samples']} samples")from depression_predictor.visualization import (
plot_predictions,
plot_feature_importance,
plot_confusion_matrix,
plot_roc_curve
)
# 1️⃣ Prediction Distribution
plot_predictions(predictions, save_path='plots/predictions.png')
# 2️⃣ Feature Importance
plot_feature_importance(
model,
top_n=15,
save_path='plots/feature_importance.png'
)
# 3️⃣ Confusion Matrix
plot_confusion_matrix(
y_true=y_test,
y_pred=predictions,
save_path='plots/confusion_matrix.png'
)
# 4️⃣ ROC Curve
plot_roc_curve(
y_true=y_test,
y_score=probabilities,
save_path='plots/roc_curve.png'
)
# 5️⃣ Training History
from depression_predictor.visualization import plot_training_history
plot_training_history(
history,
metrics=['loss', 'accuracy', 'auc'],
save_path='plots/training_history.png'
)
|
|
# config/custom. yml
# Model Settings
model:
architecture: deep_neural_network
input_dim: 50
hidden_layers: [128, 64, 32]
dropout_rates: [0.3, 0.2, 0.0]
activation: relu
output_activation: sigmoid
# Training Settings
training:
optimizer: adam
learning_rate: 0.001
batch_size: 32
epochs: 100
validation_split: 0.2
class_weights: {0: 1.0, 1: 1.5}
# Callbacks
callbacks:
early_stopping:
enabled: true
patience: 10
monitor: val_loss
model_checkpoint:
enabled: true
filepath: models/checkpoints/model_{epoch: 02d}. h5
save_best_only: true
reduce_lr:
enabled: true
factor: 0.5
patience: 5
min_lr: 0.00001
# Data Settings
data:
train_path: data/train. csv
test_path: data/test.csv
features_config: config/features.json
# Preprocessing
preprocessing:
numerical:
missing_strategy: median
scaling: standard
outlier_method: iqr
categorical:
missing_strategy: mode
encoding: onehot
handle_unknown: ignore
# Output Settings
output:
save_predictions: true
output_dir: results/
log_level: INFO
verbose: 1Load Custom Config:
model = DepressionPredictor(config='config/custom.yml')❌ Error: "Invalid input shape"
Problem: Input data doesn't match expected feature count
Solution:
# Check expected features
print(f"Expected features: {model.feature_names}")
print(f"Your features: {list(your_data.columns)}")
# Ensure all features are present
missing_features = set(model.feature_names) - set(your_data.columns)
if missing_features:
print(f"Missing features: {missing_features}")❌ Error: "Model returns NaN predictions"
Problem: Invalid or extreme input values
Solution:
# Check for invalid values
print(your_data.describe())
print(your_data.isnull().sum())
# Clean data
your_data = your_data.dropna()
your_data = your_data.replace([np.inf, -np. inf], np.nan).dropna()⚠️ Warning: "Low prediction confidence"
Problem: Model unsure about prediction
Solution:
# Check confidence score
if result['confidence'] == 'low':
print("⚠️ Low confidence prediction")
print("Consider:")
print("- Collecting more features")
print("- Validating input data quality")
print("- Consulting domain expert")All examples are available in the repository:
examples/
├── 01_basic_prediction.py
├── 02_batch_processing.py
├── 03_model_training.py
├── 04_hyperparameter_tuning.py
├── 05_api_integration.py
├── 06_visualization.py
├── 07_custom_preprocessing.py
└── 08_model_interpretation.py
Run examples:
python examples/01_basic_prediction. py| Level | Next Topic | Time | |: -----:|------------|------| | 🟢 Beginner | API Reference | 15 min | | 🟡 Intermediate | Model Architecture | 20 min | | 🔴 Advanced | Performance Metrics | 25 min |