updated the code
Browse files- .gitignore +2 -0
- Iris.csv +151 -0
- app.py +75 -0
- requirements.txt +5 -0
.gitignore
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
.env
|
| 2 |
+
venv/
|
Iris.csv
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Id,SepalLengthCm,SepalWidthCm,PetalLengthCm,PetalWidthCm,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
|
app.py
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import streamlit as st
|
| 2 |
+
import pandas as pd
|
| 3 |
+
import seaborn as sns
|
| 4 |
+
import matplotlib.pyplot as plt
|
| 5 |
+
from sklearn.model_selection import train_test_split
|
| 6 |
+
from sklearn.ensemble import RandomForestClassifier
|
| 7 |
+
import os
|
| 8 |
+
|
| 9 |
+
# Fix protobuf compatibility issue
|
| 10 |
+
os.environ["PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION"] = "python"
|
| 11 |
+
|
| 12 |
+
# Sidebar Navigation
|
| 13 |
+
st.sidebar.title("Iris Flower Classification")
|
| 14 |
+
page = st.sidebar.radio("Navigation", ["Overview", "Dataset Upload", "Dataset Details", "Data Visualization", "Prediction"])
|
| 15 |
+
|
| 16 |
+
df = None
|
| 17 |
+
if page == "Dataset Upload":
|
| 18 |
+
st.title("Upload Dataset")
|
| 19 |
+
uploaded_file = st.file_uploader("Upload your Iris dataset (CSV format)", type=["csv"])
|
| 20 |
+
if uploaded_file is not None:
|
| 21 |
+
df = pd.read_csv(uploaded_file)
|
| 22 |
+
df.rename(columns={'Species': 'species'}, inplace=True)
|
| 23 |
+
st.success("Dataset successfully uploaded!")
|
| 24 |
+
|
| 25 |
+
if df is not None:
|
| 26 |
+
if page == "Overview":
|
| 27 |
+
st.title("Overview")
|
| 28 |
+
st.write("""
|
| 29 |
+
This app uses machine learning to classify Iris flowers into three species:
|
| 30 |
+
- Setosa
|
| 31 |
+
- Versicolor
|
| 32 |
+
- Virginica
|
| 33 |
+
|
| 34 |
+
The model is trained using the **Random Forest Classifier**.
|
| 35 |
+
""")
|
| 36 |
+
|
| 37 |
+
elif page == "Dataset Details":
|
| 38 |
+
st.title("Dataset Details")
|
| 39 |
+
st.write("### Sample Data")
|
| 40 |
+
st.dataframe(df.head())
|
| 41 |
+
st.write("### Dataset Statistics")
|
| 42 |
+
st.write(df.describe())
|
| 43 |
+
|
| 44 |
+
elif page == "Data Visualization":
|
| 45 |
+
st.title("Data Visualization")
|
| 46 |
+
st.write("### Pairplot of Features")
|
| 47 |
+
fig = sns.pairplot(df, hue="species", diag_kind="kde")
|
| 48 |
+
st.pyplot(fig)
|
| 49 |
+
|
| 50 |
+
st.write("### Feature Correlation")
|
| 51 |
+
fig, ax = plt.subplots()
|
| 52 |
+
sns.heatmap(df.corr(), annot=True, cmap='coolwarm', ax=ax)
|
| 53 |
+
st.pyplot(fig)
|
| 54 |
+
|
| 55 |
+
elif page == "Prediction":
|
| 56 |
+
st.title("Iris Flower Prediction")
|
| 57 |
+
|
| 58 |
+
st.sidebar.header("Enter flower measurements:")
|
| 59 |
+
sepal_length = st.sidebar.slider("Sepal Length (cm)", 4.0, 8.0, 5.0)
|
| 60 |
+
sepal_width = st.sidebar.slider("Sepal Width (cm)", 2.0, 5.0, 3.0)
|
| 61 |
+
petal_length = st.sidebar.slider("Petal Length (cm)", 1.0, 7.0, 4.0)
|
| 62 |
+
petal_width = st.sidebar.slider("Petal Width (cm)", 0.1, 2.5, 1.0)
|
| 63 |
+
|
| 64 |
+
X = df.iloc[:, 1:-1]
|
| 65 |
+
y = df['species']
|
| 66 |
+
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
|
| 67 |
+
|
| 68 |
+
model = RandomForestClassifier()
|
| 69 |
+
model.fit(X_train, y_train)
|
| 70 |
+
|
| 71 |
+
input_data = [[sepal_length, sepal_width, petal_length, petal_width]]
|
| 72 |
+
prediction = model.predict(input_data)[0]
|
| 73 |
+
|
| 74 |
+
st.write("### Prediction Result")
|
| 75 |
+
st.success(f"The predicted species is: {prediction}")
|
requirements.txt
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
streamlit
|
| 2 |
+
pandas
|
| 3 |
+
seaborn
|
| 4 |
+
matplotlib
|
| 5 |
+
scikit-learn
|