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)