Skip to content

Commit 058d1d9

Browse files
authored
Add files via upload
1 parent 88d2341 commit 058d1d9

File tree

4 files changed

+553
-0
lines changed

4 files changed

+553
-0
lines changed
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "code",
5+
"execution_count": 1,
6+
"id": "be5b3365",
7+
"metadata": {},
8+
"outputs": [
9+
{
10+
"data": {
11+
"text/plain": [
12+
"['PEFR_predictor.joblib']"
13+
]
14+
},
15+
"execution_count": 1,
16+
"metadata": {},
17+
"output_type": "execute_result"
18+
}
19+
],
20+
"source": [
21+
"import pandas as pd\n",
22+
"from sklearn.tree import DecisionTreeClassifier as dtc\n",
23+
"import joblib\n",
24+
"\n",
25+
"data=pd.read_csv(\"PEFR_Data_set.csv\")\n",
26+
"data.shape\n",
27+
"X=data.drop(columns=['Age','Height','PEFR'])\n",
28+
"y=data['PEFR']\n",
29+
"model=dtc()\n",
30+
"model.fit(X,y)\n",
31+
"joblib.dump(model, 'PEFR_predictor.joblib')\n"
32+
]
33+
},
34+
{
35+
"cell_type": "code",
36+
"execution_count": 3,
37+
"id": "39c29fa3",
38+
"metadata": {},
39+
"outputs": [
40+
{
41+
"name": "stdout",
42+
"output_type": "stream",
43+
"text": [
44+
"Enter Gender 1-Male 0-Female1\n",
45+
"Enter Temperature C:22\n",
46+
"Enter Humidity %:33\n",
47+
"Enter PM 2.5 Value:44\n",
48+
"Enter PM 10 Value:22\n",
49+
"Enter Actual PEFR value334\n",
50+
"512\n",
51+
"65.234375\n",
52+
"MODERATE\n"
53+
]
54+
}
55+
],
56+
"source": [
57+
"\n",
58+
"model = joblib.load('PEFR_predictor.joblib')\n",
59+
"g=int(input(\"Enter Gender 1-Male 0-Female\"))\n",
60+
"p=float(input('Enter Temperature C:'))\n",
61+
"q=float(input('Enter Humidity %:'))\n",
62+
"r=float(input('Enter PM 2.5 Value:'))\n",
63+
"s=float(input('Enter PM 10 Value:'))\n",
64+
"prediction = model.predict([[g,p,q,r,s]])\n",
65+
"predicted_pefr = prediction[0]\n",
66+
"actual_pefr = float(input(\"Enter Actual PEFR value\"))\n",
67+
"print(predicted_pefr)\n",
68+
"perpefr = (actual_pefr/predicted_pefr)*100\n",
69+
"print(perpefr)\n",
70+
"if perpefr >= 80:\n",
71+
" print('SAFE')\n",
72+
"elif perpefr >= 50:\n",
73+
" print('MODERATE')\n",
74+
"else:\n",
75+
" print('RISK')\n"
76+
]
77+
},
78+
{
79+
"cell_type": "code",
80+
"execution_count": null,
81+
"id": "66e1edfe",
82+
"metadata": {},
83+
"outputs": [],
84+
"source": []
85+
}
86+
],
87+
"metadata": {
88+
"kernelspec": {
89+
"display_name": "Python 3 (ipykernel)",
90+
"language": "python",
91+
"name": "python3"
92+
},
93+
"language_info": {
94+
"codemirror_mode": {
95+
"name": "ipython",
96+
"version": 3
97+
},
98+
"file_extension": ".py",
99+
"mimetype": "text/x-python",
100+
"name": "python",
101+
"nbconvert_exporter": "python",
102+
"pygments_lexer": "ipython3",
103+
"version": "3.7.5"
104+
}
105+
},
106+
"nbformat": 4,
107+
"nbformat_minor": 5
108+
}
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
#!/usr/bin/env python
2+
# coding: utf-8
3+
4+
# In[1]:
5+
6+
7+
import pandas as pd
8+
from sklearn.tree import DecisionTreeClassifier as dtc
9+
import joblib
10+
import requests
11+
from bs4 import BeautifulSoup
12+
13+
14+
# In[2]:
15+
16+
17+
data=pd.read_csv("PEFR_Data_set.csv")
18+
data.shape
19+
X=data.drop(columns=['Age','Height','PEFR'])
20+
y=data['PEFR']
21+
model=dtc()
22+
model.fit(X,y)
23+
24+
#joblib.dump(model, 'PEFR_predictor.joblib')
25+
26+
27+
# In[3]:
28+
29+
30+
#model = joblib.load('PEFR_predictor.joblib')
31+
32+
33+
# In[5]:
34+
35+
city = input("Enter City:")
36+
url = f'https://www.iqair.com/in-en/india/tamil-nadu/{city}'
37+
r = requests.get(url)
38+
39+
soup = BeautifulSoup(r.content,'html.parser')
40+
aqi_dict = []
41+
s = soup.find_all(class_ = "mat-tooltip-trigger pollutant-concentration-value")
42+
43+
44+
for x in s:
45+
aqi_dict.append(x.text)
46+
47+
pm2 = aqi_dict[0]
48+
pm10 = aqi_dict[1]
49+
50+
t = soup.find('div', class_="weather__detail")
51+
y = t.text
52+
temp_index = y.find('Temperature')+11
53+
degree_index = y.find('°')
54+
temp = y[temp_index : degree_index]
55+
56+
hum_index = y.find('Humidity')+8
57+
perc_index = y.find('%')
58+
hum = y[hum_index:perc_index]
59+
'''
60+
print(pm2)
61+
print(pm10)
62+
print(temp)
63+
print(hum)
64+
'''
65+
66+
# In[6]:
67+
68+
g=int(input("Enter Gender (1-Male/0-Female): "))
69+
p=temp
70+
q=hum
71+
r=pm2
72+
s=pm10
73+
prediction = model.predict([[g,p,q,r,s]])
74+
predicted_pefr = prediction[0]
75+
76+
actual_pefr = float(input("Enter Actual PEFR value: "))
77+
78+
perpefr = (actual_pefr/predicted_pefr)*100
79+
if perpefr >= 80:
80+
print('SAFE')
81+
elif perpefr >= 50:
82+
print('MODERATE')
83+
else:
84+
print('RISK')
85+
Lines changed: 193 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,193 @@
1+
from kivymd.app import MDApp
2+
from kivymd.uix.screen import Screen
3+
from kivymd.uix.label import MDLabel
4+
from kivymd.uix.button import MDRectangleFlatButton
5+
from kivy.lang import Builder
6+
from kivy.core.window import Window
7+
import joblib
8+
#Window.size=(320,600)
9+
username_input="""
10+
MDTextField:
11+
hint_text: "Enter Gender 1-Male 0-Female: "
12+
hint_text_size:30
13+
helper_text: "must be an integer"
14+
helper_text_mode: "on_focus"
15+
icon_right: "language-python"
16+
icon_right_color: app.theme_cls.primary_color
17+
pos_hint:{'center_x': 0.5, 'center_y': 0.8}
18+
size_hint_x:.5
19+
size_hint_y:.1
20+
font_size:'20sp'
21+
width:400
22+
"""
23+
username_input1 = """
24+
MDTextField:
25+
hint_text: "Enter Temperature C: "
26+
hint_text_size:30
27+
helper_text: "must be an integer"
28+
helper_text_mode: "on_focus"
29+
icon_right: "android"
30+
icon_right_color: app.theme_cls.primary_color
31+
pos_hint:{'center_x': 0.5, 'center_y': 0.7}
32+
size_hint_x:.5
33+
size_hint_y:.1
34+
font_size:'20sp'
35+
width:400
36+
"""
37+
username_input2 = """
38+
MDTextField:
39+
hint_text: "Enter Humidity %: "
40+
hint_text_size:30
41+
helper_text: "must be an integer"
42+
helper_text_mode: "on_focus"
43+
icon_right: "android"
44+
icon_right_color: app.theme_cls.primary_color
45+
pos_hint:{'center_x': 0.5, 'center_y': 0.6}
46+
size_hint_x:.5
47+
size_hint_y:.1
48+
font_size:'20sp'
49+
width:400
50+
"""
51+
username_input3 = """
52+
MDTextField:
53+
hint_text: "Enter PM 2.5 Value: "
54+
hint_text_size:30
55+
helper_text: "must be an integer"
56+
helper_text_mode: "on_focus"
57+
icon_right: "android"
58+
icon_right_color: app.theme_cls.primary_color
59+
pos_hint:{'center_x': 0.5, 'center_y': 0.5}
60+
size_hint_x:.5
61+
size_hint_y:.1
62+
font_size:'20sp'
63+
width:400
64+
"""
65+
username_input4 = """
66+
MDTextField:
67+
hint_text: "Enter PM 10 Value: "
68+
hint_text_size:30
69+
helper_text: "must be an integer"
70+
helper_text_mode: "on_focus"
71+
icon_right: "android"
72+
icon_right_color: app.theme_cls.primary_color
73+
pos_hint:{'center_x': 0.5, 'center_y': 0.4}
74+
size_hint_x:.5
75+
size_hint_y:.1
76+
font_size:'20sp'
77+
width:400
78+
"""
79+
username_input5 = """
80+
MDTextField:
81+
hint_text: "Enter Actual PEFR value: "
82+
hint_text_size:30
83+
helper_text: "must be an integer"
84+
helper_text_mode: "on_focus"
85+
icon_right: "android"
86+
icon_right_color: app.theme_cls.primary_color
87+
pos_hint:{'center_x': 0.5, 'center_y': 0.3}
88+
size_hint_x:.5
89+
size_hint_y:.1
90+
font_size:'20sp'
91+
width:400
92+
"""
93+
def predicter(g,p,q,r,s,actual_pefr):
94+
model = joblib.load('decision_tree_model.joblib')
95+
prediction = model.predict([[g,p,q,r,s]])
96+
predicted_pefr = prediction[0]
97+
print(predicted_pefr)
98+
perpefr = (actual_pefr/predicted_pefr)*100
99+
print(perpefr)
100+
if perpefr >= 80:
101+
print('SAFE')
102+
re='SAFE'
103+
elif perpefr >= 50:
104+
print('MODERATE')
105+
re='MODERATE'
106+
else:
107+
print('RISK')
108+
re='RISK'
109+
return (re,predicted_pefr,actual_pefr,(perpefr//100)*10)
110+
class DemoApp(MDApp):
111+
112+
def build(self):
113+
self.screen=Screen()
114+
self.theme_cls.primary_palette = "Green"
115+
self.label = MDLabel(text="ASTHMA RISK PREDICTION", halign="center",theme_text_color='Custom',
116+
text_color=(0,1,0,1),font_style='H4',pos_hint={'center_x': 0.5, 'center_y': 0.9})
117+
self.username = Builder.load_string(username_input)
118+
self.username1 = Builder.load_string(username_input1)
119+
self.username2 = Builder.load_string(username_input2)
120+
self.username3 = Builder.load_string(username_input3)
121+
self.username4 = Builder.load_string(username_input4)
122+
self.username5 = Builder.load_string(username_input5)
123+
124+
self.btn = MDRectangleFlatButton(text='Calculate',font_size='20sp',
125+
pos_hint={'center_x': 0.5, 'center_y': 0.1},size_hint=(.2, .1)
126+
,on_release=self.mul)
127+
self.screen.add_widget(self.label)
128+
self.screen.add_widget(self.username)
129+
self.screen.add_widget(self.username1)
130+
self.screen.add_widget(self.username2)
131+
self.screen.add_widget(self.username3)
132+
self.screen.add_widget(self.username4)
133+
self.screen.add_widget(self.username5)
134+
self.screen.add_widget(self.btn)
135+
return self.screen
136+
def mul(self,obj):
137+
self.screen.remove_widget(self.label)
138+
self.screen.remove_widget(self.username)
139+
self.screen.remove_widget(self.username1)
140+
self.screen.remove_widget(self.username2)
141+
self.screen.remove_widget(self.username3)
142+
self.screen.remove_widget(self.username4)
143+
self.screen.remove_widget(self.username5)
144+
self.screen.remove_widget(self.btn)
145+
r=predicter(float(self.username.text),
146+
float(self.username1.text),
147+
float(self.username2.text),
148+
float(self.username3.text),
149+
float(self.username4.text),
150+
float(self.username5.text))
151+
self.label1 = MDLabel(text="PREDICTION RESULTS", halign="center",theme_text_color='Custom',
152+
text_color=(0,1,0,1),font_style='H4',pos_hint={'center_x': 0.5, 'center_y': 0.9})
153+
self.label_1 = MDLabel(text="PREDICTED PEFR: "+str(r[1]), halign="center",theme_text_color='Custom',
154+
text_color=(0,0,1,1),font_style='H5',pos_hint={'center_x': 0.5, 'center_y': 0.7})
155+
self.label1_ = MDLabel(text="ACTUAL PEFR ENTERED: "+str(r[2]), halign="center",theme_text_color='Custom',
156+
text_color=(1,0,1,1),font_style='H5',pos_hint={'center_x': 0.5, 'center_y': 0.5})
157+
158+
159+
if(r[0]=='SAFE'):
160+
c=(0,1,0,1)
161+
if(r[0]=='MODERATE'):
162+
c=(1,1,0,1)
163+
if(r[0]=='RISK'):
164+
c=(1,0,0,1)
165+
self.label2 = MDLabel(text=str(r[0]), halign="center",theme_text_color='Custom',
166+
text_color=c,font_style='H4',pos_hint={'center_x': 0.5, 'center_y': 0.3})
167+
168+
169+
self.button = MDRectangleFlatButton(text='Back',
170+
pos_hint={'center_x': 0.8, 'center_y': 0.1 },
171+
on_release=self.back)
172+
173+
self.screen.add_widget(self.label1)
174+
self.screen.add_widget(self.label_1)
175+
self.screen.add_widget(self.label1_)
176+
self.screen.add_widget(self.label2)
177+
self.screen.add_widget(self.button)
178+
def back(self,obj):
179+
self.screen.add_widget(self.label)
180+
self.screen.add_widget(self.username)
181+
self.screen.add_widget(self.username1)
182+
self.screen.add_widget(self.username2)
183+
self.screen.add_widget(self.username3)
184+
self.screen.add_widget(self.username4)
185+
self.screen.add_widget(self.username5)
186+
self.screen.add_widget(self.btn)
187+
self.screen.remove_widget(self.button)
188+
self.screen.remove_widget(self.label1)
189+
self.screen.remove_widget(self.label2)
190+
self.screen.remove_widget(self.label_1)
191+
self.screen.remove_widget(self.label1_)
192+
self.screen.remove_widget(self.button)
193+
DemoApp().run()

0 commit comments

Comments
 (0)