import pandas as pd
from sklearn.preprocessing import StandardScaler
import seaborn as sns
import numpy as np
from tensorflow.keras import models, layers, regularizers
df = pd.read_csv("/content/sample_data/diamonds.csv")
df
df = pd.get_dummies(df, columns=["cut", "clarity", "color"])
X = df.columns.drop(["Unnamed: 0", "carat"])
#X = ["depth", "table", "price", "x", "y", "z"]
y = "carat"
scaler = StandardScaler()
scaler = scaler.fit(df[X])
df[X] = scaler.transform(df[X])
sns.set(rc={"figure.figsize": (15,9)})
sns.distplot(df["carat"])
/usr/local/lib/python3.7/dist-packages/seaborn/distributions.py:2619: FutureWarning: `distplot` is a deprecated function and will be removed in a future version. Please adapt your code to use either `displot` (a figure-level function with similar flexibility) or `histplot` (an axes-level function for histograms).
warnings.warn(msg, FutureWarning)
df = df[df[y] < np.mean(df[y]) + np.std(df[y]) * 3]
sns.distplot(df["carat"])
/usr/local/lib/python3.7/dist-packages/seaborn/distributions.py:2619: FutureWarning: `distplot` is a deprecated function and will be removed in a future version. Please adapt your code to use either `displot` (a figure-level function with similar flexibility) or `histplot` (an axes-level function for histograms).
warnings.warn(msg, FutureWarning)
df_train = df[:45000]
df_test = df[45000:]
model = models.Sequential()
model.add(layers.Dense(32, activation="relu", input_shape=(26,), kernel_regularizer=regularizers.l2(0.001)))
#model.add(layers.Dropout(0.5))
model.add(layers.Dense(32, activation="relu", kernel_regularizer=regularizers.l2(0.001)))
#model.add(layers.Dropout(0.5))
model.add(layers.Dense(1))
model.compile(optimizer="rmsprop", loss="mse", metrics=["mae"])
history = model.fit(df_train[X], df_train[y], batch_size=512, epochs=50, validation_split=0.3)
Epoch 1/50
69/69 [==============================] - 1s 8ms/step - loss: 0.3056 - mae: 0.3256 - val_loss: 0.0740 - val_mae: 0.0919
Epoch 2/50
69/69 [==============================] - 0s 7ms/step - loss: 0.0593 - mae: 0.0667 - val_loss: 0.0495 - val_mae: 0.0540
Epoch 3/50
69/69 [==============================] - 0s 6ms/step - loss: 0.0407 - mae: 0.0417 - val_loss: 0.0363 - val_mae: 0.0402
Epoch 4/50
69/69 [==============================] - 0s 5ms/step - loss: 0.0300 - mae: 0.0344 - val_loss: 0.0282 - val_mae: 0.0315
Epoch 5/50
69/69 [==============================] - 0s 6ms/step - loss: 0.0231 - mae: 0.0298 - val_loss: 0.0232 - val_mae: 0.0305
Epoch 6/50
69/69 [==============================] - 0s 6ms/step - loss: 0.0186 - mae: 0.0282 - val_loss: 0.0206 - val_mae: 0.0266
Epoch 7/50
69/69 [==============================] - 0s 5ms/step - loss: 0.0153 - mae: 0.0258 - val_loss: 0.0176 - val_mae: 0.0233
Epoch 8/50
69/69 [==============================] - 0s 6ms/step - loss: 0.0128 - mae: 0.0252 - val_loss: 0.0159 - val_mae: 0.0252
Epoch 9/50
69/69 [==============================] - 0s 6ms/step - loss: 0.0107 - mae: 0.0235 - val_loss: 0.0144 - val_mae: 0.0259
Epoch 10/50
69/69 [==============================] - 0s 5ms/step - loss: 0.0092 - mae: 0.0234 - val_loss: 0.0133 - val_mae: 0.0262
Epoch 11/50
69/69 [==============================] - 0s 7ms/step - loss: 0.0082 - mae: 0.0227 - val_loss: 0.0123 - val_mae: 0.0188
Epoch 12/50
69/69 [==============================] - 0s 5ms/step - loss: 0.0074 - mae: 0.0228 - val_loss: 0.0115 - val_mae: 0.0218
Epoch 13/50
69/69 [==============================] - 0s 6ms/step - loss: 0.0067 - mae: 0.0229 - val_loss: 0.0109 - val_mae: 0.0248
Epoch 14/50
69/69 [==============================] - 0s 5ms/step - loss: 0.0062 - mae: 0.0222 - val_loss: 0.0105 - val_mae: 0.0266
Epoch 15/50
69/69 [==============================] - 0s 6ms/step - loss: 0.0057 - mae: 0.0222 - val_loss: 0.0100 - val_mae: 0.0212
Epoch 16/50
69/69 [==============================] - 0s 5ms/step - loss: 0.0053 - mae: 0.0215 - val_loss: 0.0096 - val_mae: 0.0160
Epoch 17/50
69/69 [==============================] - 0s 5ms/step - loss: 0.0051 - mae: 0.0218 - val_loss: 0.0092 - val_mae: 0.0169
Epoch 18/50
69/69 [==============================] - 0s 6ms/step - loss: 0.0048 - mae: 0.0217 - val_loss: 0.0090 - val_mae: 0.0210
Epoch 19/50
69/69 [==============================] - 0s 5ms/step - loss: 0.0045 - mae: 0.0217 - val_loss: 0.0088 - val_mae: 0.0188
Epoch 20/50
69/69 [==============================] - 0s 6ms/step - loss: 0.0043 - mae: 0.0211 - val_loss: 0.0086 - val_mae: 0.0144
Epoch 21/50
69/69 [==============================] - 0s 6ms/step - loss: 0.0041 - mae: 0.0216 - val_loss: 0.0084 - val_mae: 0.0188
Epoch 22/50
69/69 [==============================] - 0s 6ms/step - loss: 0.0039 - mae: 0.0210 - val_loss: 0.0085 - val_mae: 0.0142
Epoch 23/50
69/69 [==============================] - 0s 5ms/step - loss: 0.0038 - mae: 0.0212 - val_loss: 0.0084 - val_mae: 0.0181
Epoch 24/50
69/69 [==============================] - 0s 6ms/step - loss: 0.0037 - mae: 0.0212 - val_loss: 0.0083 - val_mae: 0.0143
Epoch 25/50
69/69 [==============================] - 0s 7ms/step - loss: 0.0035 - mae: 0.0212 - val_loss: 0.0081 - val_mae: 0.0217
Epoch 26/50
69/69 [==============================] - 0s 6ms/step - loss: 0.0034 - mae: 0.0206 - val_loss: 0.0083 - val_mae: 0.0279
Epoch 27/50
69/69 [==============================] - 0s 7ms/step - loss: 0.0033 - mae: 0.0201 - val_loss: 0.0081 - val_mae: 0.0144
Epoch 28/50
69/69 [==============================] - 0s 7ms/step - loss: 0.0032 - mae: 0.0202 - val_loss: 0.0079 - val_mae: 0.0151
Epoch 29/50
69/69 [==============================] - 0s 5ms/step - loss: 0.0031 - mae: 0.0206 - val_loss: 0.0078 - val_mae: 0.0130
Epoch 30/50
69/69 [==============================] - 0s 5ms/step - loss: 0.0030 - mae: 0.0201 - val_loss: 0.0077 - val_mae: 0.0215
Epoch 31/50
69/69 [==============================] - 0s 6ms/step - loss: 0.0029 - mae: 0.0197 - val_loss: 0.0077 - val_mae: 0.0130
Epoch 32/50
69/69 [==============================] - 0s 7ms/step - loss: 0.0029 - mae: 0.0207 - val_loss: 0.0076 - val_mae: 0.0180
Epoch 33/50
69/69 [==============================] - 0s 7ms/step - loss: 0.0029 - mae: 0.0203 - val_loss: 0.0074 - val_mae: 0.0182
Epoch 34/50
69/69 [==============================] - 0s 7ms/step - loss: 0.0028 - mae: 0.0201 - val_loss: 0.0074 - val_mae: 0.0128
Epoch 35/50
69/69 [==============================] - 0s 6ms/step - loss: 0.0028 - mae: 0.0202 - val_loss: 0.0074 - val_mae: 0.0211
Epoch 36/50
69/69 [==============================] - 0s 5ms/step - loss: 0.0027 - mae: 0.0199 - val_loss: 0.0074 - val_mae: 0.0226
Epoch 37/50
69/69 [==============================] - 0s 7ms/step - loss: 0.0027 - mae: 0.0198 - val_loss: 0.0073 - val_mae: 0.0232
Epoch 38/50
69/69 [==============================] - 0s 6ms/step - loss: 0.0026 - mae: 0.0193 - val_loss: 0.0072 - val_mae: 0.0144
Epoch 39/50
69/69 [==============================] - 0s 5ms/step - loss: 0.0026 - mae: 0.0199 - val_loss: 0.0072 - val_mae: 0.0135
Epoch 40/50
69/69 [==============================] - 0s 5ms/step - loss: 0.0025 - mae: 0.0195 - val_loss: 0.0071 - val_mae: 0.0152
Epoch 41/50
69/69 [==============================] - 0s 6ms/step - loss: 0.0025 - mae: 0.0196 - val_loss: 0.0072 - val_mae: 0.0221
Epoch 42/50
69/69 [==============================] - 0s 5ms/step - loss: 0.0025 - mae: 0.0194 - val_loss: 0.0071 - val_mae: 0.0133
Epoch 43/50
69/69 [==============================] - 0s 6ms/step - loss: 0.0025 - mae: 0.0197 - val_loss: 0.0071 - val_mae: 0.0220
Epoch 44/50
69/69 [==============================] - 0s 7ms/step - loss: 0.0024 - mae: 0.0191 - val_loss: 0.0072 - val_mae: 0.0251
Epoch 45/50
69/69 [==============================] - 0s 5ms/step - loss: 0.0024 - mae: 0.0189 - val_loss: 0.0070 - val_mae: 0.0176
Epoch 46/50
69/69 [==============================] - 0s 6ms/step - loss: 0.0024 - mae: 0.0193 - val_loss: 0.0069 - val_mae: 0.0211
Epoch 47/50
69/69 [==============================] - 0s 7ms/step - loss: 0.0023 - mae: 0.0180 - val_loss: 0.0071 - val_mae: 0.0265
Epoch 48/50
69/69 [==============================] - 0s 5ms/step - loss: 0.0023 - mae: 0.0191 - val_loss: 0.0068 - val_mae: 0.0122
Epoch 49/50
69/69 [==============================] - 0s 7ms/step - loss: 0.0023 - mae: 0.0189 - val_loss: 0.0069 - val_mae: 0.0244
Epoch 50/50
69/69 [==============================] - 0s 5ms/step - loss: 0.0023 - mae: 0.0191 - val_loss: 0.0067 - val_mae: 0.0130
sns.lineplot(x=range(0,50), y=history.history["val_loss"])
sns.lineplot(x=range(0,50), y=history.history["val_mae"])
model.evaluate(df_test[X], df_test[y])
110/110 [==============================] - 0s 3ms/step - loss: 0.0017 - mae: 0.0145