ium_s437622/zad7-sacred-mongo.py

76 lines
2.1 KiB
Python
Raw Permalink Normal View History

2021-05-16 23:02:13 +02:00
from sacred import Experiment
from sacred.observers import MongoObserver
import pandas as pd
import numpy as np
from tensorflow import keras
from sklearn.metrics import accuracy_score
from tensorflow.keras import layers
ex = Experiment("437622-mongo", interactive=False, save_git_info=False)
#ex.observers.append(MongoObserver(url='mongodb://mongo_user:mongo_password_IUM_2021@172.17.0.1:27017', db_name='sacred'))
@ex.config
def my_config():
epochs = 15
batch_size = 16
@ex.capture
def prepare_model(epochs, batch_size, _run):
model_name = "model"
train = pd.read_csv('train.csv', header=None, skiprows=1)
indexNames = train[train[1] == 2].index
train.drop(indexNames, inplace=True)
cols = [0, 2, 3]
X = train[cols].to_numpy()
y = train[1].to_numpy()
X = np.asarray(X).astype('float32')
model = keras.Sequential(name="winner")
model.add(keras.Input(shape=(3), name="game_info"))
model.add(layers.Dense(4, activation="relu", name="layer1"))
model.add(layers.Dense(8, activation="relu", name="layer2"))
model.add(layers.Dense(8, activation="relu", name="layer3"))
model.add(layers.Dense(5, activation="relu", name="layer4"))
model.add(layers.Dense(1, activation="relu", name="output"))
model.compile(
optimizer=keras.optimizers.RMSprop(),
loss=keras.losses.MeanSquaredError(),
)
history = model.fit(
X,
y,
batch_size=batch_size,
epochs=epochs, )
model.save(model_name)
test = pd.read_csv('test.csv', header=None, skiprows=1)
cols = [0, 2, 3]
indexNames = test[test[1] == 2].index
test.drop(indexNames, inplace=True)
X_test = test[cols].to_numpy()
y_test = test[1].to_numpy()
X_test = np.asarray(X_test).astype('float32')
predictions = model.predict(X_test)
pd.DataFrame(predictions).to_csv('results.csv', sep='\t', index=False, header=False)
acc = accuracy_score(y_test, predictions)
print('Accuracy: ', acc)
return acc
@ex.automain
def my_main(epochs, batch_size):
print(prepare_model())
ex.run()
ex.add_artifact('model')