File size: 2,640 Bytes
7402c4c 9d8ad21 7402c4c 9d8ad21 7402c4c 9d8ad21 7402c4c 9d8ad21 7402c4c 9d8ad21 7402c4c 9d8ad21 7402c4c 9d8ad21 7402c4c 9d8ad21 7402c4c 9d8ad21 7402c4c 9d8ad21 7402c4c 9d8ad21 28db544 7402c4c 9d8ad21 7402c4c 9d8ad21 7402c4c 9d8ad21 7402c4c 9d8ad21 7402c4c 9d8ad21 7402c4c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
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)
|