This is whole code.Can u please check?
from PIL import Image
import plotly.express as px
import streamlit as st
import seaborn as sns
import pandas as pd
import warnings
import pickle
import numpy as np
import time
from xgboost import XGBRegressor
from sklearn.model_selection import RepeatedKFold,RepeatedStratifiedKFold,StratifiedKFold,train_test_split,GridSearchCV,cross_val_score
from sklearn.preprocessing import StandardScaler , RobustScaler, MaxAbsScaler,MinMaxScaler,OneHotEncoder, LabelEncoder
from sklearn.feature_selection import SequentialFeatureSelector
from sklearn.compose import ColumnTransformer
from sklearn.impute import SimpleImputer
df = pd.read_csv('../turbo.csv')
df.columns = df.columns.str.replace(pat = ' ', repl = '_')
df.columns = df.columns.str.lower()
df.columns = df.columns.str.strip()
df = df.drop(columns= ['satici','telefonlar','yeniləndi','baxışların_sayı','url','sahiblər','qəzalı','etrafli','yerlərin_sayı'])
df=df.loc[df['qiymet']>1000]
def convert_currency(df = None):
azn_index = df.loc[df.valyuta =='AZN'].index
euro_index = df.loc[df.valyuta == 'EUR'].index
usd_index = df.loc[df.valyuta == 'USD'].index
euro_to_azn = df.loc[df.index.isin(values = euro_index), 'qiymet'].astype(dtype = 'float') * 1.81
usd_to_azn = df.loc[df.index.isin(values = usd_index), 'qiymet'].astype(dtype = 'float') * 1.7
azn = df.loc[df.index.isin(values = azn_index), 'qiymet'].astype(dtype = 'float')
df.loc[df.index.isin(values = euro_index), 'qiymet'] = euro_to_azn
df.loc[df.index.isin(values = usd_index), 'qiymet'] = usd_to_azn
df.loc[df.index.isin(values = azn_index), 'qiymet'] = azn
df.qiymet = df.qiymet.apply(func = lambda x: int(x))
df.drop(columns = 'valyuta', inplace = True)
return df
def create_new_columns(df = None):
df['mühərrik_hecmi'] = df.mühərrik.apply(lambda x: x.split('/')[0])
df['mühərrik_gucu'] = df.mühərrik.apply(lambda x: x.split('/')[1])
df['yanacaq_novu'] = df.mühərrik.apply(lambda x: x.split('/')[2])
df['vuruğu_var'] = df.vəziyyəti.apply(lambda x: x.split(',')[0] if pd.notna(x) else np.nan)
df['rənglənib'] = df.vəziyyəti.apply(lambda x: x.split(',')[1] if pd.notna(x) else np.nan)
df['lehimli_disk'] = df.extra.apply(lambda x: np.nan if pd.isna(x) else 'var' if 'Yüngül lehimli disklər' in x else 'yox')
df['abs'] = df.extra.apply(lambda x: np.nan if pd.isna(x) else 'var' if 'ABS' in x else 'yox')
df['lyuk'] = df.extra.apply(lambda x: np.nan if pd.isna(x) else 'var' if 'Lyuk' in x else 'yox')
df['yağış_sensoru'] = df.extra.apply(lambda x: np.nan if pd.isna(x) else 'var' if 'Yağış sensoru' in x else 'yox')
df['mərkəzi_qapanma'] = df.extra.apply(lambda x: np.nan if pd.isna(x) else 'var' if 'Mərkəzi qapanma' in x else 'yox')
df['park_radarı'] = df.extra.apply(lambda x: np.nan if pd.isna(x) else 'var' if 'Park radarı' in x else 'yox')
df['kondisioner'] = df.extra.apply(lambda x: np.nan if pd.isna(x) else 'var' if 'Kondisioner' in x else 'yox')
df['oturacaqların_isidilməsi'] = df.extra.apply(lambda x: np.nan if pd.isna(x) else 'var' if 'Oturacaqların isidilməsi' in x else 'yox')
df['dəri_salon'] = df.extra.apply(lambda x: np.nan if pd.isna(x) else 'var' if 'Dəri salon' in x else 'yox')
df['ksenon_lampalar'] = df.extra.apply(lambda x: np.nan if pd.isna(x) else 'var' if 'Ksenon lampalar' in x else 'yox')
df['arxa_görüntü_kamerası'] = df.extra.apply(lambda x: np.nan if pd.isna(x) else 'var' if 'Arxa görüntü kamerası' in x else 'yox')
df['yan_pərdələr'] = df.extra.apply(lambda x: np.nan if pd.isna(x) else 'var' if 'Yan pərdələr' in x else 'yox')
df['oturacaqların_ventilyasiyası'] = df.extra.apply(lambda x: np.nan if pd.isna(x) else 'var' if 'Oturacaqların ventilyasiyası' in x else 'yox')
df.drop(columns = ['mühərrik','vəziyyəti','extra'], inplace = True)
return df
def convert_int(df = None):
df.mühərrik_hecmi = df.mühərrik_hecmi.str.replace(pat = 'L', repl = '')
df.mühərrik_gucu = df.mühərrik_gucu.str.replace(pat = 'a.g.', repl = '')
df.yürüş = df.yürüş.str.replace(pat = 'km', repl = '')
df.yürüş = df.yürüş.str.replace(pat = ' ', repl = '')
df.mühərrik_hecmi = pd.to_numeric(arg = df.mühərrik_hecmi, downcast = 'float')
df[['mühərrik_gucu', 'yürüş']] = df[['mühərrik_gucu', 'yürüş']].applymap(func = lambda x: int(x))
return df
def convert_str(df = None):
df.avtosalon = df.avtosalon.apply(lambda x: 'he' if x==1 else 'yox')
return df
def convert_lower_case(df = None):
df_obj = df.select_dtypes(include = 'object')
df[df_obj.columns] = df_obj.applymap(lambda x: np.nan if pd.isna(x) else x.lower())
return df
df = df.pipe(func = convert_currency).pipe(func = create_new_columns).pipe(func = convert_int).pipe(func = convert_str).pipe(func = convert_lower_case)
moto_nan_list=df[df['ban_növü']=='motosiklet'].iloc[:,19:31].drop(columns=['dəri_salon','abs']).columns.tolist()
def motosikle_change_nan(data_frame=None):
for i in moto_nan_list:
data_frame[i].fillna('yox' , inplace=True)
return data_frame
motosikle_change_nan(data_frame=df)
categoric_data = df.select_dtypes(include='object')
# Initialize SimpleImputer with the 'most_frequent' strategy
imputer = SimpleImputer(strategy='most_frequent')
# Fit and transform the imputer on the categorical columns
categoric_data_imputed = pd.DataFrame(imputer.fit_transform(categoric_data), columns=categoric_data.columns)
# Replace the original categorical columns with the imputed data
df[categoric_data.columns] = categoric_data_imputed
df=pd.concat([categoric_data,df.select_dtypes(include='number')] , axis=1)
# categoric_data_imputed
label_encoder = LabelEncoder()
marka_encoding = label_encoder.fit_transform(df['marka'])
model_encoding = label_encoder.fit_transform(df['model'])
şəhər_encoding = label_encoder.fit_transform(df['şəhər'])
yanacaq_novu_encoding = label_encoder.fit_transform(df['yanacaq_novu'])
ötürücü_encoding = label_encoder.fit_transform(df['ötürücü'])
ban_növü_encoding = label_encoder.fit_transform(df['ban_növü'])
sürətlər_qutusu_encoding = label_encoder.fit_transform(df['sürətlər_qutusu'])
rəng_encoding = label_encoder.fit_transform(df['rəng'])
hansı_bazar_encoding = label_encoder.fit_transform(df['hansı_bazar_üçün_yığılıb'])
rənglənib_encoding = label_encoder.fit_transform(df['rənglənib'])
vuruÄŸu_var_encoding = label_encoder.fit_transform(df['vuruÄŸu_var'])
lehimli_disk_encoding = label_encoder.fit_transform(df['lehimli_disk'])
abs_encoding = label_encoder.fit_transform(df['abs'])
lyuk_encoding = label_encoder.fit_transform(df['lyuk'])
yağış_sensoru_encoding = label_encoder.fit_transform(df['yağış_sensoru'])
mərkəzi_qapanma_encoding = label_encoder.fit_transform(df['mərkəzi_qapanma'])
park_radarı_encoding = label_encoder.fit_transform(df['park_radarı'])
kondisioner_encoding = label_encoder.fit_transform(df['kondisioner'])
oturacaqların_isidilməsi_encoding = label_encoder.fit_transform(df['oturacaqların_isidilməsi'])
dəri_salon_encoding = label_encoder.fit_transform(df['dəri_salon'])
ksenon_lampalar_encoding = label_encoder.fit_transform(df['ksenon_lampalar'])
arxa_görüntü_kamerası_encoding = label_encoder.fit_transform(df['arxa_görüntü_kamerası'])
yan_pərdələr_encoding = label_encoder.fit_transform(df['yan_pərdələr'])
oturacaqların_ventilyasiyası_encoding = label_encoder.fit_transform(df['oturacaqların_ventilyasiyası'])
avtosalon_encoding = label_encoder.fit_transform(df['avtosalon'])
yeni_encoding = label_encoder.fit_transform(df['yeni'])
df['marka'] = df['marka'].replace(marka_encoding)
df['model'] = df['model'].replace(model_encoding)
df['şəhər'] = df['şəhər'].replace(şəhər_encoding)
df['yanacaq_novu'] = df['yanacaq_novu'].replace(yanacaq_novu_encoding)
df['ötürücü'] = df['ötürücü'].replace(ötürücü_encoding)
df['ban_növü'] = df['ban_növü'].replace(ban_növü_encoding)
df['sürətlər_qutusu'] = df['sürətlər_qutusu'].replace(sürətlər_qutusu_encoding)
df['rəng'] = df['rəng'].replace(rəng_encoding)
df['hansı_bazar_üçün_yığılıb'] = df['hansı_bazar_üçün_yığılıb'].replace(hansı_bazar_encoding)
df['rənglənib'] = df['rənglənib'].replace(rənglənib_encoding)
df['vuruÄŸu_var'] = df['vuruÄŸu_var'].replace(vuruÄŸu_var_encoding)
df['lehimli_disk'] = df['lehimli_disk'].replace(lehimli_disk_encoding)
df['abs'] = df['abs'].replace(abs_encoding)
df['yağış_sensoru'] = df['yağış_sensoru'].replace(yağış_sensoru_encoding)
df['mərkəzi_qapanma'] = df['mərkəzi_qapanma'].replace(mərkəzi_qapanma_encoding)
df['park_radarı'] = df['park_radarı'].replace(park_radarı_encoding)
df['kondisioner'] = df['kondisioner'].replace(kondisioner_encoding)
df['oturacaqların_isidilməsi'] = df['oturacaqların_isidilməsi'].replace(oturacaqların_isidilməsi_encoding)
df['dəri_salon'] = df['dəri_salon'].replace(dəri_salon_encoding)
df['ksenon_lampalar'] = df['ksenon_lampalar'].replace(ksenon_lampalar_encoding)
df['arxa_görüntü_kamerası'] = df['arxa_görüntü_kamerası'].replace(arxa_görüntü_kamerası_encoding)
df['yan_pərdələr'] = df['yan_pərdələr'].replace(yan_pərdələr_encoding)
df['oturacaqların_ventilyasiyası'] = df['oturacaqların_ventilyasiyası'].replace(oturacaqların_ventilyasiyası_encoding)
df['avtosalon'] = df['avtosalon'].replace(avtosalon_encoding)
df['yeni'] = df['yeni'].replace(yeni_encoding)
interface = st.container()
with interface:
st.title(body = 'Enter Key Car Features')
st.markdown(body = '***')
marka , model, şəhər = st.columns(spec = [1, 1, 1])
with marka:
marka = st.selectbox(label = 'Brand', options = df['marka'].sort_values().unique().tolist())
with model:
model = st.selectbox(label = 'Model', options = df[df['marka'] == marka]['model'].sort_values().unique().tolist())
with şəhər:
şəhər = st.selectbox(label = 'City', options = df['şəhər'].sort_values().unique().tolist())
st.markdown(body = '***')
yanacaq_novu, ötürücü, ban_növü, sürətlər_qutusu = st.columns(spec = [1, 1, 1, 1])
with yanacaq_novu:
yanacaq_novu = st.selectbox(label = 'Fuel type', options = df.yanacaq_novu.unique().tolist())
with ötürücü:
ötürücü = st.selectbox(label = 'Gear', options = df.ötürücü.unique().tolist())
with ban_növü:
ban_növü = st.selectbox(label = 'Ban type', options = df.ban_növü.unique().tolist())
with sürətlər_qutusu:
sürətlər_qutusu = st.selectbox(label = 'Gear box', options = df.sürətlər_qutusu.unique().tolist())
st.markdown(body = '***')
yürüş = st.number_input(label = 'Mileage (km)', value = 0, step = 10 )
button_text = 'Send values'
st.markdown(body = '***')
buraxılış_ili = st.slider(label='Year',min_value = int(df.buraxılış_ili.min()),
max_value= int(df.buraxılış_ili.max()),value = int(df.buraxılış_ili.mean()))
st.markdown(body = '***')
rəng, hansı_bazar_üçün_yığılıb = st.columns(spec = [1, 1])
with rəng:
rəng = st.selectbox(label = 'Color', options = df.rəng.sort_values().unique().tolist())
with hansı_bazar_üçün_yığılıb:
hansı_bazar_üçün_yığılıb = st.selectbox(label = 'For which market it is assembled', options = categoric_data_imputed.hansı_bazar_üçün_yığılıb.sort_values().unique().tolist())
st.markdown(body = '***')
mühərrik_hecmi, mühərrik_gucu = st.columns(spec = [1, 1])
with mühərrik_hecmi:
mühərrik_hecmi = st.number_input(label = 'Engine volume (cm³)', value = 0, step = 50 )
button_text = 'Send values'
with mühərrik_gucu:
mühərrik_gucu = st.number_input(label = 'Engine power(a.g.)', value = 0.0, step = 1.0, format="%.1f" )
st.markdown(body = '***')
st.subheader(body = 'Condition')
rənglənib, vuruğu_var = st.columns(spec = [1, 1])
with rənglənib:
rənglənib = st.radio(label = 'Is it colored? ', options = ['Painted', 'Not painted'], horizontal = True)
with vuruÄŸu_var:
vuruÄŸu_var = st.radio(label = 'Does it have a stroke?', options = ['Has a stroke', 'Has not a stroke'], horizontal = True)
st.markdown(body = '***')
st.subheader(body = 'Car supply')
lehimli_disk, abs_, lyuk, yağış_sensoru, mərkəzi_qapanma = st.columns(spec = [1, 1, 1, 1, 1])
with lehimli_disk:
lehimli_disk = st.radio(label = 'Solder disc', options = ['Yes', 'No'], horizontal = True)
with abs_:
abs_ = st.radio(label = 'ABS', options = ['Yes', 'No'], horizontal = True)
with lyuk:
lyuk = st.radio(label = 'Lyuk', options = ['Yes', 'No'], horizontal = True)
with yağış_sensoru:
yağış_sensoru = st.radio(label = 'Rain sensor', options = ['Yes', 'No'], horizontal = True)
with mərkəzi_qapanma:
mərkəzi_qapanma = st.radio(label = 'Central locking', options = ['Yes', 'No'], horizontal = True)
st.write('<hr style="height: px; background-color: gray; border: none; margin: px 0;" />', unsafe_allow_html=True)
park_radarı, kondisioner, oturacaqların_isidilməsi, dəri_salon, ksenon_lampalar = st.columns(spec = [1, 1, 1, 1, 1])
with park_radarı:
park_radarı = st.radio(label = 'Parking radar', options = ['Yes', 'No'], horizontal = True)
with kondisioner:
kondisioner = st.radio(label = 'Air conditioning', options = ['Yes', 'No'], horizontal = True)
with oturacaqların_isidilməsi:
oturacaqların_isidilməsi = st.radio(label = 'Heated seats', options = ['Yes', 'No'], horizontal = True)
with dəri_salon:
dəri_salon = st.radio(label = 'Skin salon', options = ['Yes', 'No'], horizontal = True)
with ksenon_lampalar:
ksenon_lampalar = st.radio(label = 'Xenon lamps', options = ['Yes', 'No'], horizontal = True)
st.write('<hr style="height: px; background-color: gray; border: none; margin: px 0;" />', unsafe_allow_html=True)
arxa_görüntü_kamerası, yan_pərdələr, oturacaqların_ventilyasiyası,avtosalon,yeni = st.columns(spec = [1, 1, 1,1,1])
with arxa_görüntü_kamerası:
arxa_görüntü_kamerası = st.radio(label = 'Rear view camera', options = ['Yes', 'No'], horizontal = True)
with yan_pərdələr:
yan_pərdələr = st.radio(label = 'Side curtains', options = ['Yes', 'No'], horizontal = True)
with oturacaqların_ventilyasiyası:
oturacaqların_ventilyasiyası = st.radio(label = 'Seat ventilation', options = ['Yes', 'No'], horizontal = True)
with avtosalon:
avtosalon = st.radio(label = 'Avtosalon', options = ['Yes', 'No'], horizontal = True)
with yeni:
yeni = st.radio(label = 'New?', options = ['Yes', 'No'], horizontal = True)
marka = marka_encoding[marka]
model = model_encoding[model]
şəhər = şəhər_encoding[şəhər]
yanacaq_novu = yanacaq_novu_encoding[yanacaq_novu]
ötürücü = ötürücü_encoding[ötürücü]
ban_növü = ban_növü_encoding[ban_növü]
sürətlər_qutusu = sürətlər_qutusu_encoding[sürətlər_qutusu]
rəng = rəng_encoding[rəng]
hansı_bazar_üçün_yığılıb = hansı_bazar_encoding[hansı_bazar_üçün_yığılıb]
rənglənib = rənglənib_encoding[rənglənib]
vuruÄŸu_var = vuruÄŸu_var_encoding[vuruÄŸu_var]
lehimli_disk = lehimli_disk_encoding[lehimli_disk]
abs_ = abs_encoding[abs_]
lyuk = lyuk_encoding[lyuk]
yağış_sensoru = yağış_sensoru_encoding[yağış_sensoru]
mərkəzi_qapanma = mərkəzi_qapanma_encoding[mərkəzi_qapanma]
park_radarı = park_radarı_encoding[park_radarı]
kondisioner = kondisioner_encoding[kondisioner]
oturacaqların_isidilməsi = oturacaqların_isidilməsi_encoding[oturacaqların_isidilməsi]
dəri_salon = dəri_salon_encoding[dəri_salon]
ksenon_lampalar = ksenon_lampalar_encoding[ksenon_lampalar]
arxa_görüntü_kamerası = arxa_görüntü_kamerası_encoding[arxa_görüntü_kamerası]
yan_pərdələr = yan_pərdələr_encoding[yan_pərdələr]
oturacaqların_ventilyasiyası = oturacaqların_ventilyasiyası_encoding[oturacaqların_ventilyasiyası]
avtosalon = avtosalon_encoding[avtosalon]
yeni = yeni_encoding[yeni]
input_features = pd.DataFrame({
'marka': [marka],
'model': [model],
'şəhər':[şəhər],
'yanacaq_novu': [yanacaq_novu],
'ötürücü': [ötürücü],
'ban_növü': [ban_növü],
'sürətlər_qutusu': [sürətlər_qutusu],
'yürüş': [yürüş],
'buraxılış_ili': [buraxılış_ili],
'rəng': [rəng],
'hansı_bazar_üçün_yığılıb': [hansı_bazar_üçün_yığılıb],
'mühərrik_hecmi': [mühərrik_hecmi],
'mühərrik_gucu': [mühərrik_gucu],
'rənglənib': [rənglənib],
'vuruÄŸu_var': [vuruÄŸu_var],
'lehimli_disk': [lehimli_disk],
'abs_': [abs_],
'lyuk': [lyuk],
'yağış_sensoru': [yağış_sensoru],
'mərkəzi_qapanma': [mərkəzi_qapanma],
'park_radarı': [park_radarı],
'kondisioner': [kondisioner],
'oturacaqların_isidilməsi': [oturacaqların_isidilməsi],
'dəri_salon': [dəri_salon],
'ksenon_lampalar': [ksenon_lampalar],
'arxa_görüntü_kamerası': [arxa_görüntü_kamerası],
'yan_pərdələr': [yan_pərdələr],
'oturacaqların_ventilyasiyası': [oturacaqların_ventilyasiyası],
'avtosalon': [avtosalon],
'yeni': [yeni]
},index = [0])
st.markdown(body = '***')
st.subheader(body = 'Model Prediction')
with open('car_model.pickle', 'rb') as pickled_model:
model = pickle.load(pickled_model)
if st.button('Predict'):
cars_price = model.predict(input_features)
with st.spinner('Sending input features to model...'):
time.sleep(2)
st.success('Prediction is ready')
time.sleep(1)
st.markdown(f'Car"s estimated price is ***{cars_price} AZN***')