Skip to content
import pandas as pd
import tensorflow as tf
import seaborn as sns
import matplotlib.pyplot as plt
df =pd.read_csv("train_cleaned.csv")
df.head()
df.info()
#plt.figure(figsize=(10,7))
cols = df.columns.to_list()
ax, fig = plt.subplots(16, 3)
for i, j in enumerate(df.columns):
    ax[] = df[[i]].plot(kind="box")
    
#ax = df[cols].plot(kind="box")
plt.show()
x = df.drop("Item_Outlet_Sales",axis=1)
y = df["Item_Outlet_Sales"]
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler

x_train, x_test, y_train, y_test = train_test_split(x,y,test_size=0.2,random_state=17)
scaler = MinMaxScaler()
scaler.fit(x_train)
x_train = scaler.transform(x_train)
x_test = scaler.transform(x_test)
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Activation,Dropout
from tensorflow.keras.callbacks import EarlyStopping
early_stop = EarlyStopping(monitor='val_loss', mode='min', verbose=1, patience=20)
ncols = x_train.shape[1]

model1 = Sequential([
    
    tf.keras.layers.InputLayer(input_shape=(ncols,)),
    tf.keras.layers.Dense(units=45, activation="relu"),
    tf.keras.layers.Dense(units=100, activation="relu"),
    tf.keras.layers.Dense(units=90, activation="relu"),
    tf.keras.layers.Dense(units=70, activation="selu"),
    tf.keras.layers.Dense(units=50, activation="selu"),
    tf.keras.layers.Dense(1) 
])
model1.compile(loss='mae', optimizer='adam')
model1.fit(x=x_train, 
          y=y_train, 
          epochs=50,
          validation_data=(x_test, y_test), verbose=1,
          callbacks=[early_stop]
          )
ncols = x_train.shape[1]

model2 = Sequential([
    
    tf.keras.layers.InputLayer(input_shape=(ncols,)),
    tf.keras.layers.Dense(units=45, activation="relu"),
    tf.keras.layers.Dropout(0.2),
    tf.keras.layers.Dense(units=100, activation="relu"),
    tf.keras.layers.Dense(units=90, activation="relu"),
    tf.keras.layers.Dropout(0.3),
    tf.keras.layers.Dense(units=70, activation="selu"),
     tf.keras.layers.Dropout(0.5),
    tf.keras.layers.Dense(units=50, activation="selu"),
    
    tf.keras.layers.Dense(1) 
])
model2.compile(loss='mse', optimizer='adam')
model2.fit(x=x_train, 
          y=y_train, 
          epochs=300,
          validation_data=(x_test, y_test), verbose=1,
          callbacks=[early_stop]
          )