Pushp123's picture
Update app.py
c8d3f65 verified
#1. Importing lib
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
import gradio as gr
#2. Data Preprocessing
df=pd.read_csv("creditcard.csv")
#Imbalance in the data
#Time to explain the data we are dealing with.
# Determine number of fraud cases in dataset
fraud = df[df['Class'] == 1]
valid = df[df['Class'] == 0]
outlierFraction = len(fraud)/float(len(valid))
# dividing the X and the Y from the dataset for dependent and independent variables
x = df.drop(["Class"], axis = 1)
y = df["Class"]
#3. Modelling part
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=0)
model=RandomForestClassifier()
model.fit(x_train,y_train)
model.fit(x_test,y_test)
x_predict=model.predict(x_train)
x_accuracy=accuracy_score(x_predict,y_train)
y_predict=model.predict(x_test)
y_accuracy=accuracy_score(y_predict,y_test)
#4. UI for Model
# Function to make predictions
def predict_transaction(
Time ,V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, Amount):
input_data = np.array([[Time,V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V26, V27, V28, Amount]])
prediction = model.predict(input_data)
if prediction[0] == 0:
return "Valid Transaction"
else:
return "Fraudulent Transaction"
# Create the Gradio interface
iface = gr.Interface(
fn=predict_transaction, # Function that makes predictions
inputs=[
gr.Slider(minimum=-0, maximum=6345, step=0.1, label="Time"),
gr.Slider(minimum=--11, maximum=2, step=0.1, label="V1"),
gr.Slider(minimum=-14, maximum=8, step=0.1, label="V2"),
gr.Slider(minimum=-11, maximum=5, step=0.1, label="V3"),
gr.Slider(minimum=-3, maximum=7, step=0.1, label="V4"),
gr.Slider(minimum=-31, maximum=11, step=0.1, label="V5"),
gr.Slider(minimum=-6, maximum=22, step=0.1, label="V6"),
gr.Slider(minimum=-11, maximum=35, step=0.1, label="V7"),
gr.Slider(minimum=-22, maximum=4, step=0.1, label="V8"),
gr.Slider(minimum=-2, maximum=10, step=0.1, label="V9"),
gr.Slider(minimum=-5, maximum=12, step=0.1, label="V10"),
gr.Slider(minimum=-1, maximum=5, step=0.1, label="V11"),
gr.Slider(minimum=-5, maximum=4, step=0.1, label="V12"),
gr.Slider(minimum=-2, maximum=4, step=0.1, label="V13"),
gr.Slider(minimum=-5, maximum=6, step=0.1, label="V14"),
gr.Slider(minimum=-3, maximum=4, step=0.1, label="V15"),
gr.Slider(minimum=-3, maximum=5, step=0.1, label="V16"),
gr.Slider(minimum=-4, maximum=5, step=0.1, label="V17"),
gr.Slider(minimum=-2, maximum=3, step=0.1, label="V18"),
gr.Slider(minimum=-3, maximum=4, step=0.1, label="V19"),
gr.Slider(minimum=-10, maximum=8, step=0.1, label="V20"),
gr.Slider(minimum=-10, maximum=23, step=0.1, label="V21"),
gr.Slider(minimum=-7, maximum=5, step=0.1, label="V22"),
gr.Slider(minimum=-6, maximum=5, step=0.1, label="V23"),
gr.Slider(minimum=-1, maximum=4, step=0.1, label="V24"),
gr.Slider(minimum=-1, maximum=2, step=0.1, label="V25"),
gr.Slider(minimum=-1, maximum=4, step=0.1, label="V26"),
gr.Slider(minimum=-6, maximum=4, step=0.1, label="V27"),
gr.Slider(minimum=-2, maximum=5, step=0.1, label="V28"),
gr.Slider(minimum=0, maximum=7712, step=0.1, label="Amount")
], # Input fields for the features of the transaction
outputs="text" # Output the prediction result (Valid or Fraudulent)
)
# Launch the Gradio UI
iface.launch()