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()