William14045
commited on
Commit
•
7783824
1
Parent(s):
e3fd3c7
uploading requirement for modelling
Browse files- app.py +10 -0
- function.py +32 -0
- model_RF_under.joblib +3 -0
- predict.py +58 -0
- requirements.txt +8 -0
app.py
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import eda
|
3 |
+
import predict
|
4 |
+
|
5 |
+
navigation = st.sidebar.selectbox('pilih halaman :', ('EDA',"Prediction"))
|
6 |
+
|
7 |
+
if navigation =='EDA':
|
8 |
+
eda.run()
|
9 |
+
else:
|
10 |
+
predict.run()
|
function.py
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Fungsi untuk mengganti nama kota menjadi tier
|
2 |
+
def map_to_tier(city):
|
3 |
+
if city in ['Ahmedabad', 'Bengaluru', 'Chennai', 'Delhi', 'Hyderabad', 'Kolkata', 'Mumbai', 'Pune']:
|
4 |
+
return 'Tier 1'
|
5 |
+
elif city in ['Agra', 'Ajmer', 'Aligarh', 'Amravati', 'Amritsar', 'Anand', 'Asansol', 'Aurangabad', 'Bareilly', 'Belagavi',
|
6 |
+
'Brahmapur', 'Bhavnagar', 'Bhiwandi', 'Bhopal', 'Bhubaneswar', 'Bikaner', 'Bilaspur','Bokaro',
|
7 |
+
'Burdwan' , 'Chandigarh', 'Coimbatore', 'Cuttack', 'Dahod', 'Dehradun', 'Dombivli', 'Dhanbad', 'Bhilai',
|
8 |
+
'Durgapur', 'Erode', 'Faridabad', 'Ghaziabad', 'Gorakhpur', 'Guntur', 'Gurgaon', 'Guwahati', 'Gwalior', 'Hamirpur',
|
9 |
+
'Hubballi-Dharwad', 'Indore', 'Jabalpur', 'Jaipur', 'Jalandhar', 'Jalgaon', 'Jammu','Jamshedpur', 'Jhansi', 'Jodhpur',
|
10 |
+
'Kalaburagi', 'Kakinada', 'Kannur', 'Kanpur', 'Karnal', 'Kochi', 'Kolhapur', 'Kollam', 'Kozhikode', 'Kurnool', 'Ludhiana',
|
11 |
+
'Lucknow', 'Madurai', 'Malappuram', 'Mathura', 'Mangaluru', 'Meerut', 'Moradabad', 'Mysuru', 'Nagpur', 'Nanded', 'Nadiad',
|
12 |
+
'Nashik', 'Nellore', 'Noida', 'Patna', 'Puducherry', 'Purulia', 'Prayagraj', 'Raipur', 'Rajkot', 'Rajamahendravaram',
|
13 |
+
'Ranchi', 'Rourkela', 'Ratlam', 'Salem', 'Sangli', 'Shimla', 'Siliguri', 'Solapur', 'Srinagar', 'Surat', 'Thanjavur',
|
14 |
+
'Thiruvananthapuram', 'Thrissur', 'Tiruchirappalli', 'Tirunelveli', 'Tiruvannamalai', 'Ujjain', 'Vijayapura',
|
15 |
+
'Vadodara', 'Varanasi', 'Vasai-Virar', 'Vijayawada', 'Visakhapatnam', 'Vellore','Warangal']:
|
16 |
+
return 'Tier 2'
|
17 |
+
else:
|
18 |
+
return 'Tier 3'
|
19 |
+
|
20 |
+
|
21 |
+
# Fungsi untuk menggolongkan negara bagian berdasarkan wilayah
|
22 |
+
def classify_region(state):
|
23 |
+
if state in ['Haryana', 'Himachal_Pradesh', 'Jharkhand', 'Punjab', 'Uttar_Pradesh','Uttar_Pradesh[5]', 'Uttarakhand','Jammu_and_Kashmir','Delhi','Chandigarh']:
|
24 |
+
return 'North'
|
25 |
+
elif state in ['Andhra_Pradesh', 'Karnataka', 'Kerala', 'Tamil_Nadu', 'Telangana']:
|
26 |
+
return 'South'
|
27 |
+
elif state in ['Goa', 'Gujarat', 'Maharashtra', 'Rajasthan','Madhya_Pradesh']:
|
28 |
+
return 'West'
|
29 |
+
elif state in ['Arunachal Pradesh', 'Assam', 'Bihar', 'Chhattisgarh', 'Manipur', 'Meghalaya', 'Mizoram', 'Nagaland', 'Odisha', 'Sikkim', 'Tripura', 'West_Bengal','Puducherry']:
|
30 |
+
return 'East'
|
31 |
+
else:
|
32 |
+
return 'East'
|
model_RF_under.joblib
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:5958c757819b1e7b251021a0c218e8c25afa93ae3e16dbdab52d3fa953ac5fef
|
3 |
+
size 97973337
|
predict.py
ADDED
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import pandas as pd
|
3 |
+
import numpy as np
|
4 |
+
from joblib import load
|
5 |
+
import function
|
6 |
+
|
7 |
+
|
8 |
+
# Load All Files
|
9 |
+
# Muat model menggunakan joblib
|
10 |
+
loaded_model_RF = load('model_RF_under.joblib')
|
11 |
+
preproc = load('preprocessor.joblib')
|
12 |
+
|
13 |
+
|
14 |
+
def run():
|
15 |
+
with st.form('key=loan_default_prediction'):
|
16 |
+
Income = st.slider('Income', 10000,10000000,1000000)
|
17 |
+
Age = st.number_input('Age', min_value=20, max_value=80, value=30, step=1)
|
18 |
+
Experience = st.slider('Experience', 0, 20, 5)
|
19 |
+
Married_Single = st.radio('Married/Single', ('single','married'), index=1)
|
20 |
+
st.markdown('---')
|
21 |
+
|
22 |
+
House_Ownership = st.radio('House_Ownership',('rented','norent_noown','owned'), index=1)
|
23 |
+
Car_Ownership = st.selectbox('Car_Ownership', ('no','yes'), index=0)
|
24 |
+
Profession = st.text_input('Profession','')
|
25 |
+
CITY = st.selectbox('CITY', ('Rewa','Parbhani','Alappuzha','Bhubaneswar','Tiruchirappalli[10]','Jalgaon','Tiruppur','Jamnagar','Kota[6]','Karimnagar','Hajipur[31]','Adoni','Erode[17]','Kollam','Madurai','Anantapuram[24]','Kamarhati','Bhusawal','Sirsa','Amaravati','Secunderabad','Ahmedabad','Ajmer','Ongole','Miryalaguda','Ambattur','Indore','Pondicherry','Shimoga','Chennai','Gulbarga','Khammam','Saharanpur','Gopalpur','Amravati','Udupi','Howrah','Aurangabad[39]','Hospet','Shimla','Khandwa','Bidhannagar','Bellary','Danapur','Purnia[26]','Bijapur','Patiala','Malda','Sagar','Durgapur','Junagadh','Singrauli','Agartala','Thanjavur','Hindupur','Naihati','North_Dumdum','Panchkula','Anantapur','Serampore','Bathinda','Nadiad','Kanpur','Haridwar','Berhampur','Jamshedpur','Hyderabad','Bidar','Kottayam','Solapur','Suryapet','Aizawl','Asansol','Deoghar','Eluru[25]','Ulhasnagar','Aligarh','South_Dumdum','Berhampore','Gandhinagar','Sonipat','Muzaffarpur','Raichur','Rajpur_Sonarpur','Ambarnath','Katihar','Kozhikode','Vellore','Malegaon','Kochi','Nagaon','Nagpur','Srinagar','Davanagere','Bhagalpur','Siwan[32]','Meerut','Dindigul','Bhatpara','Ghaziabad','Kulti','Chapra','Dibrugarh','Panihati','Bhiwandi','Morbi','Kalyan-Dombivli','Gorakhpur','Panvel','Siliguri','Bongaigaon','Patna','Ramgarh','Ozhukarai','Mirzapur','Akola','Satna','Motihari[34]','Jalna','Jalandhar','Unnao','Karnal','Cuttack','Proddatur','Ichalkaranji','Warangal[11][12]','Jhansi','Bulandshahr','Narasaraopet','Chinsurah','Jehanabad[38]','Dhanbad','Gudivada','Gandhidham','Raiganj','Kishanganj[35]','Varanasi','Belgaum','Tirupati[21][22]','Tumkur','Coimbatore','Kurnool[18]','Gurgaon','Muzaffarnagar','Aurangabad','Bhavnagar','Arrah','Munger','Tirunelveli','Mumbai','Mango','Nashik','Kadapa[23]','Amritsar','Khora,_Ghaziabad','Ambala','Agra','Ratlam','Surendranagar_Dudhrej','Delhi_city','Bhopal','Hapur','Rohtak','Durg','Korba','Bangalore','Shivpuri','Thrissur','Vijayanagaram','Farrukhabad','Nangloi_Jat','Madanapalle','Thoothukudi','Nagercoil','Gaya','Chandigarh_city','Jammu[16]','Kakinada','Dewas','Bhalswa_Jahangir_Pur','Baranagar','Firozabad','Phusro','Allahabad','Guna','Thane','Etawah','Vasai-Virar','Pallavaram','Morena','Ballia','Surat','Burhanpur','Phagwara','Mau','Mangalore','Alwar','Mahbubnagar','Maheshtala','Hazaribagh','Bihar_Sharif','Faridabad','Lucknow','Tenali','Barasat','Amroha','Giridih','Begusarai','Medininagar','Rajahmundry[19][20]','Saharsa[29]','New_Delhi','Bhilai','Moradabad','Machilipatnam','Mira-Bhayandar','Pali','Navi_Mumbai','Mehsana','Imphal','Kolkata','Sambalpur','Ujjain','Madhyamgram','Jabalpur','Jamalpur[36]','Ludhiana','Bareilly','Gangtok','Anand','Dehradun','Pune','Satara','Srikakulam','Raipur','Jodhpur','Darbhanga','Nizamabad','Nandyal','Dehri[30]','Jorhat','Ranchi','Kumbakonam','Guntakal','Haldia','Loni','Pimpri-Chinchwad','Rajkot','Nanded','Noida','Kirari_Suleman_Nagar','Jaunpur','Bilaspur','Sambhal','Dhule','Rourkela','Thiruvananthapuram','Dharmavaram','Nellore[14][15]','Visakhapatnam[4]','Karawal_Nagar','Jaipur','Avadi','Bhimavaram','Bardhaman','Silchar','Buxar[37]','Kavali','Tezpur','Ramagundam[27]','Yamunanagar','Sri_Ganganagar','Sasaram[30]','Sikar','Bally','Bhiwani','Rampur','Uluberia','Sangli-Miraj_&_Kupwad','Hosur','Bikaner','Shahjahanpur','Sultan_Pur_Majra','Vijayawada','Bharatpur','Tadepalligudem','Tinsukia','Salem','Mathura','Guntur[13]','Hubli–Dharwad','Guwahati','Chittoor[28]','Tiruvottiyur','Vadodara','Ahmednagar','Fatehpur','Bhilwara','Kharagpur','Bettiah[33]','Bhind','Bokaro','Karaikudi','Raebareli','Pudukkottai','Udaipur','Mysore[7][8][9]','Panipat','Latur','Tadipatri','Bahraich','Orai','Raurkela_Industrial_Township','Gwalior','Katni','Chandrapur','Kolhapur'), index=1)
|
26 |
+
STATE = st.selectbox('STATE',('Madhya_Pradesh','Maharashtra','Kerala','Odisha','Tamil_Nadu','Gujarat','Rajasthan','Telangana','Bihar','Andhra_Pradesh','West_Bengal','Haryana','Puducherry','Karnataka','Uttar_Pradesh','Himachal_Pradesh','Punjab','Tripura','Uttarakhand','Jharkhand','Mizoram','Assam','Jammu_and_Kashmir','Delhi','Chhattisgarh','Chandigarh','Uttar_Pradesh[5]','Manipur','Sikkim'),index=1)
|
27 |
+
CURRENT_JOB_YRS = st.slider('CURRENT_JOB_YRS',0,15,5)
|
28 |
+
CURRENT_HOUSE_YRS = st.slider('CURRENT_HOUSE_YRS', 10,15,12)
|
29 |
+
submitted = st.form_submit_button('Predict')
|
30 |
+
|
31 |
+
data_inf = {
|
32 |
+
'Income': Income,
|
33 |
+
'Age': Age,
|
34 |
+
'Experience': Experience,
|
35 |
+
'Married/Single': Married_Single,
|
36 |
+
'House_Ownership': House_Ownership,
|
37 |
+
'Profession': Profession,
|
38 |
+
'Car_Ownership': Car_Ownership,
|
39 |
+
'CITY': CITY,
|
40 |
+
'STATE': STATE,
|
41 |
+
'CURRENT_JOB_YRS': CURRENT_JOB_YRS,
|
42 |
+
'CURRENT_HOUSE_YRS': CURRENT_HOUSE_YRS,
|
43 |
+
}
|
44 |
+
|
45 |
+
data_inf = pd.DataFrame([data_inf])
|
46 |
+
data_inf['CITY'] = data_inf['CITY'].apply(lambda x: function.map_to_tier(x))
|
47 |
+
data_inf['STATE'] = data_inf['STATE'].apply(lambda x: function.classify_region(x))
|
48 |
+
final_df_inf = preproc.transform(data_inf)
|
49 |
+
final_df_inf
|
50 |
+
|
51 |
+
if submitted:
|
52 |
+
y_pred_inf = loaded_model_RF.predict(final_df_inf)
|
53 |
+
y_pred_inf = np.where(y_pred_inf >= 0.5 , 'Default' , 'Not Default')
|
54 |
+
st.write('Customer will be : ', str(y_pred_inf))
|
55 |
+
|
56 |
+
|
57 |
+
if __name__ == '__main__':
|
58 |
+
run()
|
requirements.txt
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
streamlit
|
2 |
+
pandas
|
3 |
+
seaborn
|
4 |
+
matplotlib
|
5 |
+
plotly
|
6 |
+
Pillow
|
7 |
+
numpy
|
8 |
+
scikit-learn==1.2.2
|