HSSHETTY01's picture
Update backend app.py with corrected endpoint and syntax
7402c4c verified
Raw History Blame Contribute Delete
2.64 kB
import numpy as np
import pandas as pd
import joblib
from flask import Flask, request, jsonify
from flask_cors import CORS
# Initialize Flask app
Extraa_Learn_api = Flask("Extraa_Learn_api")
CORS(Extraa_Learn_api)
# Load the trained model pipeline (preprocessing + model)
model = joblib.load("/content/drive/My Drive/Colab Notebooks/deployment_files/Extraa_Learn_model_v1_0.joblib")
# Health check route
@Extraa_Learn_api.get('/')
def home():
return "✅ Welcome to the Extraa-Learn_API"
# Prediction route
@Extraa_Learn_api.post('/v1/status')
def predict_status():
try:
# Parse JSON payload
data = request.get_json()
print("Raw incoming data:", data)
# Validate expected fields
required_fields = [
'age',
'current_occupation',
'first_interaction',
'profile_completed',
'website_visits',
'time_spent_on_website',
'page_views_per_visit',
'last_activity',
'print_media_type1',
'print_media_type2',
'digital_media',
'educational_channels',
'referral'
]
missing_fields = [f for f in required_fields if f not in data]
if missing_fields:
return jsonify({'error': f"Missing fields: {missing_fields}"}), 400
# Convert and transform input
sample = {
'age': float(data['age']),
'current_occupation': data['current_occupation'],
'first_interaction': data['first_interaction'],
'profile_completed': data['profile_completed'],
'website_visits': data['website_visits'],
'time_spent_on_website': ['time_spent_on_website']),
'page_views_per_visit': data['page_views_per_visit'],
'last_activity': data['last_activity'],
'print_media_type1': data['print_media_type1'],
'print_media_type2': data['print_media_type2']),
'digital_media': data['digital_media'],
'educational_channels': data['educational_channels'],
'referral': data['referral']
}
input_df = pd.DataFrame([sample])
print("Transformed input for model:
", input_df)
# Make prediction
prediction = model.predict(input_df).tolist()[0]
return jsonify({'Status': prediction})
except Exception as e:
print("❌ Error during prediction:", str(e))
return jsonify({'error': f"Prediction failed: {str(e)}"}), 500
# Run the app (for local testing only)
if __name__ == '__main__':
Extraa_Learn_api.run(debug=True)