TLeonidas commited on
Commit
3ee9ded
·
verified ·
1 Parent(s): d6934a8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -26
app.py CHANGED
@@ -6,11 +6,21 @@ import gradio as gr
6
  # Load the trained model
7
  model = joblib.load('hackathonrf.joblib')
8
 
 
 
 
 
 
 
 
 
 
 
9
  # Function to get latitude and longitude from location name
10
  def get_coordinates(location):
11
  geolocator = geopy.geocoders.Nominatim(user_agent="air_quality_app")
12
  location = geolocator.geocode(location)
13
- return location.latitude, location.longitude, location.address
14
 
15
  # Function to get AQI value from OpenWeatherMap API
16
  def get_aqi(latitude, longitude):
@@ -18,35 +28,16 @@ def get_aqi(latitude, longitude):
18
  url = f"http://api.openweathermap.org/data/2.5/air_pollution?lat={latitude}&lon={longitude}&appid={api_key}"
19
  response = requests.get(url)
20
  data = response.json()
21
- if 'list' in data and data['list']:
22
- aqi_value = data['list'][0]['main']['aqi']
23
- return aqi_value
24
- else:
25
- return None
26
-
27
- # Function to convert AQI value to corresponding label
28
- def convert_to_label(aqi_value):
29
- if aqi_value is None:
30
- return "unknown"
31
- elif aqi_value <= 50:
32
- return "good"
33
- elif aqi_value <= 100:
34
- return "moderate"
35
- elif aqi_value <= 150:
36
- return "unhealthy for sensitive groups"
37
- elif aqi_value <= 200:
38
- return "unhealthy"
39
- elif aqi_value <= 300:
40
- return "very unhealthy"
41
- else:
42
- return "hazardous"
43
 
44
  # Function to make prediction
45
  def predict_air_quality(location):
46
- latitude, longitude, city = get_coordinates(location)
47
  aqi_value = get_aqi(latitude, longitude)
48
- air_quality_label = convert_to_label(aqi_value)
49
- return f"{city} air quality is currently '{air_quality_label}', with AQI {aqi_value}"
 
50
 
51
  # Create Gradio interface
52
  iface = gr.Interface(fn=predict_air_quality,
 
6
  # Load the trained model
7
  model = joblib.load('hackathonrf.joblib')
8
 
9
+ # Define AQI category labels
10
+ aqi_labels = {
11
+ 0: 'good',
12
+ 1: 'moderate',
13
+ 2: 'unhealthy_sensitive',
14
+ 3: 'unhealthy',
15
+ 4: 'very_unhealthy',
16
+ 5: 'hazardous'
17
+ }
18
+
19
  # Function to get latitude and longitude from location name
20
  def get_coordinates(location):
21
  geolocator = geopy.geocoders.Nominatim(user_agent="air_quality_app")
22
  location = geolocator.geocode(location)
23
+ return location.latitude, location.longitude
24
 
25
  # Function to get AQI value from OpenWeatherMap API
26
  def get_aqi(latitude, longitude):
 
28
  url = f"http://api.openweathermap.org/data/2.5/air_pollution?lat={latitude}&lon={longitude}&appid={api_key}"
29
  response = requests.get(url)
30
  data = response.json()
31
+ aqi_value = data['list'][0]['main']['aqi']
32
+ return aqi_value
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
 
34
  # Function to make prediction
35
  def predict_air_quality(location):
36
+ latitude, longitude = get_coordinates(location)
37
  aqi_value = get_aqi(latitude, longitude)
38
+ prediction = model.predict([[aqi_value, aqi_value, aqi_value, aqi_value]])
39
+ label_string = aqi_labels[prediction[0]]
40
+ return f"{location} air quality is currently '{label_string}'"
41
 
42
  # Create Gradio interface
43
  iface = gr.Interface(fn=predict_air_quality,