bilqisinayah commited on
Commit
25153c7
·
1 Parent(s): 34c42cb

Upload 8 files

Browse files
Files changed (6) hide show
  1. Procfile +1 -0
  2. app.py +132 -0
  3. breast_cancer.csv +0 -0
  4. breast_clf.pkl +3 -0
  5. requirements.txt +6 -0
  6. setup.sh +13 -0
Procfile ADDED
@@ -0,0 +1 @@
 
 
1
+ web: sh setup.sh && streamlit run app.py
app.py ADDED
@@ -0,0 +1,132 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ import numpy as np
4
+ import pickle
5
+ import base64
6
+ import seaborn as sns
7
+ import matplotlib.pyplot as plt
8
+
9
+ st.write("""
10
+ # Breast Cancer Prediction App
11
+
12
+
13
+ Kanker payudara adalah kanker paling umum di kalangan wanita di dunia. Ini menyumbang 25% dari semua kasus kanker, dan mempengaruhi lebih dari 2,1 Juta orang pada tahun 2015 saja. Ini dimulai ketika sel-sel di payudara mulai tumbuh di luar kendali. Sel-sel ini biasanya membentuk tumor yang dapat dilihat melalui sinar-X atau dirasakan sebagai benjolan di area payudara.
14
+
15
+ Tantangan utama untuk mendeteksinya adalah bagaimana mengklasifikasikan tumor menjadi ganas (kanker) atau jinak (non kanker).
16
+ """)
17
+
18
+ url_dataset = f'<a href="breast_cancer.csv">Download Dataset CSV File</a>'
19
+ st.markdown(url_dataset, unsafe_allow_html=True)
20
+
21
+ def user_input_features() :
22
+ radius_mean = st.sidebar.slider('radius_mean', 6.981,28.11)
23
+ texture_mean = st.sidebar.slider('texture_mean', 9.71,39.28)
24
+ perimeter_mean = st.sidebar.slider('perimeter_mean', 43.79,188.5)
25
+ area_mean = st.sidebar.slider('area_mean', 143.5,2501.0)
26
+ smoothness_mean = st.sidebar.slider('smoothness_mean', 0.05263,0.1634)
27
+ compactness_mean = st.sidebar.slider('compactness_mean', 0.01938,0.3454)
28
+ concavity_mean = st.sidebar.slider('concavity_mean', 0.0,4268.0)
29
+ concave_points_mean = st.sidebar.slider('concave_points_mean', 0.0,0.2012)
30
+ symmetry_mean = st.sidebar.slider('symmetry_mean', 0.106,0.304)
31
+ fractal_dimension_mean = st.sidebar.slider('fractal_dimension_mean', 0.04996,0.09744)
32
+ radius_se = st.sidebar.slider('radius_se', 0.1115,2.873)
33
+ texture_se = st.sidebar.slider('texture_se', 0.3602,4.885)
34
+ perimeter_se = st.sidebar.slider('perimeter_se', 0.757,21.98)
35
+ area_se = st.sidebar.slider('area_se', 6.802,542.2)
36
+ smoothness_se = st.sidebar.slider('smoothness_se', 0.001713,0.03113)
37
+ compactness_se = st.sidebar.slider('compactness_se', 0.002252,0.1354)
38
+ concavity_se = st.sidebar.slider('concavity_se', 0.0,0.396)
39
+ concave_points_se = st.sidebar.slider('concave_points_se', 0.0,0.05279)
40
+ symmetry_se = st.sidebar.slider('symmetry_se', 0.007882,0.07895)
41
+ fractal_dimension_se = st.sidebar.slider('fractal_dimension_se', 0.000895,0.02984)
42
+ radius_worst = st.sidebar.slider('radius_worst', 7.93,36.04)
43
+ texture_worst = st.sidebar.slider('texture_worst', 12.02,49.54)
44
+ radius_worst = st.sidebar.slider('radius_worst', 0.1115,2.873)
45
+ perimeter_worst = st.sidebar.slider('perimeter_worst', 50.41,251.2)
46
+ area_worst = st.sidebar.slider('area_worst', 185.2,4254.0)
47
+ smoothness_worst = st.sidebar.slider('smoothness_worst', 0.07117,0.2226)
48
+ compactness_worst = st.sidebar.slider('compactness_worst', 0.02729,1.058)
49
+ concavity_worst = st.sidebar.slider('concavity_worst', 0.0,1.252)
50
+ concave_points_worst = st.sidebar.slider('concave_points_worst', 0.0,0.291)
51
+ symmetry_worst = st.sidebar.slider('symmetry_worst', 0.1565,0.6638)
52
+ fractal_dimension_worst = st.sidebar.slider('fractal_dimension_worst', 0.1565,0.2075)
53
+
54
+
55
+ data = {'radius_mean':[radius_mean],
56
+ 'texture_mean':[texture_mean],
57
+ 'radius_mean':[radius_mean],
58
+ 'perimeter_mean':[perimeter_mean],
59
+ 'radius_mean':[radius_mean],
60
+ 'area_mean':[area_mean],
61
+ 'smoothness_mean':[smoothness_mean],
62
+ 'compactness_mean':[compactness_mean],
63
+ 'concavity_mean':[concavity_mean],
64
+ 'concave_points_mean':[concave_points_mean],
65
+ 'symmetry_mean':[symmetry_mean],
66
+ 'fractal_dimension_mean':[fractal_dimension_mean],
67
+ 'radius_se':[radius_se],
68
+ 'texture_se':[texture_se],
69
+ 'perimeter_se':[perimeter_se],
70
+ 'area_se':[area_se],
71
+ 'smoothness_se':[smoothness_se],
72
+ 'compactness_se':[compactness_se],
73
+ 'concavity_se':[concavity_se],
74
+ 'concave_points_se':[concave_points_se],
75
+ 'symmetry_se':[symmetry_se],
76
+ 'fractal_dimension_se':[fractal_dimension_se],
77
+ 'fractal_dimension_se':[fractal_dimension_se],
78
+ 'radius_worst':[radius_worst],
79
+ 'texture_worst':[texture_worst],
80
+ 'perimeter_worst':[perimeter_worst],
81
+ 'area_worst':[area_worst],
82
+ 'smoothness_worst':[smoothness_worst],
83
+ 'compactness_worst':[compactness_worst],
84
+ 'concavity_worst':[concavity_worst],
85
+ 'concave_points_worst':[concave_points_worst],
86
+ 'symmetry_worst':[symmetry_worst],
87
+ 'fractal_dimension_worst':[fractal_dimension_worst]
88
+ }
89
+
90
+ features = pd.DataFrame(data)
91
+ return features
92
+
93
+ input_df = user_input_features()
94
+
95
+
96
+ breast_raw = pd.read_csv('breast_cancer.csv')
97
+ breast_raw.fillna(0, inplace=True)
98
+ breast = breast_raw.drop(columns=['diagnosis'])
99
+ df = pd.concat([input_df,breast],axis=0)
100
+
101
+ df = df[:1] # Selects only the first row (the user input data)
102
+ df.fillna(0, inplace=True)
103
+
104
+ features = ['radius_mean', 'texture_mean', 'perimeter_mean',
105
+ 'area_mean', 'smoothness_mean', 'compactness_mean', 'concavity_mean',
106
+ 'concave points_mean', 'symmetry_mean', 'fractal_dimension_mean',
107
+ 'radius_se', 'texture_se', 'perimeter_se', 'area_se', 'smoothness_se',
108
+ 'compactness_se', 'concavity_se', 'concave points_se', 'symmetry_se',
109
+ 'fractal_dimension_se', 'radius_worst', 'texture_worst',
110
+ 'perimeter_worst', 'area_worst', 'smoothness_worst',
111
+ 'compactness_worst', 'concavity_worst', 'concave points_worst',
112
+ 'symmetry_worst', 'fractal_dimension_worst']
113
+
114
+ df = df[features]
115
+
116
+
117
+ st.subheader('User Input features')
118
+ st.write(df)
119
+
120
+ load_clf = pickle.load(open('breast_clf.pkl', 'rb'))
121
+ prediction = load_clf.predict(df)
122
+ prediction_proba = load_clf.predict_proba(df)
123
+ breast_labels = np.array(['Benign','Malignant'])
124
+ st.subheader('Detection')
125
+ if(prediction == 'B') :
126
+ st.write(breast_labels[0])
127
+ else :
128
+ st.write(breast_labels[1])
129
+ st.subheader('Detection Probability')
130
+ df_proba = pd.DataFrame(data=prediction_proba, index=['Probability'], columns=breast_labels)
131
+ st.write(df_proba)
132
+
breast_cancer.csv ADDED
The diff for this file is too large to render. See raw diff
 
breast_clf.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1850cc1962b012413cce74e5d0ebca84b455eb7beb47d9a39aad7fbb2ef362af
3
+ size 340235
requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ matplotlib==3.5.1
2
+ numpy==1.21.5
3
+ pandas==1.4.2
4
+ seaborn==0.11.2
5
+ streamlit==1.12.2
6
+ sklearn
setup.sh ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ mkdir -p ~/.streamlit/
2
+
3
+ echo "\
4
+ [general]\n\
5
+ email = \"your-email@domain.com\"\n\
6
+ " > ~/.streamlit/credentials.toml
7
+
8
+ echo "\
9
+ [server]\n\
10
+ headless = true\n\
11
+ enableCORS=false\n\
12
+ port = $PORT\n\
13
+ " > ~/.streamlit/config.toml