mnurbani commited on
Commit
4e775a5
·
verified ·
1 Parent(s): b86ad28

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +88 -85
app.py CHANGED
@@ -1,85 +1,88 @@
1
- import streamlit as st
2
- import pickle
3
- import pandas as pd
4
-
5
- # Load model from file
6
- model_path = 'model_rfbest_pipe_rfbest_pipe_rfbest_pipe_rf.pkl'
7
- with open(model_path, 'rb') as file:
8
- model = pickle.load(file)
9
-
10
- # Judul aplikasi
11
- st.title("Prediksi Churn Pelanggan")
12
-
13
- # Form untuk input data
14
- st.subheader("Masukkan Data Pelanggan")
15
-
16
- # Input data pelanggan
17
- gender = st.selectbox('Gender', ['Female', 'Male'])
18
- senior_citizen = st.selectbox('Senior Citizen', [0, 1])
19
- partner = st.selectbox('Partner', ['Yes', 'No'])
20
- dependents = st.selectbox('Dependents', ['Yes', 'No'])
21
- tenure = st.number_input('Tenure (bulan)', min_value=0, max_value=72, value=45)
22
- phone_service = st.selectbox('Phone Service', ['Yes', 'No'])
23
- multiple_lines = st.selectbox('Multiple Lines', ['Yes', 'No'])
24
- internet_service = st.selectbox('Internet Service', ['DSL', 'Fiber optic', 'No'])
25
- online_security = st.selectbox('Online Security', ['Yes', 'No'])
26
- online_backup = st.selectbox('Online Backup', ['Yes', 'No'])
27
- device_protection = st.selectbox('Device Protection', ['Yes', 'No'])
28
- tech_support = st.selectbox('Tech Support', ['Yes', 'No'])
29
- streaming_tv = st.selectbox('Streaming TV', ['Yes', 'No'])
30
- streaming_movies = st.selectbox('Streaming Movies', ['Yes', 'No'])
31
- contract = st.selectbox('Contract', ['Month-to-month', 'One year', 'Two year'])
32
- paperless_billing = st.selectbox('Paperless Billing', ['Yes', 'No'])
33
- payment_method = st.selectbox('Payment Method', ['Electronic check', 'Mailed check', 'Bank transfer (automatic)', 'Credit card (automatic)'])
34
- monthly_charges = st.number_input('Monthly Charges', min_value=0.0, value=70.35)
35
- total_charges = st.number_input('Total Charges', min_value=0.0, value=346.45)
36
-
37
- # Membuat DataFrame dari input
38
- data_baru = {
39
- 'gender': [gender],
40
- 'SeniorCitizen': [senior_citizen],
41
- 'Partner': [partner],
42
- 'Dependents': [dependents],
43
- 'tenure': [tenure],
44
- 'PhoneService': [phone_service],
45
- 'MultipleLines': [multiple_lines],
46
- 'InternetService': [internet_service],
47
- 'OnlineSecurity': [online_security],
48
- 'OnlineBackup': [online_backup],
49
- 'DeviceProtection': [device_protection],
50
- 'TechSupport': [tech_support],
51
- 'StreamingTV': [streaming_tv],
52
- 'StreamingMovies': [streaming_movies],
53
- 'Contract': [contract],
54
- 'PaperlessBilling': [paperless_billing],
55
- 'PaymentMethod': [payment_method],
56
- 'MonthlyCharges': [monthly_charges],
57
- 'TotalCharges': [total_charges]
58
- }
59
-
60
- df_baru = pd.DataFrame(data_baru)
61
-
62
- # Melakukan encoding pada data kategorikal
63
- categorical_columns = df_baru.select_dtypes(include=['object']).columns
64
- df_baru = pd.get_dummies(df_baru, columns=categorical_columns, drop_first=True)
65
-
66
- # Menampilkan data yang dimasukkan pengguna
67
- st.subheader("Data Pelanggan yang Dimasukkan:")
68
- st.write(df_baru)
69
-
70
- # Tombol untuk melakukan prediksi
71
- if st.button('Prediction'):
72
- # Prediksi churn
73
- prediksi = model.predict(df_baru)
74
-
75
- # Menampilkan hasil prediksi
76
- if prediksi[0] == 1:
77
- hasil = 'Yes'
78
- else:
79
- hasil = 'No'
80
-
81
- st.subheader(f"Hasil Prediksi Churn: {hasil}")
82
-
83
- # Probabilitas churn
84
- probabilitas = model.predict_proba(df_baru)[:, 1]
85
- st.subheader(f"Probabilitas Churn: {probabilitas[0]:.2f}")
 
 
 
 
1
+ import streamlit as st
2
+ import joblib
3
+ import pandas as pd
4
+
5
+ # Load model from file
6
+ model_path = 'joblibmodel_rfbest_pipe_rfbest_pipe_rfbest_pipe_rf.pkl'
7
+ with open(model_path, 'rb') as file:
8
+ model = joblib.load(file)
9
+
10
+ # model_path = 'joblibmodel_rfbest_pipe_rfbest_pipe_rfbest_pipe_rf.pkl'
11
+ # model = joblib.load(model_path)
12
+
13
+ # Judul aplikasi
14
+ st.title("Prediksi Churn Pelanggan")
15
+
16
+ # Form untuk input data
17
+ st.subheader("Masukkan Data Pelanggan")
18
+
19
+ # Input data pelanggan
20
+ gender = st.selectbox('Gender', ['Female', 'Male'])
21
+ senior_citizen = st.selectbox('Senior Citizen', [0, 1])
22
+ partner = st.selectbox('Partner', ['Yes', 'No'])
23
+ dependents = st.selectbox('Dependents', ['Yes', 'No'])
24
+ tenure = st.number_input('Tenure (bulan)', min_value=0, max_value=72, value=45)
25
+ phone_service = st.selectbox('Phone Service', ['Yes', 'No'])
26
+ multiple_lines = st.selectbox('Multiple Lines', ['Yes', 'No'])
27
+ internet_service = st.selectbox('Internet Service', ['DSL', 'Fiber optic', 'No'])
28
+ online_security = st.selectbox('Online Security', ['Yes', 'No'])
29
+ online_backup = st.selectbox('Online Backup', ['Yes', 'No'])
30
+ device_protection = st.selectbox('Device Protection', ['Yes', 'No'])
31
+ tech_support = st.selectbox('Tech Support', ['Yes', 'No'])
32
+ streaming_tv = st.selectbox('Streaming TV', ['Yes', 'No'])
33
+ streaming_movies = st.selectbox('Streaming Movies', ['Yes', 'No'])
34
+ contract = st.selectbox('Contract', ['Month-to-month', 'One year', 'Two year'])
35
+ paperless_billing = st.selectbox('Paperless Billing', ['Yes', 'No'])
36
+ payment_method = st.selectbox('Payment Method', ['Electronic check', 'Mailed check', 'Bank transfer (automatic)', 'Credit card (automatic)'])
37
+ monthly_charges = st.number_input('Monthly Charges', min_value=0.0, value=70.35)
38
+ total_charges = st.number_input('Total Charges', min_value=0.0, value=346.45)
39
+
40
+ # Membuat DataFrame dari input
41
+ data_baru = {
42
+ 'gender': [gender],
43
+ 'SeniorCitizen': [senior_citizen],
44
+ 'Partner': [partner],
45
+ 'Dependents': [dependents],
46
+ 'tenure': [tenure],
47
+ 'PhoneService': [phone_service],
48
+ 'MultipleLines': [multiple_lines],
49
+ 'InternetService': [internet_service],
50
+ 'OnlineSecurity': [online_security],
51
+ 'OnlineBackup': [online_backup],
52
+ 'DeviceProtection': [device_protection],
53
+ 'TechSupport': [tech_support],
54
+ 'StreamingTV': [streaming_tv],
55
+ 'StreamingMovies': [streaming_movies],
56
+ 'Contract': [contract],
57
+ 'PaperlessBilling': [paperless_billing],
58
+ 'PaymentMethod': [payment_method],
59
+ 'MonthlyCharges': [monthly_charges],
60
+ 'TotalCharges': [total_charges]
61
+ }
62
+
63
+ df_baru = pd.DataFrame(data_baru)
64
+
65
+ # Melakukan encoding pada data kategorikal
66
+ categorical_columns = df_baru.select_dtypes(include=['object']).columns
67
+ df_baru = pd.get_dummies(df_baru, columns=categorical_columns, drop_first=True)
68
+
69
+ # Menampilkan data yang dimasukkan pengguna
70
+ st.subheader("Data Pelanggan yang Dimasukkan:")
71
+ st.write(df_baru)
72
+
73
+ # Tombol untuk melakukan prediksi
74
+ if st.button('Prediction'):
75
+ # Prediksi churn
76
+ prediksi = model.predict(df_baru)
77
+
78
+ # Menampilkan hasil prediksi
79
+ if prediksi[0] == 1:
80
+ hasil = 'Yes'
81
+ else:
82
+ hasil = 'No'
83
+
84
+ st.subheader(f"Hasil Prediksi Churn: {hasil}")
85
+
86
+ # Probabilitas churn
87
+ probabilitas = model.predict_proba(df_baru)[:, 1]
88
+ st.subheader(f"Probabilitas Churn: {probabilitas[0]:.2f}")