| 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] |
|
|
|
|
| |
| 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))] |
|
|
| |
| 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}') |
|
|