Skip to content

Commit cb04ab8

Browse files
author
Aniket
committed
add end to end stroke prediction project
1 parent ff36751 commit cb04ab8

9 files changed

Lines changed: 19484 additions & 0 deletions

File tree

stroke-pred-end-to-end/app.py

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
from flask import Flask,render_template,request
2+
import pickle
3+
from sklearn.preprocessing import StandardScaler
4+
sc=StandardScaler()
5+
model=pickle.load(open('model_pickle.pkl','rb'))
6+
7+
app=Flask(__name__)
8+
9+
10+
@app.route('/analysis')
11+
def analysis():
12+
return render_template('stroke.html')
13+
14+
@app.route('/',methods=['GET','POST'])
15+
def home():
16+
if request.method == 'POST':
17+
gender=request.form['gender']
18+
age=int(request.form['age'])
19+
hypertension=int(request.form['hypertension'])
20+
disease=request.form['disease']
21+
married=request.form['married']
22+
work=request.form['work']
23+
residence=request.form['residence']
24+
glucose=float(request.form['glucose'])
25+
bmi=float(request.form['bmi'])
26+
smoking=request.form['smoking']
27+
28+
if (gender=="Male"):
29+
gender_male=1
30+
gender_other=0
31+
elif(gender=="Female"):
32+
gender_male=0
33+
gender_other=1
34+
else:
35+
gender_male=0
36+
gender_other=0
37+
38+
if (married=='Yes'):
39+
married_yes=1
40+
else:
41+
married_yes=0
42+
43+
if (work=="Self-employed"):
44+
work_type_Never_worked=0
45+
work_type_Private=0
46+
work_type_Self_employed=1
47+
work_type_children=0
48+
elif(work=='Private'):
49+
work_type_Never_worked=0
50+
work_type_Private=1
51+
work_type_Self_employed=0
52+
work_type_children=0
53+
elif(work=='children'):
54+
work_type_Never_worked=0
55+
work_type_Private=0
56+
work_type_Self_employed=0
57+
work_type_children=1
58+
elif(work=='Never_worked'):
59+
work_type_Never_worked=1
60+
work_type_Private=0
61+
work_type_Self_employed=0
62+
work_type_children=0
63+
else:
64+
work_type_Never_worked=0
65+
work_type_Private=0
66+
work_type_Self_employed=0
67+
work_type_children=0
68+
69+
if(residence=='Urban'):
70+
Residence_type_urban=1
71+
else:
72+
Residence_type_urban=0
73+
74+
if(smoking=='formerly smoked'):
75+
smoking_status_formerly_smoked=1
76+
smoking_status_never_smoked=0
77+
smoking_status_smokes=0
78+
elif(smoking=='smokes'):
79+
smoking_status_formerly_smoked=0
80+
smoking_status_never_smoked=0
81+
smoking_status_smokes=1
82+
elif(smoking=='never smoked'):
83+
smoking_status_formerly_smoked=0
84+
smoking_status_never_smoked=1
85+
smoking_status_smokes=0
86+
else:
87+
smoking_status_formerly_smoked=0
88+
smoking_status_never_smoked=0
89+
smoking_status_smokes=0
90+
91+
feature=sc.fit_transform([[age,hypertension,disease,glucose,bmi,gender_male,gender_other,married_yes,work_type_Never_worked,work_type_Private,work_type_children,work_type_Self_employed,Residence_type_urban,smoking_status_formerly_smoked,smoking_status_never_smoked,smoking_status_smokes]])
92+
prediction=model.predict(feature)
93+
print(prediction)
94+
95+
return render_template('index.html',prediction_text="prediction is: {}".format(prediction))
96+
97+
98+
else:
99+
return render_template('index.html')
100+
101+
102+
if __name__ == '__main__':
103+
app.run(debug=True)

stroke-pred-end-to-end/healthcare-dataset-stroke-data.csv

Lines changed: 5111 additions & 0 deletions
Large diffs are not rendered by default.
220 KB
Binary file not shown.
207 KB
Loading
207 KB
Loading
493 KB
Loading
841 KB
Loading
Lines changed: 201 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,201 @@
1+
<!doctype html>
2+
<html lang="en">
3+
4+
<head>
5+
<!-- Required meta tags -->
6+
<meta charset="utf-8">
7+
<meta name="viewport" content="width=device-width, initial-scale=1">
8+
9+
<!-- Bootstrap CSS -->
10+
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
11+
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
12+
13+
<title>Hello, world!</title>
14+
<style>
15+
image {
16+
max-height: 600px;
17+
}
18+
</style>
19+
</head>
20+
21+
<body>
22+
<nav class="navbar navbar-expand-lg navbar-light" style="background-color: #e3f2fd;">
23+
<div class="container-fluid">
24+
<a class="navbar-brand" href="#">Stroke Prediction</a>
25+
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
26+
data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false"
27+
aria-label="Toggle navigation">
28+
<span class="navbar-toggler-icon"></span>
29+
</button>
30+
<div class="collapse navbar-collapse" id="navbarSupportedContent">
31+
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
32+
<li class="nav-item">
33+
<a class="nav-link active" aria-current="page" href="#">Home</a>
34+
</li>
35+
<li class="nav-item">
36+
<a class="nav-link" href="#">Analysis</a>
37+
</li>
38+
39+
</ul>
40+
<form class="d-flex">
41+
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
42+
<button class="btn btn-outline-success" type="submit">Search</button>
43+
</form>
44+
</div>
45+
</div>
46+
</nav>
47+
<div id="carouselExampleCaptions" class="carousel slide" data-bs-ride="carousel">
48+
<div class="carousel-indicators">
49+
<button type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide-to="0" class="active"
50+
aria-current="true" aria-label="Slide 1"></button>
51+
<button type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide-to="1"
52+
aria-label="Slide 2"></button>
53+
<button type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide-to="2"
54+
aria-label="Slide 3"></button>
55+
</div>
56+
<div class="carousel-inner">
57+
<div class="carousel-item active">
58+
<img src="a.jpg" class="d-block w-100" alt="...">
59+
<div class="carousel-caption d-none d-md-block">
60+
<h5>Stroke Prediction</h5>
61+
<p>Prediction wether a patient has stroke or not</p>
62+
</div>
63+
</div>
64+
<div class="carousel-item">
65+
<img src="b.jpg" class="d-block w-100" alt="...">
66+
<div class="carousel-caption d-none d-md-block">
67+
<h5>Stroke Prediction</h5>
68+
<p>Prediction wether a patient has stroke or not</p>
69+
</div>
70+
</div>
71+
<div class="carousel-item">
72+
<img src="c.jpg" class="d-block w-100" alt="...">
73+
<div class="carousel-caption d-none d-md-block">
74+
<h5>Stroke Prediction</h5>
75+
<p>Prediction wether a patient has stroke or not</p>
76+
</div>
77+
</div>
78+
</div>
79+
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleCaptions"
80+
data-bs-slide="prev">
81+
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
82+
<span class="visually-hidden">Previous</span>
83+
</button>
84+
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleCaptions"
85+
data-bs-slide="next">
86+
<span class="carousel-control-next-icon" aria-hidden="true"></span>
87+
<span class="visually-hidden">Next</span>
88+
</button>
89+
</div>
90+
91+
<div class="container">
92+
<form action='/' method="POST">
93+
<div class="pricing-header p-3 pb-md-4 mx-auto text-center">
94+
<h1 class="display-4 fw-normal">Know wether any patient have stroke or not</h1>
95+
<p class="fs-5 text-muted">A stroke occurs when a blood vessel in the brain ruptures and bleeds, or when
96+
there’s a blockage in the blood supply to the brain. The rupture or blockage prevents blood and
97+
oxygen
98+
from reaching the brain’s tissues.</p>
99+
<p class="text-danger">{{prediction_text}}</p>
100+
</div>
101+
<div class="container">
102+
<div class="mb-3">
103+
<label for="exampleFormControlInput1" class="form-label">Enter Age</label>
104+
<input id="age" name="age" type="text" class="form-control">
105+
</div>
106+
<div class="mb-3">
107+
<label for="exampleFormControlInput1" class="form-label">Enter
108+
Gender</label>
109+
<select class="form-select" aria-label="Default select example" id="gender" name="gender">
110+
<option selected>Select Gender</option>
111+
<option value="Male">Male</option>
112+
<option value="Female">Female</option>
113+
</select>
114+
</div>
115+
116+
<div class="mb-3">
117+
<label for="exampleInputPassword1" class="form-label">Hypertension</label>
118+
<select class="form-select" aria-label="Default select example" id="hypertension"
119+
name="hypertension">
120+
<option selected>Select Hypertension</option>
121+
<option value="1">Yes</option>
122+
<option value="0">No</option>
123+
</select>
124+
</div>
125+
<div class="mb-3">
126+
<label for="exampleInputPassword1" class="form-label">Marital
127+
Status</label>
128+
<select class="form-select" aria-label="Default select example" id="married" name="married">
129+
<option selected>Married or not</option>
130+
<option value="1">Yes</option>
131+
<option value="0">No</option>
132+
</select>
133+
</div>
134+
<div class="mb-3">
135+
<label for="exampleInputPassword1" class="form-label">Heart
136+
Disease</label>
137+
<select class="form-select" aria-label="Default select example" id="disease" name="disease">
138+
<option selected>suffering with heart disease</option>
139+
<option value="1">Yes</option>
140+
<option value="0">No</option>
141+
</select>
142+
</div>
143+
<div class="mb-3">
144+
<label for="exampleInputPassword1" class="form-label">Work Type</label>
145+
<select class="form-select" aria-label="Default select example" id="work" name="work">
146+
<option selected>select work type</option>
147+
<option value="Self-employed">Self-employed</option>
148+
<option value="Private">Private</option>
149+
<option value="children">children</option>
150+
<option value="Govt_job">Govt_job</option>
151+
<option value="Never_worked">Never_worked</option>
152+
153+
</select>
154+
</div>
155+
<div class="mb-3">
156+
<label for="exampleInputPassword1" class="form-label">Residence
157+
Type</label>
158+
<select class="form-select" aria-label="Default select example" id="residence" name="residence">
159+
<option selected>Select Residence Type</option>
160+
<option value="Urban">Urban</option>
161+
<option value="Rural">Rural</option>
162+
</select>
163+
</div>
164+
<div class="mb-3">
165+
<label for="exampleFormControlInput1" class="form-label">Enter Average Glucose level</label>
166+
<input id="glucose" name="glucose" type="text" class="form-control" placeholder="Glucose level">
167+
</div>
168+
<div class="mb-3">
169+
<label for="exampleFormControlInput1" class="form-label">Enter Body Mass Index</label>
170+
<input id="bmi" name="bmi" type="text" class="form-control" placeholder="Body Mass Index">
171+
</div>
172+
<div class="mb-3">
173+
<label for="exampleInputPassword1" class="form-label">Smoking Type
174+
</label>
175+
<select class="form-select" aria-label="Default select example" id="smoking" name="smoking">
176+
<option selected>Smoking status</option>
177+
<option value="never smoked">never smoked</option>
178+
<option value="formerly smoked">formerly smoked</option>
179+
<option value="smokes">smokes</option>
180+
</select>
181+
</div>
182+
<button type="submit" class="btn btn-dark">Submit</button>
183+
</form>
184+
</div>
185+
</div>
186+
187+
<!-- Optional JavaScript; choose one of the two! -->
188+
189+
<!-- Option 1: Bootstrap Bundle with Popper -->
190+
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
191+
integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
192+
crossorigin="anonymous"></script>
193+
194+
<!-- Option 2: Separate Popper and Bootstrap JS -->
195+
<!--
196+
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js" integrity="sha384-IQsoLXl5PILFhosVNubq5LC7Qb9DXgDA9i+tQ8Zj3iwWAwPtgFTxbJ8NT4GN1R8p" crossorigin="anonymous"></script>
197+
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.min.js" integrity="sha384-cVKIPhGWiC2Al4u+LWgxfKTRIcfu0JTxR+EQDz/bgldoEyl4H0zUF0QKbrJ0EcQF" crossorigin="anonymous"></script>
198+
-->
199+
</body>
200+
201+
</html>

stroke-pred-end-to-end/templates/stroke.html

Lines changed: 14069 additions & 0 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)