import gradio as gradio import joblib as joblib import pip # pip install gradio # pip install joblib # pip install xgboost # pip install scikit-learn import joblib import numpy as np import gradio as gr # Load the XGBoost model xgboost_model = joblib.load('/Users/rak/PycharmProject/Credit_Card_Fraud_Model/xgboost_model_new.pkl') # Load the StandardScaler scaler = joblib.load('/Users/rak/PycharmProject/Credit_Card_Fraud_Model/scaler.pkl') month_to_number = { "January": 1, "February": 2, "March": 3, "April": 4, "May": 5, "June": 6, "July": 7, "August": 8, "September": 9, "October": 10, "November": 11, "December": 12, } def time_of_dayy(hour): if 6 <= hour < 12: return 'Morning' elif 12 <= hour < 18: return 'Afternoon' elif 18 <= hour < 24: return 'Evening' else: return 'Night' # Define category options category_options = [ 'Food/Dining', 'Gas/Transport', 'Online Grocery', 'In-Person Grocery', 'Health/Fitness', 'Home', 'Kids/Pets', 'Miscellaneous Online', 'Miscellaneous In-Person', 'Personal Care', 'Shopping Online', 'Shopping In-Person', 'Travel' ] def predict_credit_card_fraud(amount, city_pop, month, hour, age, gender, category): # Map the input month name to its corresponding number month = month_to_number[month] time_of_day = time_of_dayy(hour) # Prepare input data with dummy variables for category input_data = np.array([[amount, city_pop, month, hour, age, int(gender == 'M'), int(time_of_day == 'Night'), int(time_of_day == 'Evening'), int(time_of_day == 'Morning')] + [int(category == cat) for cat in category_options]]) # Scale the input data using the loaded StandardScaler input_data[:, 0:2] = scaler.transform(input_data[:, 0:2]) # Use predict_proba to get probability scores for class 1 probability = xgboost_model.predict_proba(input_data)[:, 1] # Return the probability score return round(probability[0], 2) gender_options = ["M", "F"] months = list(month_to_number.keys()) iface = gr.Interface(fn=predict_credit_card_fraud, inputs=[ gr.Number(label="Amount", info="Enter the Amount of the Transaction in Dollars"), gr.Number(label="City Population", info="Enter the City Population"), gr.Dropdown( months, label="Month", info="Select the month of the transaction" ), gr.Slider(label="Hour", info="Enter the Hour in which the Transaction Occurred", minimum=0, maximum=23, step=1), gr.Slider(label="Age", minimum=10, maximum=100, step=1), gr.Radio(label="Gender", choices=gender_options), gr.Dropdown( category_options, label="Category", info="Select the Category of Purchase" ) ], outputs="text") if __name__ == "__main__": iface.launch(share=True)