Spaces:
Runtime error
Runtime error
| import pandas as pd | |
| from sklearn.preprocessing import StandardScaler, OneHotEncoder | |
| from sklearn.compose import make_column_transformer | |
| from sklearn.model_selection import GroupShuffleSplit | |
| from tensorflow import keras | |
| from tensorflow.keras import layers | |
| from tensorflow.keras import callbacks | |
| spotify = pd.read_csv('../input/dl-course-data/spotify.csv') | |
| X = spotify.copy().dropna() | |
| y = X.pop('track_popularity') | |
| artists = X['track_artist'] | |
| features_num = ['danceability', 'energy', 'key', 'loudness', 'mode', | |
| 'speechiness', 'acousticness', 'instrumentalness', | |
| 'liveness', 'valence', 'tempo', 'duration_ms'] | |
| features_cat = ['playlist_genre'] | |
| preprocessor = make_column_transformer( | |
| (StandardScaler(), features_num), | |
| (OneHotEncoder(), features_cat), | |
| ) | |
| def group_split(X, y, group, train_size=0.75): | |
| splitter = GroupShuffleSplit(train_size=train_size) | |
| train, test = next(splitter.split(X, y, groups=group)) | |
| return (X.iloc[train], X.iloc[test], y.iloc[train], y.iloc[test]) | |
| X_train, X_valid, y_train, y_valid = group_split(X, y, artists) | |
| X_train = preprocessor.fit_transform(X_train) | |
| X_valid = preprocessor.transform(X_valid) | |
| y_train = y_train / 100 | |
| y_valid = y_valid / 100 | |
| input_shape = [X_train.shape[1]] | |
| print("Input shape: {}".format(input_shape)) | |
| model = keras.Sequential([ | |
| layers.Dense(128, activation='relu', input_shape=input_shape), | |
| layers.Dropout(0.3), | |
| layers.Dense(64, activation='relu'), | |
| layers.Dropout(0.3), | |
| layers.Dense(1) | |
| ]) | |
| model.compile( | |
| optimizer='adam', | |
| loss='mae', | |
| ) | |
| history = model.fit( | |
| X_train, y_train, | |
| validation_data=(X_valid, y_valid), | |
| batch_size=512, | |
| epochs=50, | |
| verbose=0, | |
| ) | |
| history_df = pd.DataFrame(history.history) | |
| history_df.loc[:, ['loss', 'val_loss']].plot() | |
| print("Minimum Validation Loss: {:0.4f}".format(history_df['val_loss'].min())) | |
| import pandas as pd | |
| concrete = pd.read_csv('../input/dl-course-data/concrete.csv') | |
| df = concrete.copy() | |
| df_train = df.sample(frac=0.7, random_state=0) | |
| df_valid = df.drop(df_train.index) | |
| X_train = df_train.drop('CompressiveStrength', axis=1) | |
| X_valid = df_valid.drop('CompressiveStrength', axis=1) | |
| y_train = df_train['CompressiveStrength'] | |
| y_valid = df_valid['CompressiveStrength'] | |
| input_shape = [X_train.shape[1]] | |
| model = keras.Sequential([ | |
| layers.Dense(512, activation='relu', input_shape=input_shape), | |
| layers.Dense(512, activation='relu'), | |
| layers.Dense(512, activation='relu'), | |
| layers.Dense(1), | |
| ]) | |
| model.compile( | |
| optimizer='sgd', # SGD is more sensitive to differences of scale | |
| loss='mae', | |
| metrics=['mae'], | |
| ) | |
| history = model.fit( | |
| X_train, y_train, | |
| validation_data=(X_valid, y_valid), | |
| batch_size=64, | |
| epochs=100, | |
| verbose=0, | |
| ) | |
| history_df = pd.DataFrame(history.history) | |
| history_df.loc[0:, ['loss', 'val_loss']].plot() | |
| print(("Minimum Validation Loss: {:0.4f}").format(history_df['val_loss'].min())) | |
| model = keras.Sequential([ | |
| layers.BatchNormalization(input_shape=input_shape), | |
| layers.Dense(512, activation='relu'), | |
| layers.BatchNormalization(), | |
| layers.Dense(512, activation='relu'), | |
| layers.BatchNormalization(), | |
| layers.Dense(512, activation='relu'), | |
| layers.BatchNormalization(), | |
| layers.Dense(1), | |
| ]) | |
| model.compile( | |
| optimizer='sgd', | |
| loss='mae', | |
| metrics=['mae'], | |
| ) | |
| EPOCHS = 100 | |
| history = model.fit( | |
| X_train, y_train, | |
| validation_data=(X_valid, y_valid), | |
| batch_size=64, | |
| epochs=EPOCHS, | |
| verbose=0, | |
| ) | |
| history_df = pd.DataFrame(history.history) | |
| history_df.loc[0:, ['loss', 'val_loss']].plot() | |
| print(("Minimum Validation Loss: {:0.4f}").format(history_df['val_loss'].min())) | |