├── Procfile ├── setup.sh ├── README.md ├── requirements.txt ├── iris_app.py └── iris.csv /Procfile: -------------------------------------------------------------------------------- 1 | web: sh setup.sh && streamlit run iris_app.py -------------------------------------------------------------------------------- /setup.sh: -------------------------------------------------------------------------------- 1 | mkdir -p ~/.streamlit/ 2 | 3 | echo "\ 4 | [server]\n\n 5 | port = $PORT\n\ 6 | enableCORS = false\n\ 7 | \n\ 8 | " > ~/.streamlit/config.toml -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # iris_data_classification_Web_App 2 | IRIS Data Classification using Streamlit package.... 3 | 4 | ## for live demo :- 5 | https://iris-machinelearning.herokuapp.com/ 6 | 7 | #Required Files 8 | 1. setup.sh 9 | 2. Procfile 10 | 3. requirements.txt 11 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | altair==4.0.0 2 | argh==0.26.2 3 | astor==0.8.1 4 | attrs==19.3.0 5 | base58==1.0.3 6 | blinker==1.4 7 | boto3==1.10.45 8 | botocore==1.13.45 9 | certifi==2019.11.28 10 | chardet==3.0.4 11 | Click==7.0 12 | cycler==0.10.0 13 | decorator==4.4.1 14 | docutils==0.15.2 15 | dominate==2.4.0 16 | entrypoints==0.3 17 | enum-compat==0.0.3 18 | future==0.18.2 19 | idna==2.8 20 | importlib-metadata==1.3.0 21 | itsdangerous==1.1.0 22 | Jinja2==2.10.3 23 | jmespath==0.9.4 24 | joblib==0.14.1 25 | jsonschema==3.2.0 26 | kiwisolver==1.1.0 27 | MarkupSafe==1.1.1 28 | matplotlib==3.1.2 29 | more-itertools==8.0.2 30 | numpy==1.18.0 31 | pandas==0.25.3 32 | pathtools==0.1.2 33 | Pillow==6.2.1 34 | protobuf==3.11.2 35 | pyparsing==2.4.6 36 | pyrsistent==0.15.6 37 | python-dateutil==2.8.0 38 | pytz==2019.3 39 | PyYAML==5.2 40 | requests==2.22.0 41 | s3transfer==0.2.1 42 | scikit-learn==0.22 43 | scipy==1.4.1 44 | seaborn==0.9.0 45 | six==1.13.0 46 | sklearn==0.0 47 | streamlit==0.52.1 48 | toml==0.10.0 49 | toolz==0.10.0 50 | tornado==5.1.1 51 | tzlocal==2.0.0 52 | urllib3==1.25.7 53 | validators==0.14.1 54 | visitor==0.1.3 55 | watchdog==0.9.0 56 | Werkzeug==0.16.0 57 | zipp==0.6.0 -------------------------------------------------------------------------------- /iris_app.py: -------------------------------------------------------------------------------- 1 | import streamlit as st 2 | import pandas as pd 3 | import numpy as np 4 | import matplotlib.pyplot as plt 5 | import seaborn as sns 6 | 7 | def main(): 8 | st.title("Himanshu Tripathi...") 9 | 10 | st.title("IRIS Data Classification In Web") 11 | 12 | data_file = 'iris.csv' 13 | 14 | data_load_state = st.text("Loading data .......") 15 | 16 | st.header("Data Exploration") 17 | 18 | X = "" 19 | y = "" 20 | X_train='' 21 | X_test='' 22 | y_train='' 23 | y_test = '' 24 | y_pred = '' 25 | 26 | @st.cache 27 | def load_data(): 28 | data = pd.read_csv(data_file) 29 | # st.write(data.head()) 30 | return data 31 | 32 | if st.checkbox("Show Data"): 33 | st.write(load_data()) 34 | data_load_state.text("Loading data....Done!") 35 | 36 | if st.checkbox("Show more Data showing Option"): 37 | select_option = st.radio("Select HEAD or TAIL", ['HEAD','TAIL']) 38 | if select_option == 'HEAD': 39 | st.write(load_data().head()) 40 | elif select_option == "TAIL": 41 | st.write(load_data().tail()) 42 | 43 | # Show Shape 44 | if st.checkbox("Data Shape"): 45 | st.write(load_data().shape) 46 | 47 | # Show all columns name 48 | if st.checkbox("Show All Columns Name"): 49 | st.write(load_data().columns) 50 | 51 | if st.checkbox("Select Dimension"): 52 | select_dim = st.radio("Select Row or Column", ('ROW','COLUMN')) 53 | if select_dim == 'ROW': 54 | st.write(load_data().shape[0]) 55 | if select_dim == 'COLUMN': 56 | st.write(load_data().shape[1]) 57 | 58 | if st.checkbox("Data Summary"): 59 | st.write(load_data().describe()) 60 | 61 | if st.checkbox("Select Multiple Columns"): 62 | all_columns = load_data().columns 63 | names = st.multiselect("Select",all_columns) 64 | st.write(load_data()[names]) 65 | 66 | 67 | st.header("Data Visualization") 68 | 69 | 70 | 71 | if st.checkbox("Select Type For Visualization"): 72 | select_type = st.radio("Select From Below",[ 73 | 'Correlation','Count Plot', 74 | 'line plot' 75 | ]) 76 | if select_type == 'Count Plot': 77 | st.write(sns.countplot(load_data()['Species'])) 78 | st.pyplot() 79 | elif select_type == 'Correlation': 80 | st.write(sns.heatmap(load_data().corr())) 81 | st.pyplot() 82 | elif select_type == 'line plot': 83 | st.write(load_data().plot(kind='bar')) 84 | st.pyplot() 85 | 86 | st.header("Now select The X values and Y values") 87 | 88 | if st.checkbox("Select X Columns"): 89 | columns = load_data().columns 90 | col_x = st.multiselect("select Columns X",columns) 91 | X = load_data()[col_x] 92 | 93 | if st.checkbox("Select Y Columns"): 94 | columns = load_data().columns 95 | col_y = st.multiselect("select Columns Y",columns) 96 | y = load_data()[col_y] 97 | y = y['Species'].map({ 98 | 'Iris-setosa':0, 99 | 'Iris-versicolor':1, 100 | 'Iris-virginica':2 101 | }) 102 | 103 | 104 | 105 | 106 | if st.checkbox("Show X values and y Values"): 107 | st.write("X Values") 108 | st.write(X) 109 | st.write("Y values") 110 | st.write(y) 111 | 112 | #sklearn packags 113 | from sklearn.model_selection import train_test_split 114 | from sklearn.preprocessing import StandardScaler 115 | from sklearn.linear_model import LogisticRegression 116 | from sklearn.metrics import confusion_matrix, accuracy_score 117 | 118 | sc = StandardScaler() 119 | 120 | st.header("Split DataSet into Train and Test") 121 | if st.checkbox("Split"): 122 | X_train,X_test,y_train,y_test = train_test_split( 123 | X,y,test_size=0.2,random_state=20) 124 | 125 | 126 | if st.checkbox("Preform Standard Scale"): 127 | X_train = sc.fit_transform(X_train) 128 | X_test = sc.transform(X_test) 129 | 130 | if st.checkbox("Show X_test,X_train,y_test,y_train"): 131 | st.write("X_train") 132 | st.write(X_train) 133 | st.write(X_train.shape) 134 | st.write("X_test") 135 | st.write(X_test) 136 | st.write(X_test.shape) 137 | st.write("y_train") 138 | st.write(y_train) 139 | st.write(y_train.shape) 140 | st.write("y_test") 141 | st.write(y_test) 142 | st.write(y_test.shape) 143 | 144 | st.header("Not its time to preform ML Algo. I'm going to use Logestic Regression") 145 | 146 | clf = LogisticRegression(random_state=0) 147 | if st.checkbox("Fit Data"): 148 | clf.fit(X_train,y_train) 149 | st.success("Fit Successfully") 150 | 151 | if st.checkbox("Predict"): 152 | y_pred = clf.predict(X_test) 153 | st.success("Predict Successfully") 154 | 155 | st.header("Now its time to see the Accuracy") 156 | 157 | if st.checkbox("Show Accuracy"): 158 | st.error(accuracy_score(y_test,y_pred)*100) 159 | 160 | st.header("Confusion matrix") 161 | 162 | if st.checkbox("Confusion matrix"): 163 | cm = confusion_matrix(y_test,y_pred) 164 | st.write(sns.heatmap(cm,annot=True)) 165 | st.pyplot() 166 | 167 | 168 | st.title("Thanks for Watching......") 169 | st.header("Himanshu Tripathi") 170 | 171 | if __name__ == '__main__': 172 | main() -------------------------------------------------------------------------------- /iris.csv: -------------------------------------------------------------------------------- 1 | Id,Sepal Length (cm),Sepal Width (cm),Petal Length (cm),Petal Width (cm),Species 2 | 1,5.1,3.5,1.4,0.2,Iris-setosa 3 | 2,4.9,3.0,1.4,0.2,Iris-setosa 4 | 3,4.7,3.2,1.3,0.2,Iris-setosa 5 | 4,4.6,3.1,1.5,0.2,Iris-setosa 6 | 5,5.0,3.6,1.4,0.2,Iris-setosa 7 | 6,5.4,3.9,1.7,0.4,Iris-setosa 8 | 7,4.6,3.4,1.4,0.3,Iris-setosa 9 | 8,5.0,3.4,1.5,0.2,Iris-setosa 10 | 9,4.4,2.9,1.4,0.2,Iris-setosa 11 | 10,4.9,3.1,1.5,0.1,Iris-setosa 12 | 11,5.4,3.7,1.5,0.2,Iris-setosa 13 | 12,4.8,3.4,1.6,0.2,Iris-setosa 14 | 13,4.8,3.0,1.4,0.1,Iris-setosa 15 | 14,4.3,3.0,1.1,0.1,Iris-setosa 16 | 15,5.8,4.0,1.2,0.2,Iris-setosa 17 | 16,5.7,4.4,1.5,0.4,Iris-setosa 18 | 17,5.4,3.9,1.3,0.4,Iris-setosa 19 | 18,5.1,3.5,1.4,0.3,Iris-setosa 20 | 19,5.7,3.8,1.7,0.3,Iris-setosa 21 | 20,5.1,3.8,1.5,0.3,Iris-setosa 22 | 21,5.4,3.4,1.7,0.2,Iris-setosa 23 | 22,5.1,3.7,1.5,0.4,Iris-setosa 24 | 23,4.6,3.6,1.0,0.2,Iris-setosa 25 | 24,5.1,3.3,1.7,0.5,Iris-setosa 26 | 25,4.8,3.4,1.9,0.2,Iris-setosa 27 | 26,5.0,3.0,1.6,0.2,Iris-setosa 28 | 27,5.0,3.4,1.6,0.4,Iris-setosa 29 | 28,5.2,3.5,1.5,0.2,Iris-setosa 30 | 29,5.2,3.4,1.4,0.2,Iris-setosa 31 | 30,4.7,3.2,1.6,0.2,Iris-setosa 32 | 31,4.8,3.1,1.6,0.2,Iris-setosa 33 | 32,5.4,3.4,1.5,0.4,Iris-setosa 34 | 33,5.2,4.1,1.5,0.1,Iris-setosa 35 | 34,5.5,4.2,1.4,0.2,Iris-setosa 36 | 35,4.9,3.1,1.5,0.1,Iris-setosa 37 | 36,5.0,3.2,1.2,0.2,Iris-setosa 38 | 37,5.5,3.5,1.3,0.2,Iris-setosa 39 | 38,4.9,3.1,1.5,0.1,Iris-setosa 40 | 39,4.4,3.0,1.3,0.2,Iris-setosa 41 | 40,5.1,3.4,1.5,0.2,Iris-setosa 42 | 41,5.0,3.5,1.3,0.3,Iris-setosa 43 | 42,4.5,2.3,1.3,0.3,Iris-setosa 44 | 43,4.4,3.2,1.3,0.2,Iris-setosa 45 | 44,5.0,3.5,1.6,0.6,Iris-setosa 46 | 45,5.1,3.8,1.9,0.4,Iris-setosa 47 | 46,4.8,3.0,1.4,0.3,Iris-setosa 48 | 47,5.1,3.8,1.6,0.2,Iris-setosa 49 | 48,4.6,3.2,1.4,0.2,Iris-setosa 50 | 49,5.3,3.7,1.5,0.2,Iris-setosa 51 | 50,5.0,3.3,1.4,0.2,Iris-setosa 52 | 51,7.0,3.2,4.7,1.4,Iris-versicolor 53 | 52,6.4,3.2,4.5,1.5,Iris-versicolor 54 | 53,6.9,3.1,4.9,1.5,Iris-versicolor 55 | 54,5.5,2.3,4.0,1.3,Iris-versicolor 56 | 55,6.5,2.8,4.6,1.5,Iris-versicolor 57 | 56,5.7,2.8,4.5,1.3,Iris-versicolor 58 | 57,6.3,3.3,4.7,1.6,Iris-versicolor 59 | 58,4.9,2.4,3.3,1.0,Iris-versicolor 60 | 59,6.6,2.9,4.6,1.3,Iris-versicolor 61 | 60,5.2,2.7,3.9,1.4,Iris-versicolor 62 | 61,5.0,2.0,3.5,1.0,Iris-versicolor 63 | 62,5.9,3.0,4.2,1.5,Iris-versicolor 64 | 63,6.0,2.2,4.0,1.0,Iris-versicolor 65 | 64,6.1,2.9,4.7,1.4,Iris-versicolor 66 | 65,5.6,2.9,3.6,1.3,Iris-versicolor 67 | 66,6.7,3.1,4.4,1.4,Iris-versicolor 68 | 67,5.6,3.0,4.5,1.5,Iris-versicolor 69 | 68,5.8,2.7,4.1,1.0,Iris-versicolor 70 | 69,6.2,2.2,4.5,1.5,Iris-versicolor 71 | 70,5.6,2.5,3.9,1.1,Iris-versicolor 72 | 71,5.9,3.2,4.8,1.8,Iris-versicolor 73 | 72,6.1,2.8,4.0,1.3,Iris-versicolor 74 | 73,6.3,2.5,4.9,1.5,Iris-versicolor 75 | 74,6.1,2.8,4.7,1.2,Iris-versicolor 76 | 75,6.4,2.9,4.3,1.3,Iris-versicolor 77 | 76,6.6,3.0,4.4,1.4,Iris-versicolor 78 | 77,6.8,2.8,4.8,1.4,Iris-versicolor 79 | 78,6.7,3.0,5.0,1.7,Iris-versicolor 80 | 79,6.0,2.9,4.5,1.5,Iris-versicolor 81 | 80,5.7,2.6,3.5,1.0,Iris-versicolor 82 | 81,5.5,2.4,3.8,1.1,Iris-versicolor 83 | 82,5.5,2.4,3.7,1.0,Iris-versicolor 84 | 83,5.8,2.7,3.9,1.2,Iris-versicolor 85 | 84,6.0,2.7,5.1,1.6,Iris-versicolor 86 | 85,5.4,3.0,4.5,1.5,Iris-versicolor 87 | 86,6.0,3.4,4.5,1.6,Iris-versicolor 88 | 87,6.7,3.1,4.7,1.5,Iris-versicolor 89 | 88,6.3,2.3,4.4,1.3,Iris-versicolor 90 | 89,5.6,3.0,4.1,1.3,Iris-versicolor 91 | 90,5.5,2.5,4.0,1.3,Iris-versicolor 92 | 91,5.5,2.6,4.4,1.2,Iris-versicolor 93 | 92,6.1,3.0,4.6,1.4,Iris-versicolor 94 | 93,5.8,2.6,4.0,1.2,Iris-versicolor 95 | 94,5.0,2.3,3.3,1.0,Iris-versicolor 96 | 95,5.6,2.7,4.2,1.3,Iris-versicolor 97 | 96,5.7,3.0,4.2,1.2,Iris-versicolor 98 | 97,5.7,2.9,4.2,1.3,Iris-versicolor 99 | 98,6.2,2.9,4.3,1.3,Iris-versicolor 100 | 99,5.1,2.5,3.0,1.1,Iris-versicolor 101 | 100,5.7,2.8,4.1,1.3,Iris-versicolor 102 | 101,6.3,3.3,6.0,2.5,Iris-virginica 103 | 102,5.8,2.7,5.1,1.9,Iris-virginica 104 | 103,7.1,3.0,5.9,2.1,Iris-virginica 105 | 104,6.3,2.9,5.6,1.8,Iris-virginica 106 | 105,6.5,3.0,5.8,2.2,Iris-virginica 107 | 106,7.6,3.0,6.6,2.1,Iris-virginica 108 | 107,4.9,2.5,4.5,1.7,Iris-virginica 109 | 108,7.3,2.9,6.3,1.8,Iris-virginica 110 | 109,6.7,2.5,5.8,1.8,Iris-virginica 111 | 110,7.2,3.6,6.1,2.5,Iris-virginica 112 | 111,6.5,3.2,5.1,2.0,Iris-virginica 113 | 112,6.4,2.7,5.3,1.9,Iris-virginica 114 | 113,6.8,3.0,5.5,2.1,Iris-virginica 115 | 114,5.7,2.5,5.0,2.0,Iris-virginica 116 | 115,5.8,2.8,5.1,2.4,Iris-virginica 117 | 116,6.4,3.2,5.3,2.3,Iris-virginica 118 | 117,6.5,3.0,5.5,1.8,Iris-virginica 119 | 118,7.7,3.8,6.7,2.2,Iris-virginica 120 | 119,7.7,2.6,6.9,2.3,Iris-virginica 121 | 120,6.0,2.2,5.0,1.5,Iris-virginica 122 | 121,6.9,3.2,5.7,2.3,Iris-virginica 123 | 122,5.6,2.8,4.9,2.0,Iris-virginica 124 | 123,7.7,2.8,6.7,2.0,Iris-virginica 125 | 124,6.3,2.7,4.9,1.8,Iris-virginica 126 | 125,6.7,3.3,5.7,2.1,Iris-virginica 127 | 126,7.2,3.2,6.0,1.8,Iris-virginica 128 | 127,6.2,2.8,4.8,1.8,Iris-virginica 129 | 128,6.1,3.0,4.9,1.8,Iris-virginica 130 | 129,6.4,2.8,5.6,2.1,Iris-virginica 131 | 130,7.2,3.0,5.8,1.6,Iris-virginica 132 | 131,7.4,2.8,6.1,1.9,Iris-virginica 133 | 132,7.9,3.8,6.4,2.0,Iris-virginica 134 | 133,6.4,2.8,5.6,2.2,Iris-virginica 135 | 134,6.3,2.8,5.1,1.5,Iris-virginica 136 | 135,6.1,2.6,5.6,1.4,Iris-virginica 137 | 136,7.7,3.0,6.1,2.3,Iris-virginica 138 | 137,6.3,3.4,5.6,2.4,Iris-virginica 139 | 138,6.4,3.1,5.5,1.8,Iris-virginica 140 | 139,6.0,3.0,4.8,1.8,Iris-virginica 141 | 140,6.9,3.1,5.4,2.1,Iris-virginica 142 | 141,6.7,3.1,5.6,2.4,Iris-virginica 143 | 142,6.9,3.1,5.1,2.3,Iris-virginica 144 | 143,5.8,2.7,5.1,1.9,Iris-virginica 145 | 144,6.8,3.2,5.9,2.3,Iris-virginica 146 | 145,6.7,3.3,5.7,2.5,Iris-virginica 147 | 146,6.7,3.0,5.2,2.3,Iris-virginica 148 | 147,6.3,2.5,5.0,1.9,Iris-virginica 149 | 148,6.5,3.0,5.2,2.0,Iris-virginica 150 | 149,6.2,3.4,5.4,2.3,Iris-virginica 151 | 150,5.9,3.0,5.1,1.8,Iris-virginica 152 | --------------------------------------------------------------------------------