File size: 3,812 Bytes
8fcb2ad c8d3f65 8fcb2ad |
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 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
#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()
|