Amazing-Python-Scripts

Форк
0
121 строка · 3.4 Кб
1
import numpy as np
2
import pandas as pd
3
import streamlit as st
4
import joblib
5
from sklearn.preprocessing import LabelEncoder
6
from sklearn.model_selection import train_test_split
7
from sklearn.ensemble import RandomForestRegressor
8

9

10
df = pd.read_csv("city_day.csv", na_values="=")
11

12
numeric_cols = df.select_dtypes(include=[np.number]).columns
13
df[numeric_cols] = df[numeric_cols].fillna(df[numeric_cols].mean())
14

15

16
df = df.drop(["Date", "AQI_Bucket"], axis=1)
17

18

19
label_encoder = LabelEncoder()
20
df["City"] = label_encoder.fit_transform(df["City"])
21
city_mapping = {
22
    'Ahmedabad': 0,
23
    'Amaravati': 1,
24
    'Aizawl': 2,
25
    'Amritsar': 3,
26
    'Bengaluru': 4,
27
    'Bhopal': 5,
28
    'Brajrajnagar': 6,
29
    'Chandigarh': 7,
30
    'Chennai': 8,
31
    'Coimbatore': 9,
32
    'Delhi': 10,
33
    'Ernakulam': 11,
34
    'Gurugram': 12,
35
    'Guwahati': 13,
36
    'Hyderabad': 14,
37
    'Jaipur': 15,
38
    'Jorapokhar': 16,
39
    'Kochi': 17,
40
    'Kolkata': 18,
41
    'Lucknow': 19,
42
    'Mumbai': 20,
43
    'Patna': 21,
44
    'Shillong': 22,
45
    'Talcher': 23,
46
    'Thiruvananthapuram': 24,
47
    'Visakhapatnam': 25
48
}
49

50

51
y = df.pop("AQI")
52

53

54
x_train, x_test, y_train, y_test = train_test_split(
55
    df, y, test_size=0.2, random_state=0)
56

57

58
model = RandomForestRegressor(max_depth=50, random_state=0)
59
model.fit(x_train, y_train)
60

61

62
def main():
63
    st.title("Air Quality Index Prediction")
64

65
    st.write("## User Input Features")
66

67
    city = st.selectbox("City", df["City"].unique())
68
    pm2_5 = st.slider("PM2.5", float(df["PM2.5"].min()), float(
69
        df["PM2.5"].max()), float(df["PM2.5"].mean()))
70
    pm10 = st.slider("PM10", float(df["PM10"].min()), float(
71
        df["PM10"].max()), float(df["PM10"].mean()))
72
    no = st.slider("NO", float(df["NO"].min()), float(
73
        df["NO"].max()), float(df["NO"].mean()))
74
    no2 = st.slider("NO2", float(df["NO2"].min()), float(
75
        df["NO2"].max()), float(df["NO2"].mean()))
76
    nox = st.slider("NOx", float(df["NOx"].min()), float(
77
        df["NOx"].max()), float(df["NOx"].mean()))
78
    nh3 = st.slider("NH3", float(df["NH3"].min()), float(
79
        df["NH3"].max()), float(df["NH3"].mean()))
80
    co = st.slider("CO", float(df["CO"].min()), float(
81
        df["CO"].max()), float(df["CO"].mean()))
82
    so2 = st.slider("SO2", float(df["SO2"].min()), float(
83
        df["SO2"].max()), float(df["SO2"].mean()))
84
    o3 = st.slider("O3", float(df["O3"].min()), float(
85
        df["O3"].max()), float(df["O3"].mean()))
86
    benzene = st.slider("Benzene", float(df["Benzene"].min()), float(
87
        df["Benzene"].max()), float(df["Benzene"].mean()))
88
    toluene = st.slider("Toluene", float(df["Toluene"].min()), float(
89
        df["Toluene"].max()), float(df["Toluene"].mean()))
90
    xylene = st.slider("Xylene", float(df["Xylene"].min()), float(
91
        df["Xylene"].max()), float(df["Xylene"].mean()))
92

93
    input_data = pd.DataFrame(
94
        {
95
            "City": [city],
96
            "PM2.5": [pm2_5],
97
            "PM10": [pm10],
98
            "NO": [no],
99
            "NO2": [no2],
100
            "NOx": [nox],
101
            "NH3": [nh3],
102
            "CO": [co],
103
            "SO2": [so2],
104
            "O3": [o3],
105
            "Benzene": [benzene],
106
            "Toluene": [toluene],
107
            "Xylene": [xylene]
108
        }
109
    )
110

111
    st.sidebar.write("## City Label Mapping")
112
    st.sidebar.write(city_mapping)
113

114
    prediction = model.predict(input_data)
115

116
    st.write("## Prediction")
117
    st.write(f"Predicted AQI: {prediction[0]}")
118

119

120
if __name__ == "__main__":
121
    main()
122

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.