Bhargavitippareddy's picture
Create app.py
b1b4e75 verified
Raw
History Blame Contribute Delete
1.94 kB
import streamlit as st
import pandas as pd
import joblib
import lightgbm as lgb
from geopy.distance import geodesic
model = joblib.load("fraud_detection_model.jb")
encoder = joblib.load("label_encoder.jb")
def haversine(lat1, lon1, lat2, lon2):
return geodesic((lat1, lon1),(lat2,lon2)).km
st.title("Fraud Detection System")
st.write("Enter the Transaction details Below")
merchant = st.text_input("Merchant Name")
category = st.text_input("Category")
amt = st.number_input("Transaction Amount", min_value=0.0, format="%.2f")
lat = st.number_input("Latitude",format="%.6f")
long = st.number_input("Longitude",format="%.6f")
merch_lat = st.number_input("Merchant Latitude",format="%.6f")
merch_long = st.number_input("Merchant Longitude",format="%.6f")
hour = st.slider("Transaction Hour",0,23,12)
day =st.slider("Transaction Day",1,31,15)
month = st.slider("Transaction MOnth",1,12,6)
gender = st.selectbox("Gender",["Male","Female"])
cc_num = st.text_input("Credit Card number")
distance = haversine(lat,long,merch_lat,merch_long)
if st.button("Check For Fraud"):
if merchant and category and cc_num:
input_data = pd.DataFrame([[merchant, category,amt,distance,hour,day,month,gender, cc_num]],
columns=['merchant','category','amt','distance','hour','day','month','gender','cc_num'])
categorical_col = ['merchant','category','gender']
for col in categorical_col:
try:
input_data[col] = encoder[col].transform(input_data[col])
except ValueError:
input_data[col]=-1
input_data['cc_num'] = input_data['cc_num'].apply(lambda x:hash(x) % (10 ** 2))
prediction = model.predict(input_data)[0]
result = "Fraudulant Transaction" if prediction == 1 else " Legitimate Transaction"
st.subheader(f"Prediction: {result}")
else:
st.error("Please Fill all required fields")