|
|
import joblib |
|
|
import pandas as pd |
|
|
from flask import Flask, request, jsonify |
|
|
|
|
|
|
|
|
app = Flask("Introvert Extrovert Predictor") |
|
|
|
|
|
|
|
|
model = joblib.load("introvert_extrovert_predictor_v1_0.joblib") |
|
|
|
|
|
api_hit_counter = 0 |
|
|
|
|
|
|
|
|
@app.get("/") |
|
|
def home(): |
|
|
return "Welcome to the Introvert-Extrovert Prediction API!" |
|
|
|
|
|
@app.post("/v1/personality/predict") |
|
|
def predict_personality_single(): |
|
|
global api_hit_counter |
|
|
input_data = request.get_json() |
|
|
|
|
|
|
|
|
sample = { |
|
|
"Time_spent_Alone": input_data["Time_spent_Alone"], |
|
|
"Social_event_attendance": input_data["Social_event_attendance"], |
|
|
"Going_outside": input_data["Going_outside"], |
|
|
"Friends_circle_size": input_data["Friends_circle_size"], |
|
|
"Post_frequency": input_data["Post_frequency"], |
|
|
"Stage_fear": input_data["Stage_fear"], |
|
|
"Drained_after_socializing": input_data["Drained_after_socializing"] |
|
|
} |
|
|
|
|
|
|
|
|
input_df = pd.DataFrame([sample]) |
|
|
prediction = model.predict(input_df).tolist()[0] |
|
|
personality = "Extrovert" if prediction == 0 else "Introvert" |
|
|
|
|
|
|
|
|
api_hit_counter += 1 |
|
|
print(f"API hit count: {api_hit_counter}") |
|
|
|
|
|
return jsonify({'Predicted_Personality': personality}) |
|
|
|
|
|
@app.post("/v1/personality/predictbatch") |
|
|
def predict_personality_batch(): |
|
|
|
|
|
file = request.files['file'] |
|
|
|
|
|
|
|
|
input_df = pd.read_csv(file) |
|
|
|
|
|
|
|
|
input_df["Stage_fear"] = input_df["Stage_fear"].apply(lambda x: 1 if str(x).lower() == "yes" else 0) |
|
|
input_df["Drained_after_socializing"] = input_df["Drained_after_socializing"].apply(lambda x: 1 if str(x).lower() == "yes" else 0) |
|
|
|
|
|
|
|
|
predictions = model.predict(input_df).tolist() |
|
|
input_df["Predicted_Personality"] = ["Extrovert" if p == 0 else "Introvert" for p in predictions] |
|
|
|
|
|
|
|
|
result = input_df.to_dict(orient="records") |
|
|
return jsonify(result) |
|
|
|
|
|
|
|
|
if __name__ == '__main__': |
|
|
app.run(debug=True) |
|
|
|