co2 / app.py
Chen0324's picture
Update app.py
2fb7ca1
import streamlit as st
import numpy as np
import pandas as pd
from pycaret.regression import load_model, predict_model,setup
file="data/FuelConsumptionCo2.csv"
df = pd.read_csv(file)
num_cols=['ENGINESIZE', 'CYLINDERS','FUELCONSUMPTION_CITY','FUELCONSUMPTION_HWY',\
'FUELCONSUMPTION_COMB','FUELCONSUMPTION_COMB_MPG']
cat_cols=['MAKE','VEHICLECLASS','TRANSMISSION','FUELTYPE']
target=['CO2EMISSIONS']
model_cat = load_model('model_pkl')
st.title(' 汽車二氧化碳排放量(CO2 Emission of Vehicles)')
st.markdown("B0843068 簡靖芸")
feature_mapping = {
'ENGINESIZE': '引擎尺寸',
'CYLINDERS': '汽缸數',
'FUELCONSUMPTION_CITY': '市區燃油消耗',
'FUELCONSUMPTION_HWY': '高速公路燃油消耗',
'FUELCONSUMPTION_COMB': '綜合燃油消耗',
'FUELCONSUMPTION_COMB_MPG': '綜合燃油效能',
'MAKE': '品牌',
'VEHICLECLASS': '車輛類別',
'TRANSMISSION': '變速器',
'FUELTYPE': '燃料類型',
'CO2EMISSIONS': '二氧化碳排放量'
}
features = [feature_mapping[col] for col in num_cols + cat_cols]
# for num_cols
col_values = []
for col in num_cols:
col_value = st.slider(feature_mapping[col], min_value=float(df[col].min()), max_value=float(df[col].max()), value=float(df[col].median()))
col_values.append(col_value)
num_values = [col_value for col_value in col_values if isinstance(col_value, (int, float))]
# for cat_cols
cat_values = []
for col in cat_cols:
ops = list(df[col].unique())
cat_value = st.selectbox(feature_mapping[col], options=ops, index=0)
cat_values.append(cat_value)
cat_values = [cat_value for cat_value in cat_values if isinstance(cat_value, str)]
final_features = np.array(num_values + cat_values).reshape(1, -1)
if st.button('估計'):
new_data=pd.DataFrame(data=final_features,columns=num_cols + cat_cols)
prediction=predict_model(estimator=model_cat, data=new_data)
st.balloons()
result=int(prediction['prediction_label'][0])
st.success(
f' 估計的二氧化碳排放量是 {result}')