Reaumur commited on
Commit
1de1d0e
·
verified ·
1 Parent(s): 42eab43

Upload 6 files

Browse files
Files changed (3) hide show
  1. app.py +34 -34
  2. prediction.py +152 -152
  3. requirements.txt +6 -7
app.py CHANGED
@@ -1,35 +1,35 @@
1
- import streamlit as st
2
- import numpy as np
3
- import pandas as pd
4
- import joblib
5
-
6
- from eda import eda_page
7
- from prediction import model_page
8
-
9
- #Load data
10
- data = pd.read_csv("fraud_test.csv")
11
-
12
- st.header('Milestone 2')
13
- st.write("""
14
- Created by Reski Hidayat - HCK015 """)
15
-
16
- st.write("This program is made to predict Credit Card Fraud using Model Classification.")
17
- st.write("Dataset `fraud_test`")
18
- data
19
-
20
- def main():
21
- # Define menu options
22
- menu_options = ["Data Analysis", "Model Prediction"]
23
-
24
- # Create sidebar menu
25
- selected_option = st.sidebar.radio("Menu", menu_options)
26
-
27
- # Display selected page
28
- if selected_option == "Data Analysis":
29
- eda_page()
30
- elif selected_option == "Model Prediction":
31
- model_page()
32
-
33
-
34
- if __name__ == "__main__":
35
  main()
 
1
+ import streamlit as st
2
+ import numpy as np
3
+ import pandas as pd
4
+ import joblib
5
+
6
+ from eda import eda_page
7
+ from prediction import model_page
8
+
9
+ #Load data
10
+ data = pd.read_csv("fraud_test.csv")
11
+
12
+ st.header('Milestone 2')
13
+ st.write("""
14
+ Created by Reski Hidayat - HCK015 """)
15
+
16
+ st.write("This program is made to predict Credit Card Fraud using Model Classification.")
17
+ st.write("Dataset `fraud_test`")
18
+ data
19
+
20
+ def main():
21
+ # Define menu options
22
+ menu_options = ["Data Analysis", "Model Prediction"]
23
+
24
+ # Create sidebar menu
25
+ selected_option = st.sidebar.radio("Menu", menu_options)
26
+
27
+ # Display selected page
28
+ if selected_option == "Data Analysis":
29
+ eda_page()
30
+ elif selected_option == "Model Prediction":
31
+ model_page()
32
+
33
+
34
+ if __name__ == "__main__":
35
  main()
prediction.py CHANGED
@@ -1,153 +1,153 @@
1
- import streamlit as st
2
- import numpy as np
3
- import pandas as pd
4
- import joblib
5
-
6
- # Library Random Data
7
- from scipy.stats import randint
8
-
9
- from datetime import datetime, timedelta
10
- from sklearn.utils import shuffle
11
-
12
- def model_page():
13
- st.title("Model Prediction of Credit Card Fault")
14
- st.write("The model predicts whether the customer's transaction is fraud or not")
15
- st.sidebar.header('User Input Features')
16
-
17
- input_data = user_input()
18
-
19
- st.subheader('User Input')
20
- st.write(input_data)
21
-
22
- # Load the model using a context manager to ensure the file is closed
23
- with open("XGB_best_model.pkl", "rb") as f:
24
- load_model = joblib.load(f)
25
-
26
- prediction = load_model.predict(input_data)
27
-
28
- if prediction == 1:
29
- prediction = 'The Transaction is Fraud'
30
- else:
31
- prediction = 'The Transaction is Legit'
32
-
33
- st.write('Based on user input, the model predicted: ')
34
- st.write(prediction)
35
-
36
- def user_input(num_rows=1):
37
- data = generate_data(num_rows)
38
- return data
39
-
40
- def generate_data(num_rows=555719):
41
- trans_date_trans_time = st.sidebar.date_input("Transaction Date", value=datetime.now(), min_value=datetime.now() - timedelta(days=365), max_value=datetime.now())
42
- trans_date_trans_time = [trans_date_trans_time for _ in range(num_rows)]
43
-
44
- cc_num = st.sidebar.number_input("Credit Card Number", value=500000, min_value=100000, max_value=999999)
45
- cc_num = [cc_num for _ in range(num_rows)]
46
-
47
- merchant = st.sidebar.selectbox("Merchant", ['Merchant1', 'Merchant2', 'Merchant3'])
48
- merchant = [merchant for _ in range(num_rows)]
49
-
50
- category = st.sidebar.selectbox("Category", ['Personal', 'Childcare', 'Food', 'Transportation'])
51
- category = [category for _ in range(num_rows)]
52
-
53
- amt = st.sidebar.number_input("Amount", value=500, min_value=0, max_value=1000)
54
- amt = [amt for _ in range(num_rows)]
55
-
56
- first = st.sidebar.text_input("First Name")
57
- first = [first for _ in range(num_rows)]
58
-
59
- last = st.sidebar.text_input("Last Name")
60
- last = [last for _ in range(num_rows)]
61
-
62
- gender = st.sidebar.selectbox("Gender", ['Male', 'Female'])
63
- gender = [gender for _ in range(num_rows)]
64
-
65
- street = st.sidebar.text_input("Street")
66
- street = [street for _ in range(num_rows)]
67
-
68
- city = st.sidebar.text_input("City")
69
- city = [city for _ in range(num_rows)]
70
-
71
- state = st.sidebar.selectbox("State", ['NY', 'CA', 'IL', 'TX'])
72
- state = [state for _ in range(num_rows)]
73
-
74
- zip_code = st.sidebar.text_input("Zip Code")
75
- zip_code = [zip_code for _ in range(num_rows)]
76
-
77
- lat = st.sidebar.number_input("Latitude", value=40.7128, min_value=-90., max_value=90.)
78
- lat = [lat for _ in range(num_rows)]
79
-
80
- long_ = st.sidebar.number_input("Longitude", value=-74.0060, min_value=-180., max_value=180.)
81
- long_ = [long_ for _ in range(num_rows)]
82
-
83
- city_pop = st.sidebar.number_input("City Population", value=10000, min_value=10000, max_value=1000000)
84
- city_pop = [city_pop for _ in range(num_rows)]
85
-
86
- job = st.sidebar.selectbox("Job", ['Software Engineer', 'Doctor', 'Lawyer', 'Teacher'])
87
- job = [job for _ in range(num_rows)]
88
-
89
- dob = st.sidebar.date_input("Date of Birth", value=datetime.now() - timedelta(days=365*70), min_value=datetime.now() - timedelta(days=365*100), max_value=datetime.now())
90
- dob = [dob for _ in range(num_rows)]
91
-
92
- trans_num = np.arange(1, num_rows + 1)
93
-
94
- unix_time = st.sidebar.number_input("Unix Time", value=int(datetime.now().timestamp()), min_value=0, max_value=int(datetime.now().timestamp()))
95
- unix_time = [unix_time for _ in range(num_rows)]
96
-
97
- merch_lat = st.sidebar.number_input("Merchant Latitude", value=40.7128, min_value=-90., max_value=90.)
98
- merch_lat = [merch_lat for _ in range(num_rows)]
99
-
100
- merch_long = st.sidebar.number_input("Merchant Longitude", value=-74.0060, min_value=-180., max_value=180.)
101
- merch_long = [merch_long for _ in range(num_rows)]
102
-
103
- age = st.sidebar.number_input("Age", value=30, min_value=18, max_value=80)
104
- age = [age for _ in range(num_rows)]
105
-
106
-
107
-
108
- data = {
109
- 'Trans_date_trans_time': trans_date_trans_time,
110
- 'Cc_num': cc_num,
111
- 'Merchant': merchant,
112
- 'Category': category,
113
- 'Amt': amt,
114
- 'First': first,
115
- 'Last': last,
116
- 'Gender': gender,
117
- 'Street': street,
118
- 'City': city,
119
- 'State': state,
120
- 'Zip': zip_code,
121
- 'Lat': lat,
122
- 'Long': long_,
123
- 'City_pop': city_pop,
124
- 'Job': job,
125
- 'Dob': dob,
126
- 'Trans_num': trans_num,
127
- 'Unix_time': unix_time,
128
- 'Merch_lat': merch_lat,
129
- 'Merch_long': merch_long,
130
- 'age': age,
131
- 'category': category,
132
- 'amt': amt,
133
- 'state': state,
134
- 'job': job
135
- }
136
-
137
- # Create a Pandas DataFrame
138
- df = pd.DataFrame(data)
139
-
140
- return df
141
-
142
- # def main():
143
- # st.title("Credit Card Transaction Data")
144
- # st.write("This app generates random credit card transaction data.")
145
-
146
- # num_rows = st.slider("Number of rows", 100, 100000, 555719)
147
-
148
- # df = generate_data(num_rows)
149
-
150
- # st.write(df)
151
-
152
- # if __name__ == "__main__":
153
  # main()
 
1
+ import streamlit as st
2
+ import numpy as np
3
+ import pandas as pd
4
+ import joblib
5
+
6
+ # Library Random Data
7
+ from scipy.stats import randint
8
+
9
+ from datetime import datetime, timedelta
10
+ from sklearn.utils import shuffle
11
+
12
+ def model_page():
13
+ st.title("Model Prediction of Credit Card Fault")
14
+ st.write("The model predicts whether the customer's transaction is fraud or not")
15
+ st.sidebar.header('User Input Features')
16
+
17
+ input_data = user_input()
18
+
19
+ st.subheader('User Input')
20
+ st.write(input_data)
21
+
22
+ # Load the model using a context manager to ensure the file is closed
23
+ with open("XGB_best_model.pkl", "rb") as f:
24
+ load_model = joblib.load(f)
25
+
26
+ prediction = load_model.predict(input_data)
27
+
28
+ if prediction == 1:
29
+ prediction = 'The Transaction is Fraud'
30
+ else:
31
+ prediction = 'The Transaction is Legit'
32
+
33
+ st.write('Based on user input, the model predicted: ')
34
+ st.write(prediction)
35
+
36
+ def user_input(num_rows=1):
37
+ data = generate_data(num_rows)
38
+ return data
39
+
40
+ def generate_data(num_rows=555719):
41
+ trans_date_trans_time = st.sidebar.date_input("Transaction Date", value=datetime.now(), min_value=datetime.now() - timedelta(days=365), max_value=datetime.now())
42
+ trans_date_trans_time = [trans_date_trans_time for _ in range(num_rows)]
43
+
44
+ cc_num = st.sidebar.number_input("Credit Card Number", value=500000, min_value=100000, max_value=999999)
45
+ cc_num = [cc_num for _ in range(num_rows)]
46
+
47
+ merchant = st.sidebar.selectbox("Merchant", ['Merchant1', 'Merchant2', 'Merchant3'])
48
+ merchant = [merchant for _ in range(num_rows)]
49
+
50
+ category = st.sidebar.selectbox("Category", ['Personal', 'Childcare', 'Food', 'Transportation'])
51
+ category = [category for _ in range(num_rows)]
52
+
53
+ amt = st.sidebar.number_input("Amount", value=500, min_value=0, max_value=100000)
54
+ amt = [amt for _ in range(num_rows)]
55
+
56
+ first = st.sidebar.text_input("First Name")
57
+ first = [first for _ in range(num_rows)]
58
+
59
+ last = st.sidebar.text_input("Last Name")
60
+ last = [last for _ in range(num_rows)]
61
+
62
+ gender = st.sidebar.selectbox("Gender", ['Male', 'Female'])
63
+ gender = [gender for _ in range(num_rows)]
64
+
65
+ street = st.sidebar.text_input("Street")
66
+ street = [street for _ in range(num_rows)]
67
+
68
+ city = st.sidebar.text_input("City")
69
+ city = [city for _ in range(num_rows)]
70
+
71
+ state = st.sidebar.selectbox("State", ['NY', 'CA', 'IL', 'TX'])
72
+ state = [state for _ in range(num_rows)]
73
+
74
+ zip_code = st.sidebar.text_input("Zip Code")
75
+ zip_code = [zip_code for _ in range(num_rows)]
76
+
77
+ lat = st.sidebar.number_input("Latitude", value=40.7128, min_value=-90., max_value=90.)
78
+ lat = [lat for _ in range(num_rows)]
79
+
80
+ long_ = st.sidebar.number_input("Longitude", value=-74.0060, min_value=-180., max_value=180.)
81
+ long_ = [long_ for _ in range(num_rows)]
82
+
83
+ city_pop = st.sidebar.number_input("City Population", value=10000, min_value=10000, max_value=1000000)
84
+ city_pop = [city_pop for _ in range(num_rows)]
85
+
86
+ job = st.sidebar.selectbox("Job", ['Software Engineer', 'Doctor', 'Lawyer', 'Teacher'])
87
+ job = [job for _ in range(num_rows)]
88
+
89
+ dob = st.sidebar.date_input("Date of Birth", value=datetime.now() - timedelta(days=365*70), min_value=datetime.now() - timedelta(days=365*100), max_value=datetime.now())
90
+ dob = [dob for _ in range(num_rows)]
91
+
92
+ trans_num = np.arange(1, num_rows + 1)
93
+
94
+ unix_time = st.sidebar.number_input("Unix Time", value=int(datetime.now().timestamp()), min_value=0, max_value=int(datetime.now().timestamp()))
95
+ unix_time = [unix_time for _ in range(num_rows)]
96
+
97
+ merch_lat = st.sidebar.number_input("Merchant Latitude", value=40.7128, min_value=-90., max_value=90.)
98
+ merch_lat = [merch_lat for _ in range(num_rows)]
99
+
100
+ merch_long = st.sidebar.number_input("Merchant Longitude", value=-74.0060, min_value=-180., max_value=180.)
101
+ merch_long = [merch_long for _ in range(num_rows)]
102
+
103
+ age = st.sidebar.number_input("Age", value=30, min_value=18, max_value=80)
104
+ age = [age for _ in range(num_rows)]
105
+
106
+
107
+
108
+ data = {
109
+ 'Trans_date_trans_time': trans_date_trans_time,
110
+ 'Cc_num': cc_num,
111
+ 'Merchant': merchant,
112
+ 'Category': category,
113
+ 'Amt': amt,
114
+ 'First': first,
115
+ 'Last': last,
116
+ 'Gender': gender,
117
+ 'Street': street,
118
+ 'City': city,
119
+ 'State': state,
120
+ 'Zip': zip_code,
121
+ 'Lat': lat,
122
+ 'Long': long_,
123
+ 'City_pop': city_pop,
124
+ 'Job': job,
125
+ 'Dob': dob,
126
+ 'Trans_num': trans_num,
127
+ 'Unix_time': unix_time,
128
+ 'Merch_lat': merch_lat,
129
+ 'Merch_long': merch_long,
130
+ 'age': age,
131
+ 'category': category,
132
+ 'amt': amt,
133
+ 'state': state,
134
+ 'job': job
135
+ }
136
+
137
+ # Create a Pandas DataFrame
138
+ df = pd.DataFrame(data)
139
+
140
+ return df
141
+
142
+ # def main():
143
+ # st.title("Credit Card Transaction Data")
144
+ # st.write("This app generates random credit card transaction data.")
145
+
146
+ # num_rows = st.slider("Number of rows", 100, 100000, 555719)
147
+
148
+ # df = generate_data(num_rows)
149
+
150
+ # st.write(df)
151
+
152
+ # if __name__ == "__main__":
153
  # main()
requirements.txt CHANGED
@@ -1,7 +1,6 @@
1
- scikit-learn
2
- pandas
3
- matplotlib
4
- joblib
5
- transformers
6
- seaborn
7
- numpy
 
1
+ scikit-learn
2
+ pandas
3
+ matplotlib
4
+ joblib
5
+ transformers
6
+ seaborn